Brainf * ck 루프 문제


19

사이버 클럽에서 인쇄를 요청하는 문제가 있습니다.

ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!

','문자를 사용하지 않고 Brainf ** k를 29 바이트 이하로 사용합니다.

작업 코드가 있습니다.

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

그러나 루프가 너무 길어서 16 바이트를 한계 이상으로 보냅니다.

두 번째 루프를 실행할 수 있도록 두 번째 및 세 번째 셀을 58 및 90으로 설정하는보다 효율적인 방법이 있습니까? 아니면 내가 보지 못하는 모든 것을 함께하는 더 좋은 방법이 있습니까?


1
그것은 단지 4 바이트를 저장하는 동안 귀하의 질문에 관해서는, 그것은 생성 실제로 더 나은 5990 와 변경 -..-을 떨어 뜨리고, >.<.
Martin Ender

나는 +[--->++<]>++++[.-]19 바이트를 얻었 지만 제어 문자도 인쇄합니다 ...
Timtech

@MartinEnder 네, 죄송합니다. 다른 게시물에 대한 귀하의 의견을보고 훨씬 더 적절 해 보이는이 그룹을 찾았습니다. 많은 답변을 생성하지 않았으므로 SO에있는 그룹을 삭제하겠습니다.
Nick Rod

2
이 "사이버 클럽"이 무엇인지 솔직히 궁금합니다. 왜냐하면 소년들은 정말 좋은 골퍼가 있어야하기 때문입니다!
Sp3000

답변:


23

27 24 바이트

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

하루 종일 기본적으로 무차별 대변인을 작성하고 결과가 나오는 것을 보았습니다. 이제 실제 작업을 다시 시작할 수 있습니다 .

온라인으로 사용해보십시오!

구성 요소 ++[<++[++<]>>>+]는 테이프를 초기화하여

[130, 0, 0, 0, 91, 59, 0]
                       ^

우리에게 필요한 것에 딱 맞습니다!


8
마법. (∩`-´) ⊃━ ☆ ゚. * ・。 ゚
primo

@primo 공정하게 말해서 나는 전반에 무슨 구조적인 일이 일어나고 있는지 전혀 모른다. 그리고 나는 당신이 당신 자신의 알고리즘 / 기술을 생각 해낼 수 있다는 사실이 놀랍다 고 생각한다 :)
Sp3000

각 루프의 끝 부분에 테이프 codepad.org/ZoJUlQ8M . 그것이 수행하는 가치에서, 또는 전혀 전혀 끝나지 않는다는 것은 전혀 직관적이지 않습니다.)
primo

1
대안 24 :+[[>++<<]>->+>+]<[-<-.>]
primo

15

30 바이트

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

온라인으로 사용해보십시오!

85171 은 brainfuck ( 3-3 의 모듈러 역수)에서 생성하기가 상당히 쉽습니다 . 8590 에 매우 가깝고 171177 ( 59 · 3 )에 매우 가깝습니다 . 약간의 해커로 88176을 대신 생산할 수 있습니다.

그래도 여전히 목표보다 1 바이트 부족합니다.

다른 제안들

일반적으로 목록을 반복하고 다른 방법보다는 상수를 곱하는 것이 더 짧습니다. 이것은 특히 3 개 이상의 값에 해당됩니다. 예를 들면 다음과 같습니다.

++++++++++[>++++++>+++++++++<<-]

다음과 같이 쓸 수 있습니다 :

+>++++[+++++[>++++++++++<-]<]>

내부 값은 두 개뿐이므로이 경우 크게 개선되지 않았습니다. 실제로 리팩토링은 1 바이트 더 짧습니다.

+++++[>++++++[>++>+++<<-]<-]>

1069가 아니라 3023을 곱 합니다. Martin Büttner의 제안으로 원본은 크게 변경되지 않고 이미 38 바이트 로 줄었습니다 .

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

58을 곱하고 더 큰 숫자를 반복하는 것에 대해 생각한 적이 없었습니다.
Nick Rod

4

34 바이트

11 바이트를 절약했지만 여전히 5 바이트가 너무 깁니다.

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

나는 이미 몇 시간을 보냈으므로 누군가가 이것을 개선 할 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.