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

