คนส่วนใหญ่มีความคุ้นเคยกับเรื่องเกี่ยวกับการนับแกะเพื่อหลับ มีฝูงแกะบางตัวกระโดดข้ามรั้วและคุณนับจำนวนแกะเมื่อกระโดด คาดคะเนสิ่งนี้จะช่วยให้จิตใจของคุณสงบลงและทำให้คุณเข้าสู่สภาวะการนอนหลับเพื่อที่คุณจะหลับไป
นี่คือแกะ ASCII ที่หันไปทางขวากำลังรอการนับ:
'00^>
||
นี่คือแกะ ASCII ที่กระโดดข้ามรั้ว:
'00^>
/\
++
นี่คือสิ่งที่หันไปทางซ้ายโดยนับมาแล้ว:
<^00'
||
ความท้าทาย
ได้รับการป้อนข้อมูลจำนวนเต็มสองn
และm
มีn > 2
การอธิบายทั้งหมดแกะหลายวิธีและm > 0
บอกวิธีการแกะจำนวนมากได้รับนับแล้วส่งออกเป็นตัวแทนศิลปะ ASCII แกะนับจะผล็อยหลับไป
ตอนนี้สำหรับการบิด:
- เนื่องจากขนาดของปากกาที่แกะอยู่แถวบนสุดสามารถเก็บ
10
แกะได้สูงสุดไม่นับแกะที่กำลังกระโดดซึ่งต้องอยู่ในแถวด้านบนเสมอ - แถวที่ตามมาไม่สามารถมีแกะอยู่ด้านนอกปากกาของพวกเขา (คุณไม่มีแกะทางซ้ายในแถวที่สองมากกว่าที่คุณทำในแถวแรกและเหมือนกันสำหรับด้านขวา)
- หากมี
11
แกะรวมกันหรือมากกว่าแถวบนสุดจะต้องมี10
บวกกับแกะกระโดดในนั้น - ช่องว่างนำหน้า / ต่อท้ายและช่องว่างระหว่างแกะไม่สำคัญตราบใดที่:
- มีอักขระช่องว่างอย่างน้อยหนึ่งตัวระหว่างแกะ
- ตัวละครทั้งหมดเข้าแถวกันอย่างเหมาะสม
ตราบใดที่กฎเหล่านี้บรรลุผลการจัดเตรียมที่แท้จริงของแกะก็ขึ้นอยู่กับการใช้งานของคุณ
ตัวอย่าง
ตัวอย่างเช่นนี่คือn=3
และm=1
กรณีที่ง่ายที่สุด
'00^>
'00^> /\ <^00'
|| ++ ||
นี่คือn=11
และm=6
แกะส่วนใหญ่ที่สามารถพอดีกับเส้นแนวนอนหนึ่งเส้น
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
นี่คือตัวอย่างที่แตกต่างของที่มีn=11
และm=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
ตัวอย่างที่ใหญ่กว่าด้วยn=30
และm=12
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> <^00' <^00'
|| || || || || || || || || ||
'00^> <^00' <^00'
|| || ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
นี่คือตัวอย่างของn=17
และm=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
นี่คือตัวอย่างของn=19
และm=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
โปรดทราบว่าสิ่งเหล่านี้เป็นตัวอย่าง สำหรับสุดท้ายคุณอาจเลิกสร้างแกะแนวตั้งทางด้านขวามือซึ่งจะทำให้ด้านซ้ายมือพอดีกับสองแถวแทน หรืออาจจะเป็นแกะ 2x2 ตารางอยู่ทางด้านขวามือซึ่งก็จะพอดีกับแกะทางซ้ายมือไปยังสองแถว เป็นต้น
I / O และกฎ
- การป้อนข้อมูลสามารถนำมาในรูปแบบที่เหมาะสมใด ๆ และด้วยวิธีการที่สะดวกใด ๆ
- ขึ้นบรรทัดใหม่ / ต่อท้ายหรือช่องว่างอื่น ๆ เป็นตัวเลือกโดยมีเงื่อนไขว่าตัวละครจะเข้าแถวอย่างเหมาะสม
- ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
- เอาต์พุตสามารถไปที่คอนโซลส่งคืนเป็นรายการของสตริงส่งคืนเป็นสตริงเดี่ยว ฯลฯ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการตีกอล์ฟตามปกติและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
n=11
และm=9
n=11
สิ่ง0<m<=10
นั้น นี่เป็นการบังคับให้คุณมีแกะทั้งหมดที่อยู่แถวบนสุดและจำนวนแกะแบบไดนามิกที่ด้านซ้าย ( n-1-m
) และขวา ( m
) ของรั้วและไม่สามารถใช้ขนาดปากกาคงที่ได้