Bạn có thể đã nhìn thấy thang của Jacob trong bảo tàng khoa học của trẻ em. Nếu bạn không quen thuộc với những gì họ trông như thế nào, có một số ví dụ hình ảnh và video trên Wikimedia Commons . Thách thức ngày nay là tạo ra một phiên bản ASCII hoạt hình của thiết bị điện. Cuối cùng, nó sẽ trông giống như thế này:
Xây dựng thang
Dưới đây là hình dạng cơ bản của một cái thang có chiều cao ( H ) là 6:
6 \ /
5 \ /
4 \ /
3 \ /
2 \ /
1 \ /
0 ¯¯
Các số ở bên trái chỉ đơn giản chỉ ra số hàng cho ví dụ này và không nên được bao gồm trong đầu ra. Chúng tôi sẽ đề cập đến một hàng nhất định theo số đó ( R ). Hàng 0 là dưới cùng ¯¯
. Mỗi hàng 1 đến H bao gồm bốn phần:
- Một khoảng
trắng (U + 0020) được lặp lại ( H - R ) lần
- Dấu gạch chéo ngược
\
(U + 005C) - Một khoảng
trắng (U + 0020) được lặp lại (2 * R ) lần
- Một dấu gạch chéo về phía trước
/
(U + 002F)
Hàng 0 giống hệt nhau, ngoại trừ cả hai dấu gạch chéo được thay thế bằng macron ¯
(U + 00AF). Trailing khoảng trắng ở cuối mỗi dòng hoặc bên dưới thang là OK. Khoảng trắng hàng đầu là không.
Xây dựng hồ quang
Khi thang được xây dựng, bạn có thể tạo vòng cung giữa bên trái và bên phải. Một cung hoàn toàn nằm trong một hàng và thay thế khoảng trắng giữa đầu \
và cuối /
. Do đó, hàng 2 sẽ có 4 ký tự trong cung của nó, hàng 3 sẽ có 6, v.v. Mỗi cung được cấu tạo bằng các quy tắc sau:
- Các ký tự được phép duy nhất là
_/¯\
(U + 005F, U + 002F, U + 00AF, U + 005C) - Để đảm bảo vẻ ngoài mượt mà, bất kỳ
¯
hoặc/
phải được theo sau bởi một¯
hoặc\
- Để đảm bảo vẻ ngoài mượt mà, bất kỳ
_
hoặc\
phải được theo sau bởi một_
hoặc/
- Hai quy tắc trên cũng áp dụng cho các cạnh của thang
- Ba quy tắc trên có nghĩa là ký tự đầu tiên trong cung phải
_
hoặc/
và ký tự cuối cùng phải_
hoặc\
(\¯\_//
không hợp lệ ở cả hai đầu nhưng\_/¯\/
vẫn ổn) - Phải có cơ hội khác không cho mỗi nhân vật được phép xảy ra tại một điểm nhất định
- Mỗi cung độc lập với mọi cung khác
Hoạt hình
Tuổi thọ của một cung duy nhất được tạo ra bằng cách bắt đầu nó ở hàng 1 và "di chuyển" nó lên một hàng tại một thời điểm cho đến khi nó đạt đến đỉnh. IE, đầu tiên tạo một cung ở hàng 1, sau đó đặt nó trở lại khoảng trắng và tạo một cung ở hàng 2, v.v. Đưa ra một số cung để hiển thị ( N ), hiển thị toàn bộ vòng đời của nhiều cung đó cùng một lúc bằng các hướng dẫn sau:
- Chỉ một cung nên "sống" bất cứ lúc nào. Vòng cung tiếp theo không thể bắt đầu cho đến khi vòng cung hiện tại đạt đến đỉnh và sau đó dập tắt.
- Mỗi hàng trong vòng đời của vòng cung phải được hiển thị cho chính xác một khung
- Cần có một khung chỉ là bậc thang cơ bản (không có cung) trước khi bắt đầu một cung mới (tùy chọn trước cung thứ nhất)
- Hoạt hình sẽ hiển thị toàn bộ cuộc sống của N cung. Nếu N = 0, nó sẽ làm động các cung ngẫu nhiên mãi mãi cho đến khi dừng lại.
- Nếu N > 0, bạn vẫn có thể lặp lại hoạt hình mãi mãi nhưng nó phải là một vòng lặp của cùng một cung. (Ví dụ GIF ở đầu bài này có H = 6 và N = 3 nhưng nó lặp lại mãi mãi.)
- Các hình ảnh động nên xảy ra tại chỗ. Nghĩa là, mỗi khung nên ghi đè hoàn toàn khung tiếp theo và ở cùng một vị trí.
- Độ dài của mỗi khung hình có thể là bất cứ thứ gì bạn muốn nhưng làm cho nó có thể xem được bởi con người (IE, sử dụng ý thức chung của bạn: 0,01s / khung hình và 30 giây / khung hình đều không được chấp nhận.)
Đầu ra đầu vào
- Đầu vào và đầu ra có thể ở bất kỳ định dạng tiêu chuẩn nào
- Bạn có thể xuất GIF, viết văn bản lên màn hình, xuất một tệp cho mỗi khung hoặc bất kỳ phương tiện hợp lý nào khác
- Sơ hở tiêu chuẩn bị cấm
- Chiều cao của thang H sẽ là một số nguyên dương
- Số lượng cung để hiển thị N sẽ là số nguyên không âm
- Cả H và N được lấy làm đầu vào theo bất kỳ thứ tự nào bạn chọn (Vui lòng bao gồm thứ tự trong câu trả lời của bạn)
Điều kiện chiến thắng
Đây là môn đánh gôn nên mã ngắn nhất sẽ thắng.
the first character in the arc must be _ or / and the last character must be _ or \
và There must be a non-zero chance for each allowable character to occur at a given point
. Để đối xứng, cả ký tự đầu tiên và ký tự cuối cùng sẽ phải xuất hiện _
mỗi lần, điều đó có nghĩa là không có cơ hội nào /
xảy ra hoặc `\` xảy ra.