Tất cả chúng ta đều biết, hoặc ít nhất đã nghe nói về brainfuck , một trong những ngôn ngữ bí truyền nổi tiếng và có ảnh hưởng nhất. Trong khi ngày nay hầu hết các triển khai sử dụng một băng vô hạn, trình biên dịch gốc của Urban Müller có một băng gồm 30000 ô. Một sự thật ít được biết đến * là thực sự có một giá trị đặc biệt ở phần cuối của băng, một thứ gần như không bao giờ được tương tác với trong một chương trình cân não thông thường.
Mặc dù bạn có thể in giá trị này với 29999 >
giây và a .
, brainfuck được biết đến với các giải pháp ngắn gọn và súc tích, vì vậy mục tiêu của bạn là in giá trị này với số lượng ký tự tối thiểu.
*viễn tưởng
Quy tắc:
- Một bồi dưỡng về các hướng dẫn brainfuck:
+
/-
: Tăng / giảm ô hiện tại, gói từ 255 đến 0 khi tăng 255 và ngược lại<
/>
: Di chuyển con trỏ sang trái / phải trên băng.
: In giá trị của ô hiện tại.[
: Nhảy tới tương ứng]
nếu giá trị tại ô là 0]
: Nhảy tới tương ứng[
nếu giá trị tại ô không bằng 0
- Trong trường hợp này
,
(Nhận đầu vào) không làm gì cả, vì trình biên dịch gốc không thay đổi ô trên EOF và chương trình này sẽ không nhận được đầu vào. - Băng ban đầu chứa đầy tất cả 0, ngoại trừ ô 30000, chứa giá trị không xác định
- Con trỏ bắt đầu từ ô 1 và sẽ kết thúc ở ô 30000, sau khi in nó.
- Các ô ở bên trái của 1 và bên phải của 30000 có hành vi không xác định, vì vậy các giải pháp không nên truy cập vào các ô này.
- Lưu ý rằng giá trị tại 30000
làcó thể là một 0, vì vậy chỉ đơn giản lặp cho đến khi bạn nhấn một tổ chức phi zero tế bào sẽ không làm việc. - Bạn nên in chỉ giá trị ở cell 30000
- Giải pháp ngắn nhất sẽ thắng!
- Tie-breaker là chương trình hiệu quả hơn (thực hiện trong các bước ít nhất), theo sau là thời gian gửi nhanh nhất.
Mẹo: Esolanging Fruit gợi ý sử dụng https://copy.sh/brainfuck để kiểm tra mã của bạn. Thông số kỹ thuật được mô tả trong thử thách này và bạn có thể chọn abort
tùy chọn để chương trình của bạn tạm dừng nếu vượt quá giới hạn.
.
. Tôi thắng.