問題
考察
2桁の数のうち1桁でも「9」が含まれていればYesを出力,含まれなければNoを出力すればいいのでは?
コード
+++++++++++
[->+++++<]
>++
>,
[-<->]
[-]+<[
>>>>>
+++++++++++
[->+++++<]
>++
>,
[-<->]
[-]+<[
>>>>>
+++++++++++++++
[->+++++<]
>+++
.
++++++++++
++++++++++
++++++++++
+++
.
<<<<<
>-+<[-]]>
[
>>>
++++++++++++++++
[->+++++<]
>+++++++++
.
++++++++++++
.
++++++++++++++
.
<<<
[-]
]
<<<<<
>-+<[-]]>
[
++++++++++++++++
[->+++++<]
>++++
.
++++++++++++
.
++++++++++++++
.
[-]
]
解説
pn(n≧0) は先頭からnポインタ目のポインタを,*pnはその値を指す.
+++++++++++
[->+++++<]
>++
*pn0をASCIIコード57,'9'までインクリメントする.
>,
*p1に入力の1文字目を格納.
[-<->]
*p1が0になるまで,*p0と*p1の値をデクリメント.
つまり,*p0-=*p1.
[-]+<[
*p1を0にして,1加算.*p1=1
p0に移動し,*p0!=0のとき[]内の処理を行う.
if{f1}else{f2}については以下のコードで表すことができる.
>[-]+<[f1>-<[-]]>[f2[-]]
今回はf1に先ほどまでと同じ処理を書き,その中のtrueのときNoを出力,falseのときYesを出力する処理を,
f2にYesを出力する処理を当てはめた.
ただ,途中[-]の処理で*p1が-1になるバグ?が発生していたので微調整している.
感想
バグに少々手間取ったが,それさえ分かれば問題なかった.
出力文字を予め用意しておくと楽かもしれないと思った.
精進したい.