2009-10-07 27 views
17

Tôi nhận được một số argument over on SuperUser.com về các câu trả lời vô ích và thấy mình thách thức các poster khác để trả lời câu hỏi trong brainfuck. Anh ấy không đưa tôi lên đó, nhưng giờ tôi rất tò mò.Port dos2unix để brainfuck

Tất cả chương trình cần làm là chuyển đổi kết thúc dòng CRLF thành LF (kiểu dos thành unix). Bất kỳ lập trình viên bf xung quanh có thể giúp đỡ?

+3

+1 từ tôi cho bất cứ ai viết đang làm việc; ^) – Toad

+0

tôi sẽ phù hợp với nó :) –

+0

tôi chấp nhận câu trả lời làm việc đầu tiên nhưng bất cứ ai viết một chương trình làm việc (khác biệt, rõ ràng) vẫn được upvotes. –

Trả lời

23

Ở đây bạn đi:

,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++. 

Giả định rằng EOF được chỉ định bởi một giá trị đầu vào từ 0 (đây là mặc định trên thịt bò, mà tôi sử dụng để kiểm tra, và là một sự lựa chọn hợp lý, tôi nghĩ rằng nó có thể cũng hỗ trợ EOF để lại các ký tự không thay đổi, nhưng tôi đã không kiểm tra đó). Cũng giả định rằng tệp kết thúc bằng một LF (thực tế, nó sẽ thay thế ký tự cuối cùng bằng LF). Xử lý CR chính xác nếu không phải là một phần của một cặp CRLF (nghĩa là, nó xuất ra các CR đơn nhất).

Có thể mất một giờ để viết và kiểm tra, và điều đó bao gồm việc học Brainfuck ngay từ đầu.

+0

ha! tôi thậm chí không nhận được một trình biên dịch làm việc được nêu ra. bằng cách nào đó tôi đã bỏ lỡ thịt bò trong kho chứa debian. cảm ơn! –

+0

hoạt động trên trường hợp thử nghiệm của tôi. bạn thắng! –

+0

Ấn tượng! kudo +1 – Toad

24

Thời lượng này ngắn hơn một chút, chỉ có 41 ký tự.

,[[->+>+<<]>-------------[>.<[-]]>[-]<<,] 

Nó đọc giá trị vào [0]. Nó sao chép giá trị đọc vào [1] và [2] và trừ 13 từ [1]. Nếu [1] khác 0 (nghĩa là nó không phải là CR), nó sẽ đặt [2] và xóa [1]. Sau đó nó xóa một [2] và đọc lại [0] một lần nữa và lặp lại.

Điều này có lợi thế thêm - vì nó để lại [0] = 0 mỗi lần đọc - nó sẽ hỗ trợ các máy ảo BF đọc EOF là 0 hoặc xử lý EOF là "không thay đổi", cả hai là phổ biến.

Vì điều này không thay thế các cặp CRLF bằng LF mà chỉ là dải CR, điều này không phụ thuộc vào giả định tệp kết thúc bằng LF. Thử nghiệm của riêng tôi với dos2unix (ít nhất là Cygwin) không chỉ ra rằng các CR đơn lẻ được giữ lại.

+0

chạy trên thịt bò, hoạt động với testcase của tôi. nó khá cơ bản, không có CRs đi lạc hay gì cả. công việc tốt. –

+0

Đây rồi! Một ứng dụng hữu ích tốt đẹp được viết bằng một ngôn ngữ vô dụng. Chúc mừng! +1. BTW, tôi chỉ cần tạo một trình biên dịch fork gọi là Brain Force. Tôi sẽ sớm trình bày nó ở đâu đó. : D Tôi sẽ sử dụng mã này để kiểm tra nó. –

+0

Là một ngôn ngữ thực sự vô ích nếu nó có thể được đưa vào sử dụng? =) –

2

Hơi ngắn hơn và đơn giản hơn CR-stripper:

,[-------------[+++++++++++++.[-]],] 
Các vấn đề liên quan