Brainfuck, 240 ký tự
,
>++
+++++
+[-<---
--->],[>+
+++++++[-<-
----->]<<[->+
+++++++++<]>>]<
[->+>+>>>>>>>+<<<
<<<<<<]>>>>++++++++
[-<++++>]>++++++[-<++
+++++>]+>>>++[-<+++++>]
<<<<<<[-[>.<-]<[-<+>>+<]<
[->+<]>>>>>[-<.>>+<]>[-<+>]
>.<<++<<<-<->]>>>>>>>-[-<<<<<
<.>>>
>>>]<
<<<<.
Chưa xong đâu. Nó hoạt động, nhưng chỉ với các số có một chữ số.
EDIT: Xong! Hoạt động cho các thông dịch viên sử dụng 0 là EOF. Xem NOTE
s trong nguồn nhận xét cho những người có -1.
EDIT một lần nữa: Tôi nên lưu ý rằng vì Brainfuck thiếu một phương thức tiêu chuẩn để đọc các đối số dòng lệnh, tôi đã sử dụng stdin (đầu vào tiêu chuẩn) để thay thế. ASCII, tất nhiên.
EDIT lần thứ ba: Trời ơi, có vẻ như tôi đã tước .
(xuất) ký tự khi ngưng mã. Đã sửa...
Đây là quản lý bộ nhớ cơ bản của vòng lặp chính. Tôi chắc chắn rằng nó có thể được tối ưu hóa mạnh mẽ để giảm số lượng nhân vật xuống khoảng 30 hoặc hơn.
- Tạm thời
- Bản sao của quầy
- Bộ đếm (đếm đến 0)
- Ký tự khoảng trắng (thập phân 32)
- Ký tự dấu hoa thị (thập phân 42)
- Số dấu hoa thị trên dòng hiện tại (bộ đếm 1 + 2 *)
- Tạm thời
- Nhân vật dòng mới
- Tạm thời?
- Tổng số dòng (tức là giá trị đầu vào; được lưu trữ cho đến hết, khi in thân cây)
Phiên bản thu gọn:
,>++++++++[-<------>],[>++++++++[-<------>]<<[->++++++++++<]>>]<[->+>+>>>>>>>+<<<<<<<<<]>>>>++++++++[-<++++>]>++++++[-<+++++++>]+>>>++[-<+++++>]<<<<<<[-[>.<-]<[-<+>>+<]<[->+<]>>>>>[-<.>>+<]>[-<+>]>.<<++<<<-<->]>>>>>>>-[-<<<<<<.>>>>>>]<<<<<.
Và phiên bản đẹp:
ASCII to number
,>
++++++++[-<------>] = 48 ('0')
Second digit (may be NULL)
,
NOTE: Add plus sign here if your interpreter uses negative one for EOF
[ NOTE: Then add minus sign here
>++++++++[-<------>]
<<[->++++++++++<]>> Add first digit by tens
]
Duplicate number
<[->+>+>>>>>>>+<<<<<<<<<]>>
Space char
>>++++++++[-<++++>]
Asterisk char
>++++++[-<+++++++>]
Star count
+
New line char
>>>++[-<+++++>]<<<
<<<
Main loop
[
Print leading spaces
-[>.<-]
Undo delete
<[-<+>>+<]
<[->+<]
>>
Print stars
>>>[-<.>>+<]
Add stars and print new line
>[-<+>]
>.<
<++
<<<
-<->
End main loop
]
Print the trunk
>>>>>>>
-[-<<<<<<.>>>>>>]
<<<<<.
Merry Christmas =)
c=:[:((\:i.@#),}.)"1[:$&'*'"0[:>:0,~i.