หุ่นยนต์ของ Buzzby Berkeley Hokey Pokey
งาน
เขียนโปรแกรมหรือฟังก์ชั่นเพื่อสร้างแอนิเมชั่นศิลปะ ASCII ที่แสดงหุ่นยนต์เต้นรำไปตามเนื้อเพลงของ Hokey Pokey (หรือ Cokey หากคุณต้องการ) ในรูปแบบของหมายเลข Busby Berkeley!
ตัวอย่างผลลัพธ์
อินพุต
ยอมรับสามข้อโต้แย้ง (สันนิษฐานว่าถูกต้อง):
N = จำนวนหุ่นยนต์ในบรรทัด (ต่ำสุด = 6)
B = ระยะเวลาหนึ่ง "จังหวะ" เป็นมิลลิวินาที (ขั้นต่ำ = 10)
D = หน่วงเวลาเป็น ms ระหว่างโรบอตต่อเนื่อง (Min = 0)
(ในตัวอย่างผลลัพธ์ด้านบน: N = 8, B = 380, C = 75)
ข้อมูลจำเพาะ
หุ่นยนต์Nตัวแสดงขึ้นเป็นแถวบนเวที
ข้อความหนึ่งบรรทัดจาก "บทกวี" ปรากฏขึ้นในแต่ละครั้งภายใต้สเตจ (กึ่งกลางจนถึงภายใน 1 ตัวอักษรและอยู่ในเครื่องหมายคำพูด)
หุ่นยนต์ทำการกระทำสำหรับแต่ละบรรทัดตามที่ปรากฏจนกระทั่งข้อซ้ำ 5 ครั้ง
การดำเนินการจะดำเนินการโดยแสดงหุ่นยนต์โดยใช้ชุดอักขระ ASCII และรอช่วงเวลาที่ระบุก่อนดำเนินการกระทำต่อไป ระยะเวลาของการดำเนินการวัดเป็น "จังหวะ" ระยะเวลาของการตี 1 เป็นจำนวนมิลลิวินาที, B
หุ่นยนต์ตัวแรกจะเริ่มดำเนินการกับแต่ละบทร้อยกรองทันทีเมื่อข้อความของบรรทัดปรากฏขึ้น
หุ่นยนต์ที่ตามมาแต่ละตัวจะเริ่มการกระทำล่าช้าจนกว่าจะถึงเวลาที่กำหนด ( D ) หลังจากหุ่นยนต์ไปทางขวา (ซ้ายของคุณ!) เริ่มการกระทำ
การแสดงของหุ่นยนต์แตกต่างกันไปตามตัวอักษร ASCII ซึ่งเป็นตัวแทนของ "เสาอากาศ" ของหุ่นยนต์ซึ่งมี 5 ประเภทที่เป็นไปได้กระจายแบบสุ่มทุกครั้งที่มีการเรียกใช้โปรแกรม
ต้องใช้เสาอากาศแต่ละประเภทโดยหุ่นยนต์อย่างน้อยหนึ่งตัว แต่ประเภทเดียวกันจะต้องไม่ปรากฏในหุ่นยนต์ที่คั่นด้วยหุ่นยนต์อื่นน้อยกว่า 3 ตัว จำนวนเสาอากาศทั้งสองประเภทอาจแตกต่างกันไม่เกิน 1 (เช่น 1xType_4 และ 3xType_5 นั้นผิดกฎหมายตั้งแต่ 3-1> 1)
บทกวีและการกระทำ
ข้อซ้ำทั้งหมด 5 ครั้งครั้งละ 1 บรรทัด ...
Line Text Action/Beats,
---- ----------------------------- ------------------------------------
1 You put your ? in ??/4
2 You take your ? out AA/4
3 You put your ? in ??/4
4 And you shake it all about AA/1, ??/1, AA/1, ??/1
5 You do the Hokey Pokey and...
...you turn yourself around AA/1, H[1-7]/1
6 That's what it's all about! AA/4, ZZ/4
สำหรับการทำซ้ำแต่ละครั้ง (R) ของข้อแทน? และ ?? ...
R ?= ??=
-- ----------- ---
1. right foot RF
2. left foot LF
3. right hand RH
4. left hand LH
5. whole self WS
การกระทำและรูปแบบ ASCII
การดำเนินการที่มีป้ายกำกับแต่ละรายการจะมีสัญลักษณ์ 8 ASCII 5 บรรทัด
การเป็นตัวแทนของแต่ละการกระทำมีดังนี้ ...
1 | 12 12 12 12 12 12 12
2 | [''] [''] [''] [''] [''] [''] \[*-]
3 | └[__]┘ └[__]┘ └[__]┘┌[__]┘ └[__]┐ ┌[__]┐ [__]\
4 | || /< >\ <\ /> / \ /|
5 |--------------------------------------------------------
|\__AA__/\__RF__/\__LF__/\__RH__/\__LH__/\__WS__/\__ZZ__/
1 | 12 12_ 34_ 34 _34 _12 12
2 | [''] [" ] [ _] [__] [_ ] [ "] ['']
3 | >[__]< [_<] [<.] <[..]> [.>] [>_] <[__]>
4 | || |\ || /| || |\ ||
5 |--------------------------------------------------------
|\__H1__/\__H2__/\__H3__/\__H4__/\__H5__/\__H6__/\__H7__/
ในแถวที่ 1 แทนที่ "1-4" ด้วยสัญลักษณ์ที่สอดคล้องกันสำหรับเสาอากาศแต่ละประเภท ...
1 | 1234 1234 1234 1234 1234
| \/\/ |┌┐| )||( |||| ┐/\┌ <-- Symbols 1-4 for...
| 1 2 3 4 5 <-- ...antenna types 1-5
เอาท์พุต
ฉากทั้งหมดจะต้องแสดงผลอย่างน้อยหนึ่งครั้งทันทีเมื่อใดก็ตามที่เนื้อหาของฉากเปลี่ยนไปในทางใดทางหนึ่ง (เช่นสมมติว่าการหน่วงเวลาระหว่างการกระทำของหุ่นยนต์คือ> 0 ผลลัพธ์อาจถูกแสดงผลไม่น้อยกว่าNครั้งต่อการกระทำ)
โดยอุดมคติแล้วสำหรับภาพเคลื่อนไหวคอนโซลหรือพื้นที่เอาท์พุทที่เทียบเท่าจะถูกล้างออกก่อนที่จะแสดงผลการอัปเดตแต่ละครั้ง เพื่อให้ภาษาไม่สามารถล้างคอนโซลได้เอาต์พุตอาจถูกแสดงในสตรีมแบบต่อเนื่องโดยขึ้นอยู่กับข้อกำหนดเดียวกันกับที่อธิบายไว้ข้างต้น
เกณฑ์การให้คะแนน
ผู้ชนะคือโปรแกรมที่สั้นที่สุดในแต่ละภาษารวมถึงสั้นที่สุดโดยรวม
ข้อยกเว้น 1เนื่องจากการล้างคอนโซลแต่ละการสร้างการแสดงผลเป็นสิ่งที่ดีกว่า แต่ไม่จำเป็นไบต์ที่ใช้เพื่อวัตถุประสงค์ที่หรูหรานี้จะไม่นับรวมกับจำนวนไบต์ทั้งหมด ซึ่งรวมถึงคำสั่งเพื่อล้างคอนโซลและเอาต์พุตการเติมด้วยบรรทัดว่างเพื่อเลื่อนเนื้อหาคอนโซลออกจากมุมมอง
ข้อยกเว้น 2 CSS หรือวิธีที่คล้ายกันอย่างมีประสิทธิภาพซึ่งใช้เฉพาะเพื่อวัตถุประสงค์ในการออกแบบเอาต์พุตที่เกินความต้องการขั้นต่ำจะไม่นับรวมเป็นไบต์ทั้งหมด เช่น*{color:blue;text-align:center;}
นับเป็น 32-10 = 22 ไบต์เท่านั้นเนื่องจากcolor:blue;
ไม่รองรับข้อกำหนดใด ๆ ในขณะที่มีการระบุข้อความกึ่งกลาง
Meta
แรงบันดาลใจจาก (แสดงอายุของฉัน) TRS-80 เต้นรำปีศาจ , Android นิ่มและแน่นอนเหมาะเบิร์กลีย์ (และไม่ฉันไม่ว่าเก่า)