Buzzby Berkeley Robot Hokey Pokey
Bài tập
Viết chương trình hoặc chức năng để tạo ra một hoạt hình nghệ thuật ASCII mô tả một dòng robot nhảy theo lời bài hát của Hokey Pokey (hoặc Cokey, nếu bạn thích) theo kiểu số Busby Berkeley!
Ví dụ đầu ra
Đầu vào
Chấp nhận ba đối số (được coi là hợp lệ):
N = số lượng robot trong dòng (Min = 6)
B = thời lượng của một "nhịp" tính bằng mili giây (Tối thiểu = 10)
D = độ trễ tính bằng ms giữa các robot liên tiếp (Min = 0)
(Trong ví dụ đầu ra ở trên: N = 8, B = 380, C = 75)
Thông số kỹ thuật
N robot được hiển thị liên tiếp trên một sân khấu.
Một dòng văn bản từ "câu thơ" được hiển thị tại một thời điểm bên dưới sân khấu (tập trung vào trong vòng 1 ký tự và được đặt trong dấu ngoặc kép.)
Các robot thực hiện các hành động cho mỗi dòng khi nó được hiển thị cho đến khi câu hát được lặp lại 5 lần.
Một hành động được thực hiện bằng cách mô tả robot sử dụng một bộ ký tự ASCII và đợi một khoảng thời gian xác định trước khi thực hiện hành động tiếp theo. Thời lượng của một hành động được đo bằng "nhịp đập". Thời hạn 1 nhịp là một số mili giây, B .
Robot đầu tiên bắt đầu thực hiện các hành động cho từng dòng thơ ngay lập tức khi văn bản của dòng được hiển thị.
Mỗi robot tiếp theo sẽ trì hoãn bắt đầu hành động của mình cho đến một thời điểm cụ thể ( D ) sau khi robot ở bên phải (bên trái của bạn!) Bắt đầu hành động.
Các mô tả của robot thay đổi theo các ký tự ASCII đại diện cho "ăng-ten" của robot, trong đó có 5 loại có thể, được phân phối ngẫu nhiên mỗi khi chương trình được chạy.
Mỗi loại ăng-ten phải được sử dụng bởi ít nhất một robot, nhưng cùng loại không được xuất hiện trên bất kỳ robot nào cách nhau ít hơn 3 robot khác. Số lượng của hai loại ăng ten bất kỳ có thể khác nhau không quá 1 (ví dụ: 1xType_4 và 3xType_5 là bất hợp pháp kể từ 3-1> 1)
Câu thơ và hành động
Toàn bộ câu thơ được lặp lại 5 lần, mỗi dòng 1 lần ...
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
Đối với mỗi lần lặp lại (R) của câu thơ, thay thế? và ?? ...
R ?= ??=
-- ----------- ---
1. right foot RF
2. left foot LF
3. right hand RH
4. left hand LH
5. whole self WS
Các hành động và mẫu ASCII
Mỗi hành động được dán nhãn được thể hiện bằng 5 dòng 8 ký hiệu ASCII.
Đại diện của mỗi hành động như sau ...
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__/
Trong hàng 1, thay thế "1-4" bằng ký hiệu tương ứng cho từng loại ăng ten ...
1 | 1234 1234 1234 1234 1234
| \/\/ |┌┐| )||( |||| ┐/\┌ <-- Symbols 1-4 for...
| 1 2 3 4 5 <-- ...antenna types 1-5
Đầu ra
Toàn bộ cảnh phải được hiển thị ít nhất một lần ngay lập tức bất cứ khi nào nội dung của cảnh thay đổi theo bất kỳ cách nào. (Tức là giả sử độ trễ giữa các hành động của robot là> 0, đầu ra có thể được hiển thị không dưới N lần cho mỗi hành động.)
Lý tưởng nhất, đối với một hình ảnh động, bàn điều khiển hoặc khu vực đầu ra tương đương sẽ bị xóa trước khi mỗi bản cập nhật được hiển thị. Để cung cấp cho các ngôn ngữ không thể xóa bảng điều khiển, đầu ra cũng có thể được hiển thị trong một luồng liên tục, theo cùng một yêu cầu được mô tả ở trên.
Chấm điểm
Người chiến thắng là chương trình ngắn nhất trong mỗi ngôn ngữ, cũng như tổng thể ngắn nhất.
Ngoại lệ 1 Vì việc xóa bàn điều khiển, mỗi kết xuất sẽ tốt hơn mặc dù không bắt buộc, các byte được sử dụng riêng cho mục đích xa xỉ này không được tính vào tổng số byte. Điều này bao gồm các lệnh để xóa bàn điều khiển và đầu ra đệm với các dòng trống để cuộn nội dung của bàn điều khiển ra khỏi tầm nhìn.
Ngoại lệ 2 CSS hoặc các phương tiện tương tự có hiệu quả được sử dụng riêng cho mục đích tạo kiểu đầu ra ngoài các yêu cầu tối thiểu không được tính vào tổng số byte. Ví dụ, *{color:blue;text-align:center;}
chỉ tính 32-10 = 22 byte vì color:blue;
không phục vụ bất kỳ đặc điểm kỹ thuật nào, trong khi văn bản trung tâm được chỉ định.
Meta
Lấy cảm hứng từ (hiển thị bằng tuổi tôi) các TRS-80 Dancing Demon , Android Nim , và tất nhiên Busby Berkeley (và không có, tôi không mà cũ).