2013-05-24 2 views
1

내가 파이썬에서 브레인 퍽 인터프리터를 쓰고 있어요 내가 현재이 코드를 테스트하고있어이 입력을Brainf * CK 입력 해석

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

을 :

43 

폴란드어 위키 백과는 결과가 될 것이라고 말했다 (7) ,하지만 뭔가가 바로 여기에 없습니다. 입력을 어떻게 처리해야합니까? 4 및 3 또는 '4'및 '3'(52 및 51)? 입력 문자를 정수로 처리하면 결과는 -41입니다. 첫 번째 루프 [0]이 -44이고 [1]이 0이고 [1]이 3이되고 그 결과 3이 -44에 추가되므로 결과는 -41입니다. 41.

반면에 입력 된 문자를 ASCII 코드로 처리하면 첫 번째 루프 [0]이 4이고 [1]이 0이고 [1]이 51이되고 51을 4로 추가하여 결과가 55. (이 자바 스크립트 인터프리터는 결과도 55 : https://www.nayuki.io/page/brainfuck-interpreter-javascript)

그러나 C로 작성된 인터프리터를 다운로드하고 Wikipedia에서 말한 것과 같은 결과 7을 얻었습니다 ... 그래서 혼란 스럽습니다. 그 해석자가 있습니다 : http://pastebin.com/aasxLppa, 또한이 해석자는 결과 7을줍니다 : brainfuck.tk -.-

답변

7

입력은 43이고 바이트로 나타납니다. 48 = 4

  • 제 2 입력 인 - 입력이 ASCII 문자로한다, 숫자가 6 회, 그래서 52 따라서 52, 51

    • 첫 번째 입력은 8만큼 감소되어 첫 번째 입력에 추가되므로 4 + 51 = 55가됩니다.

    • 012 출력은 ASCII 7입니다.

    프로그램은 두 개의 ASCII 숫자를 합산합니다.

    JavaScript 인터프리터는 완전히 정확합니다. 55의 바이트 값을 보유하는 첫 번째 레지스터를보고 있었지만 출력 상자는 ASCII 문자 인 7을 표시합니다.