【プチコン/mkII 両対応】※mkIIのホームメニューには非対応 2012年12月9日 公開
CLS:CLEAR MAX=30000:DIM P(MAX) L=LEN(MEM$)-1 FOR I=0TO L P$=MID$(MEM$,I,1) IF P$==">"THEN C=C+1:IF C>=MAX THEN C=0 IF P$=="<"THEN C=C-1:IF C<0 THEN C=MAX-1 IF P$=="+"THEN P(C)=P(C)+1:IF P(C)>255 THEN P(C)=0 IF P$=="-"THEN P(C)=P(C)-1:IF P(C)<0 THEN P(C)=255 IF P$=="."THEN ?CHR$(P(C)); IF P$==","THEN GOSUB @GETCHAR IF P$=="["THEN GOSUB @WHILE IF P$=="]"THEN GOSUB @WEND NEXT END @GETCHAR K$=INKEY$() IF K$==""THEN @GETCHAR P(C)=ASC(K$):RETURN @WHILE IF P(C) THEN RETURN N=0 FOR J=I TO L P$=MID$(MEM$,J,1) IF P$=="]" THEN N=N-1 IF P$=="[" THEN N=N+1 IF N==0 THEN I=J:J=L NEXT RETURN @WEND IF P(C)==0 THEN RETURN N=0 FOR J=I TO 0STEP -1 P$=MID$(MEM$,J,1) IF P$=="]" THEN N=N-1 IF P$=="[" THEN N=N+1 IF N==0 THEN I=J:J=0 NEXT RETURN |
+++ | ポインタ0に3の値を入れる |
-- | ポインタ0に-2の値を入れる(バイト型整数なので-2は254になる) |
>>>++ | ポインタ3に2の値を入れる |
>>+<<- | ポインタ2に1の値を入れた後にポインタ0に-1の値を入れる |
,++. | ポインタ0に1バイトの値を入力した後に2加えてその値を出力する (「A」を入力したら「C」と表示する) |
[++++]+ | ポインタ0に1の値を入れる ("["を実行した時点ではポインタ0の値は0なのですぐに"]"にジャンプするため最後の"+"しか実行されない) |
+[----] | ポインタ0の値は減り続ける(無限ループ) ("["を実行した時点ではポインタ0の値は1なのでループ内を実行するけど"]"を実行の時点でポインタが0の値を示すことがないためループが終了することはない) |
++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++ +. |
++++++++[>++++++++<-]>+. |
+++++++++[>++++++++>+++++++++++> +++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------. +++.------.--------.>+. |
+++++[>+>+<<-]>>[<<+>>-]<< |
+>+>+>+>+>>+>+>+<<<<<<<<[>] |
++++++++[>++++++++>+++<<-]>>++[ <+.>-] |
,>,>++++++++[<------<------>>-]< <[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[ <<[>>>+<<<-]>>>[<<+<+>>>-]<-]< |
字 | 字 | 字 | 字 | 字 | 字 | ||||||||||||