พื้นหลัง
นี่คือความท้าทายที่เกี่ยวข้องกับวันฮาโลวีน
อย่างที่คุณได้เห็นจากการท้าทายครั้งล่าสุดของฉันฉันชอบสิ่งที่ฉันเรียกว่าภาพเคลื่อนไหว ASCII ซึ่งไม่เพียง แต่วาดรูปแบบ แต่วาดรูปแบบที่ก้าวหน้า ความคิดนี้มาถึงฉันหลังจากที่ฉันถูกขอให้สองสามปีที่ผ่านมาทำให้มีชีวิตชีวาการนำเสนอ (ค่อนข้างน่าเบื่อ) โดยการทำให้ค้างคาว ascii สุ่มบินข้ามหน้าจอในวันฮาโลวีน ไม่จำเป็นต้องพูดว่าฉันจำเป็นต้องจ่ายจริง ๆ (ฉันกำลังจ่ายให้มัน) แต่มันทำให้ฉันคิดว่ามีชีวิตมากกว่าค้างคาวสุ่ม ได้รับแรงบันดาลใจจากสิ่งนี้ฉันขอเสนอความท้าทายนี้
ท้าทาย
ทำให้ค้างคาวบินไปรอบ ๆ ดวงจันทร์
นี่คือค้างคาว:
^o^
นี่คือดวงจันทร์:
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
คุณต้องแสดงทุกขั้นตอนของการบินของค้างคาว (ดูผลลัพธ์)
อินพุต
ไม่มี
เอาท์พุต
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
mmm^o^
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
mmm
mmmmmmm^o^
mmmmmmmmm
mmmmmmm
mmm
mmm
mmmmmmm
mmmmmmmmm^o^
mmmmmmm
mmm
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm^o^
mmm
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
^o^mmm
mmm
mmmmmmm
mmmmmmmmm
^o^mmmmmmm
mmm
mmm
mmmmmmm
^o^mmmmmmmmm
mmmmmmm
mmm
mmm
^o^mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
กฎระเบียบ
- ไม่มีการอ่านจากไฟล์หรือเว็บไซต์ภายนอก
- คุณสามารถส่งโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ
- ช่องว่างพิเศษและ / หรือการขึ้นบรรทัดใหม่ของฉัน
- ช่องโหว่มาตรฐานถูกแบนเหมือนปกติ
- ค้างคาวจะต้องย้อนกลับไปที่ด้านบนของดวงจันทร์
- โปรดอย่าลังเลที่จะล้างหน้าจอระหว่างเฟรมหากคุณต้องการ แต่นี่ไม่ใช่ข้อกำหนด เอาท์พุทตามที่แสดงข้างต้นเป็นเรื่องปกติ
- เนื่องจากนี่คือรหัสกอล์ฟผู้ชนะจะได้คำตอบด้วยจำนวนไบต์ต่ำสุดแม้ว่าคำตอบจะยินดี
ตัวอย่าง
การใช้งานอ้างอิงใน Python 2 ที่ไม่ได้รับโทษทั้งหมด (620 ไบต์ แต่เพียงเพื่อพิสูจน์ว่าสามารถทำได้อาจเล่นกอล์ฟในภายหลัง)
b='^o^'
m=[' ',
' mmm ',
' mmmmmmm ',
' mmmmmmmmm ',
' mmmmmmm ',
' mmm ',
' ']
p=[(9,12),(12,15),(14,17),(15,18),(14,17),(12,15),(9,12),(6,9),(4,7),(3,6),(4,7),(6,9),(9,12)]
d=0
for z in range(7):
x=map(str,m[z])
c="".join(x[:p[z][0]]) + b + "".join(x[p[z][1]:])+"\n"
print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])
for z in range(6)[::-1]:
x=map(str,m[z])
c="".join(x[:p[z+6][0]]) + b + "".join(x[p[z+6][1]:])+"\n"
print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])
ผล
แม้ว่า @Jonathan จะชนะด้วยการนับไบต์ด้วย Jelly แต่ฉันจะทำเครื่องหมายคำตอบ Brainfuck จาก @Oyarsa เป็นคำตอบที่ได้รับการยอมรับอย่างหมดจดเพราะฉันคิดว่าทุกคนที่สามารถทำสิ่งนี้ในภาษาที่บ้าจริงควรได้รับตัวแทน +15 ต้องใช้กี่ไบท์ นี่ไม่ใช่เพราะฉันมีปัญหากับภาษากอล์ฟ ดูคำตอบของฉันสำหรับคำถามเกี่ยวกับเรื่องนี้ในเมตาถ้าคุณมีข้อสงสัย ขอบคุณมากและเคารพทุกคนที่มีส่วนร่วมในภาษาใดก็ตาม