บทนำ
เรา - โดยเฉพาะในหมู่พวกเราที่มีแนวโน้มที่จะเป็นแฟน - ทุกคนจำการ์ตูนเก่าแก่ของFar Side :
เห็นได้ชัดว่าศาสตราจารย์ชวาร์ตซ์แมนสามารถแปรงทักษะการเขียนโปรแกรมของเขาได้อีกเล็กน้อยก่อนที่เขาจะใช้สิ่งประดิษฐ์ของเขา แต่คุณสามารถทำซ้ำด้วยตัวคุณเอง ... ใช้น้อยที่สุดเท่าที่เป็นไปได้?
ข้อมูลจำเพาะอินพุต
คุณต้องสร้างสคริปต์ที่แปลเสียงสุนัขให้เป็นเสียง "ไฮ" อย่างเหมาะสม นี่คือรหัสกอล์ฟบริสุทธิ์ จำนวนไบต์ต่ำสุดชนะ
ข้อมูลที่คุณป้อนจะประกอบด้วยโทเค็นต่อไปนี้รวมกัน:
Bark
,Baark
,Baaark
,Baaaark
... (นั่นคือB*rk
มีอย่างน้อย 1a
แทนที่เครื่องหมายดอกจัน)Woof
,Wooof
,Woooof
... (W*f
อย่างน้อย2o
s เปลี่ยนเครื่องหมายดอกจัน)Grr
,Grrr
,Grrrr
, ... , (G
ตามมาด้วยอย่างน้อย2r
s)- จำนวนอักขระ
.
(จุด),!
(เครื่องหมายอัศเจรีย์) และ / หรือ?
(เครื่องหมายคำถาม) ซึ่งอาจเกิดขึ้นที่ใดก็ได้ในอินพุต
โปรดทราบอีกครั้งว่าโทเค็นพื้นฐานWoof
และGrr
เบสต้องการอีก อย่างน้อยสองo
s และr
s ตามลำดับ; Wof
และGr
มีไม่ราชสกุลที่ถูกต้อง
ไม่มีการ จำกัด ระยะเวลาที่โทเค็นสามารถใช้ได้ (เช่นจำนวนของการทำซ้ำa
ที่สามารถมีได้ในBark
โทเค็น) อย่างไรก็ตามตัวถอดรหัสของคุณจะต้องทำงานอย่างถูกต้องสำหรับโทเค็นอินพุตที่มีจำนวนs, s หรือs ทั้งหมด10 รายการเพื่อให้ผ่านการท้าทายนี้a
o
r
รายละเอียดผลผลิต
ด้วยความซื่อสัตย์ต่อการออกแบบของ Schwartzman โปรแกรมถอดรหัสสุนัขของคุณจะต้องประมวลผลเป็นข้อความเอาต์พุตดังนี้:
Bark
,Woof
และGrr
กลายเป็นHey
;Baark
,Wooof
และGrrr
กลายเป็นHeyy
;Baaark
,Woooof
และGrrrr
กลายเป็นHeyyy
; เป็นต้น- สำหรับ
Bark
โทเค็นที่ใช้ทั้งหมดจำนวนของy
s ในHey
โทเค็นเอาต์พุตที่ใช้จะต้องเท่ากับจำนวนของa
s - สำหรับทุก
Woof
ราชสกุลชั่นจำนวนของy
s ในการส่งออกHey
เบสโทเค็นจะต้องเป็นหนึ่งในน้อยกว่าจำนวนของo
s; - สำหรับทุก
Grr
ราชสกุลชั่นจำนวนของy
s ในการส่งออกHey
เบสโทเค็นจะต้องเป็นหนึ่งในน้อยกว่าจำนวนของr
s; - เครื่องหมายวรรคตอนทั้งหมด (
.
,!
และ?
) ไม่มีการเปลี่ยนแปลง
อย่าลืมดรอปหนึ่งอันy
จากเอาต์พุตสำหรับWoof
s และGrr
s เท่านั้น! การป้อนข้อมูลBaaaaaaaark?
ด้วย 8 a
วินาทีจะกลายเป็นHeyyyyyyyy?
กับชุดการจับคู่ของ 8 y
วินาที อย่างไรก็ตามWoooooooof?
จะกลายเป็นเพียงHeyyyyyyy?
กับ 7 y
วินาที
ถ้าคุณสามารถทำให้โปรแกรมของคุณทำงานได้กับโทเค็นอินพุตที่ไม่ จำกัด ขนาดนั้นยอดเยี่ยม แต่สำหรับวัตถุประสงค์ของการท้าทายนี้โปรแกรมของคุณจะถูกตรวจสอบเพื่อให้แน่ใจว่ามันทำงานอย่างถูกต้องสำหรับโทเค็นอินพุตที่มีตัวอักษรซ้ำไม่เกิน 10 ตัว .
โทเค็นทั้งหมดBark
-, Woof
-, และGrr
-based ในข้อมูลของคุณจะถือว่าเริ่มต้นด้วยตัวพิมพ์ใหญ่ ดังนั้นจึงไม่จำเป็นต้องจัดการกับการเปลี่ยนBark grrr
เป็นHey heyy
หรืออะไรที่คล้ายกัน
ตัวอย่างอินพุตและเอาต์พุต
- การป้อนข้อมูล:
Bark. Bark! Bark!!
- เอาท์พุท:
Hey. Hey! Hey!!
- การป้อนข้อมูล:
- อินพุต:
Baaaaaark?
(หกวิa
) - เอาท์พุท:
Heyyyyyy?
(หกy
s)
- อินพุต:
- อินพุต:
Grrrrrrrr...
(แปดวิr
) - เอาท์พุท:
Heyyyyyyy...
( เจ็ดy
s)
- อินพุต:
- การป้อนข้อมูล:
?...!
- เอาท์พุท:
?...!
- การป้อนข้อมูล:
- การป้อนข้อมูล:
Wooof Woof? Grrrr. Baaaark Grr!
- เอาท์พุท:
Heyy Hey? Heyyy. Heyyyy Hey!
- การป้อนข้อมูล: