Brainfuck, 240 자
,
>++
+++++
+[-<---
--->],[>+
+++++++[-<-
----->]<<[->+
+++++++++<]>>]<
[->+>+>>>>>>>+<<<
<<<<<<]>>>>++++++++
[-<++++>]>++++++[-<++
+++++>]+>>>++[-<+++++>]
<<<<<<[-[>.<-]<[-<+>>+<]<
[->+<]>>>>>[-<.>>+<]>[-<+>]
>.<<++<<<-<->]>>>>>>>-[-<<<<<
<.>>>
>>>]<
<<<<.
아직 끝나지 않았습니다. 한 자리 숫자로만 작동합니다.
편집 : 완료! EOF로 0을 사용하는 통역사에서 작동합니다. NOTE
-1을 가진 사람들에 대해서는 주석이 달린 소스를 참조하십시오 .
다시 편집하십시오 : Brainfuck에는 명령 줄 인수를 읽는 표준 방법이 없기 때문에 대신 stdin (표준 입력)을 사용했습니다. 물론 ASCII.
세 번째로 편집하십시오. 오, 여러분, .
코드를 압축 할 때 문자를 제거 (출력) 하는 것 같습니다 . 결정된...
다음은 메인 루프의 기본 메모리 관리입니다. 문자 수를 30 정도로 줄이려면 크게 최적화 할 수 있다고 확신합니다.
- 일시적인
- 카운터 사본
- 카운터 (0까지 계산)
- 공백 문자 (10 진수 32)
- 별표 문자 (10 진수 42)
- 현재 줄의 별표 수 (1 + 2 * 카운터)
- 일시적인
- 줄 바꾸기 문자
- 일시적인?
- 총 줄 수 (즉, 입력 값; 트렁크를 인쇄 할 때 끝까지 저장 됨)
응축 버전 :
,>++++++++[-<------>],[>++++++++[-<------>]<<[->++++++++++<]>>]<[->+>+>>>>>>>+<<<<<<<<<]>>>>++++++++[-<++++>]>++++++[-<+++++++>]+>>>++[-<+++++>]<<<<<<[-[>.<-]<[-<+>>+<]<[->+<]>>>>>[-<.>>+<]>[-<+>]>.<<++<<<-<->]>>>>>>>-[-<<<<<<.>>>>>>]<<<<<.
그리고 예쁜 버전 :
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.