Joe là nhà phát triển BF trung bình của bạn. Anh ta chuẩn bị kiểm tra các thay đổi mã của mình vào kho lưu trữ của họ khi anh ta nhận được một cuộc gọi từ ông chủ của mình. "Joe! Máy của máy khách mới bị hỏng! Trình thông dịch brainfuck đặt tất cả các ô thành giá trị ngẫu nhiên trước khi thực hiện chương trình. Không có thời gian để sửa nó, mã của bạn sẽ phải xử lý nó." Joe không nghĩ nhiều về điều đó và chuẩn bị viết một chương trình để đặt một triệu ô đầu tiên về 0, khi ông chủ của anh ta ngắt lời anh ta một lần nữa - "... và đừng nghĩ về việc sử dụng vũ lực, mã phải càng nhỏ càng tốt. " Bây giờ bạn phải giúp Joe tội nghiệp!
Thông số kỹ thuật
- Bạn sẽ nhận được một số mã brainfuck hợp lệ làm đầu vào
- Chương trình của bạn sau đó sẽ sửa đổi mã để nó hoạt động trên trình thông dịch Brainfuck ngẫu nhiên
- Điều này có nghĩa là trước khi thực hiện chương trình, các ô có thể được đặt thành bất kỳ giá trị nào.
- Chương trình mới phải có hành vi giống hệt nhau bất kể điều kiện ban đầu.
- Trình thông dịch sẽ có giá trị ô tối đa là 255 với gói và băng dài vô hạn.
Chấm điểm
Điểm của bạn gấp 10 lần kích thước trình biên dịch tính bằng byte cộng với tổng kích thước của trường hợp kiểm tra . Điểm thấp nhất rõ ràng là chiến thắng. Để giảm thiểu tối ưu hóa trường hợp thử nghiệm, tôi bảo lưu quyền thay đổi các trường hợp thử nghiệm xung quanh nếu tôi nghi ngờ bất cứ điều gì và có thể sẽ làm như vậy trước khi chọn người chiến thắng.
Các trường hợp thử nghiệm
(Tôi đã nhận được những thứ này từ trang esolangs và trang web này: http://www.hevanet.com/cristofd/brainfuck/ ). Cũng cảm ơn @Sparr cho trường hợp thử nghiệm cuối cùng.
- Chào thế giới:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Nhập ngược:
>,[>,]<[.<]
- Quyền hạn của hai (Dòng vô hạn):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Hình vuông dưới 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Luồng Fibre:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Trình tự ASCII cho đến đầu vào:
,[.[>+<-]>-]
(Cái này yêu cầu số lượng ô khác nhau dựa trên đầu vào)