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ステートメントを作成します。
[[-]>+<]
場合はZ
非ゼロである、すなわち、文字入力がされていない同じ、我々は次のメモリ場所をインクリメントします。
このifステートメントから出た後、次の記憶場所をデクリメントします。今、この記憶場所にはが含まれています!Z
。最後にこれを使用して、入力と一致する場合は文字のインデックスを出力し、ループを強制的に終了します。そうでない場合は、ループが終了するか一致が見つかるまでループを続けます。
[-]>>>>>>>
Clears first byte; goes to position to start program
,[<<<<<<++<+++++++++++++:>>>>>>,]
Loops inputs