pbrain, 402 356 340 338 329 바이트
[(:<>)+,-.](>>>>>>)+([-]<<[->+>+<<]>>[-<<+>>]>>[-<+<+>>]<[->+<]<[-<->]<)+([-]+++++++[>+++++++++++++<-]>)+([-]+++++[>++++++++<-]>)+(-:<+++[->++++++<]>)+(-:++)+(-:++)+(----:+)+(-:++)+(-:+)+(-:+)+(-:+)+([-]++:++)+([>[->+>+<<]>>[-<<+>>]<:>>+:[[-]>+<]>-[<<<<[-.>]>>>>>>+>>>>>]<<[-]<<+<-]>>>)[-]>>>>>>>,[<<<<<<++<+++++++++++++:>>>>>>,]
휴, @KritixiLithos와 저는 4 일 동안이 작업을 해왔습니다.
0x00입력 문자가 프로그램에없는 경우 인쇄 하고, 그렇지 않으면 16 진수로 된 문자의 색인 (1 기반)입니다. 온라인으로 사용해보십시오!
설명:
[(:<>)+,-.]
All chars listed here; like other submissions
(>>>>>>)
@KritixiLithos added this part; I don't know what it does but saves the program
+([-]<<[->+>+<<]>>[-<<+>>]>>[-<+<+>>]<[->+<]<[-<->]<)
Comparison ;calculates z=x!=y and puts it in between x and y
Start; X _ _ _ Y
^
End; X Z _ _ Y
^
+([-]+++++++[>+++++++++++++<-]>)
Function to add 91 to the tape
+([-]+++++[>++++++++<-]>)
Function to add 40 to the tape
+(-:<+++[->++++++<]>)
Function to add 58 to the tape
+(-:++)
Function to add 60 to the tape
+(-:++)
Function to add 62 to the tape
+(----:+)
Function to add 41 to the tape
+(-:++)
Function to add 43 to the tape
+(-:+)
Function to add 44 to the tape
+(-:+)
Function to add 45 to the tape
+(-:+)
Function to add 46 to the tape
+([-]++:++)
Function to add 93 to the tape
+([>[->+>+<<]>>[-<<+>>]<:>>+:[[-]>+<]>-[<<<<[-.>]>>>>>>+>>>>>]<<[-]<<+<-]>>>)
이 마지막 기능은 루프입니다. 선택한 문자 [(:<>)+,-.]를 순서대로 반복 하고 입력을 문자와 비교합니다. 이제이 루프의 작동 방식에 대해 더 자세히 설명하겠습니다.
12-n n+2 _ n+2: _ _ _ i _ _ _ _ _ _; n=loop counter
^ ; i=input
스택은 루프에서 그렇게 보입니다. 루프는가 될 때까지 실행 12-n됩니다 0. 그런 다음 카운터가 n+2있습니다. 이 카운터는 선택한 각 문자의 기능 번호이기도합니다. 따라서 n=0, n+2는 첫 번째 문자, 즉에 해당합니다 [. >[->+>+<<]>>[-<<+>>]<:그냥 카운터를 문자로 변환합니다.
포인터가 캐럿이있는 위치에 있으면 카운터 변수에서 생성 된 문자를 유지하면서 입력과 비교합니다.
12-n n+2 _ n+2: Z _ _ i _ _ _ _ _ _; n=loop counter
^ ; i=input
Z인 0문자 입력, 또는 기타 다른 비 - 제로 정수 동일한 경우.
이제 우리는이 평등을 확인하기 위해 if 문을 제시합니다.
[[-]>+<]
Z0이 아닌 경우 , 즉 문자와 입력이 같지 않으면 다음 메모리 위치를 증가시킵니다.
이 if 문에서 나온 후 다음 메모리 공간을 줄입니다. 이제이 메모리 장소는을 포함 !Z합니다. 마지막으로 이것을 사용하여 입력과 일치하는 문자의 색인을 출력 한 다음 루프를 강제로 종료합니다. 그렇지 않으면 루프가 끝나거나 일치하는 것을 찾을 때까지 루프를 계속 진행합니다.
[-]>>>>>>>
Clears first byte; goes to position to start program
,[<<<<<<++<+++++++++++++:>>>>>>,]
Loops inputs