TinyBF에서 Brainf ***로 변환기


9

우리는 TinyBF 변환기에 Brainf ***를 가지고 있지만, 다른 방법은 아닙니다.

규칙 :

  • 통역사는 유효한 TinyBF 프로그램을 한 줄로 가져와야하며 선택적인 후행 공백 / 줄 바꿈과 함께 해당 BrainF *** 프로그램을 한 줄로 출력해야합니다. 선행 공백은 허용되지 않습니다.
  • 입력은 4 개의 TinyBF 문자가 아닌 문자를 포함하거나 포함하지 않을 수 있습니다. 그렇다면 이러한 문자를 모두 같은 지점에 인쇄해야합니다.
  • 내가 사용할 몇 가지 모호한 기준에 따라 4 월 1 일에 농담이 아닌 답변이 수락됩니다 (jk;) 다음 규칙에 따라 부정 행위를하지 않는 가장 짧은 프로그램을 수락합니다)
  • 0 바이트 또는 1 바이트 솔루션은 없습니다.이 목적을 위해 프로그래밍 언어를 만들면 재미를 망칠 수 있기 때문에)

테스트 사례


입력 1 : +++++>+++++=>=|>>+=>>+|=>|>+=>+|(5 (바이트 1) + 5 (바이트 2) = 10 (바이트 3) 계산)
출력 1 :+++++>+++++<[>>+<<-]>[>+<-]

입력 2 : +++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|(계산 3 (바이트 1) * 8 (바이트 2) = 24 (바이트 3)) 출력 2 :+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]


I / O 명령이 있습니까?
lirtosiast

TinyBF에는 IO 명령이 없기 때문에 아니요.
HyperNeutrino

맞지 않습니다. ==brainfuck 's .입니다.
Dennis

답변:


1

파이썬 2, 106 바이트

a=0
r=''
for c in input():a=[a,~a][c=='='];r+={'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='=')
print r

여기에 있는 TinyBF 사양을 구현합니다 . 온라인으로 사용해보십시오 . @ Dica 's answer의 기술을 사용하여 개선되었습니다 . 인용 문자열 입력이 필요합니다.


이것은 모든 테스트 사례에서 작동합니다! 잘 했어.
HyperNeutrino

로 5 바이트를 절약 할 수 있습니다 r+=b.get(c,c+c)[a]*(c!='='). for 루프를 한 줄로 만들어 3을 더 절약 할 수도 있습니다. dict을 인라인하여 4를 더 절약 할 수 있습니다. 인라인 input()은 또 다른 4입니다.
Morgan

또한 raw_inputPython 3을 사용 하거나 전환하고에 대한 바이트 페널티를 취해야합니다 print. 지금 나는 얻는다 SyntaxError: invalid syntax.
Morgan Thrapp

@Mergo 나는 당신의 대답에 근거를 두었습니다. 그러나 수정이 무겁기 때문에 괜찮습니다. 제거하고 싶으면 알려주십시오
Dica

@MorganThrapp 입력이 인용되어 있으므로 2에서 작동합니다. 인용 된 문자열 입력은 모바일에 있기 때문에 지금 찾을 수없는 메타 게시물 당 허용됩니다.
Mego

2

파이썬 3, 97 바이트

이 스크립트는 @Mego의 답변을 기반으로합니다.

a=0
for c in input():a-=c=='=';print({'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='='),end='')

3
나는 이것이 Mego의 답변과 너무 비슷하다고 생각하며 의견에서 최적화로 제안되어야합니다.
mbomb007

이 길이는 짧지 만 Mego의 답변이 Mego의 답변과 너무 비슷하기 때문에 Mego의 답변을 수락했습니다.
HyperNeutrino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.