Thử thách này được lấy cảm hứng lỏng lẻo từ Pada esolang chưa thực hiện .
Hãy xem xét một mảng 8 bit, tất cả được khởi tạo về 0. Chúng tôi sẽ giới thiệu một tập lệnh rất tối giản để in các chuỗi tùy ý. Có hai hướng dẫn, cả hai đều lấy tham số N
là chỉ số của một bit:
t N
for t oggle: Điều này thay đổi giá trị của bitN
.p N
cho p rint: Điều này diễn giải tất cả 8 bit dưới dạng một byte, bắt đầu từ bitN
và quấn quanh cuối . Ký tự tương ứng với byte này được in thành STDOUT.
Hãy xem một ví dụ. Chúng tôi muốn in :=
. Chắc chắn chúng tôi đạt được điều này như sau (chỉ số bit dựa trên 0):
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 5 [0 0 1 1 1 1 1 0]
t 6 [0 0 1 1 1 1 0 0]
t 7 [0 0 1 1 1 1 0 1]
p 0 [0 0 1 1 1 1 0 1] == 61 == '='
Nhưng thay vào đó, chúng ta có thể sử dụng tính năng tuần hoàn p
và lưu hai hướng dẫn:
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 1 [0 1 1 1 1 0 1 0]
p 7 [0 1 1 1 1 0 1 0] == [0 0 1 1 1 1 0 1] == 61 == '='
^
Vì vậy, p 7
chỉ cần bắt đầu đọc giá trị byte từ bit cuối cùng thay vì đầu tiên.
Các thách thức
Đưa ra một chuỗi các ký tự ASCII có thể in trống (0x20 đến 0x7E, đã bao gồm), tạo một danh sách hướng dẫn tối ưu (một dòng trên mỗi lệnh) để in chuỗi đó với hệ thống trên. Nếu có nhiều giải pháp tối ưu (hầu như sẽ luôn luôn như vậy), chỉ tạo một trong số đó.
Bạn có thể chọn giữa lập chỉ mục dựa trên 0 và 1 dựa trên các bit, nhưng vui lòng cho biết lựa chọn của bạn.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out). Nếu bạn không in kết quả sang STDOUT, thì nó vẫn chỉ là một chuỗi được phân tách bằng dòng mới.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Các trường hợp thử nghiệm
Mỗi trường hợp thử nghiệm là một dòng duy nhất chứa chuỗi đầu vào, theo sau là số lượng hướng dẫn tối ưu, theo sau là một giải pháp có thể.
Bạn không nên xuất số lệnh trong giải pháp của mình - điều này chỉ được bao gồm ở đây để bạn có thể kiểm tra tính chính xác của mã nếu nó in một danh sách hướng dẫn khác.
?
7 instructions
t 2
t 3
t 4
t 5
t 6
t 7
p 0
:=
7 instructions
t 2
t 3
t 4
t 6
p 0
t 1
p 7
0123456789
26 instructions
t 2
t 3
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 2
t 3
p 3
t 2
p 3
9876543210
28 instructions
t 2
t 3
t 4
t 7
p 0
t 7
p 0
t 0
t 7
p 5
t 4
p 5
t 0
t 5
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
Hello, World!
39 instructions
t 1
t 4
p 0
t 3
t 7
p 2
t 1
t 6
p 2
p 2
t 0
t 1
p 2
t 0
t 1
t 3
p 2
t 6
t 7
p 2
t 0
t 2
t 6
t 7
p 1
t 0
t 1
t 5
p 0
t 2
t 7
p 3
t 2
t 6
p 0
t 4
p 0
t 1
p 3
The quick brown fox jumps over the lazy dog.
150 instructions
t 1
t 3
t 5
p 0
t 1
t 2
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 3
t 7
p 0
t 5
p 0
t 3
t 4
t 5
p 0
t 4
t 6
p 0
t 4
p 0
t 1
t 4
t 6
t 7
p 0
t 1
t 6
p 0
t 3
p 0
t 0
t 5
p 4
t 0
t 7
p 0
t 1
p 1
t 3
t 5
t 6
t 7
p 0
t 1
t 5
t 6
p 0
t 4
t 7
p 0
t 1
t 2
p 3
t 5
t 6
t 7
p 2
t 1
t 2
t 6
p 0
t 0
p 7
t 0
t 7
p 5
t 3
t 4
t 6
t 7
p 0
t 6
t 7
p 0
t 1
t 3
t 6
t 7
p 0
t 1
t 4
t 5
t 6
t 7
p 0
t 4
p 4
t 6
p 0
t 1
t 6
p 4
t 5
t 6
t 7
p 0
t 1
t 3
t 5
p 0
t 1
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 4
t 5
p 0
t 1
p 3
t 3
t 7
p 1
t 1
t 5
p 0
t 1
t 3
t 4
t 7
p 0
t 1
t 5
p 0
t 4
t 6
t 7
p 0
t 4
p 0
t 1
t 4
t 7
p 0
Các trường hợp thử nghiệm đã được tạo ra với việc thực hiện tham chiếu CJam này .