この、「 と同じ数字があるかどうかを...」 の部分は、
以下のようなコードで書けます。
for(k=1;k<=N;k++) if(input[k]==kadai[j]){ A++ if(j==k) H++ break }一致するものがあれば
なお、これは 1 から までの全ての
に対して実行してもよいのですが、
すでに配列の値の数字は重複しないことが保障されているので、
もし一致した数字があればその後の
に対しては実行する必要がありません。
よって、一致した場合に break 文で for 文を中断しています。
break 文は、for 文や while 文などのループから途中で抜けるための命令で、
break 文が呼び出されると、最も内側のループ一つから抜けだします。
あとは、これを全ての に行えばいいので、
結局次のような関数で判定ができます。
# 一致したら 1, そうでなければ 0 を返す # B,H は大域変数としてそこに結果を代入する function judgeinput(N,input,kadai, j,k,A) { H=0 # 数も場所も合っているものの個数 A=0 # 数が合っている (H も含む) ものの個数 for(j=1;j<=N;j++) for(k=1;k<=N;k++) if(input[k]==kadai[j]){ A++ if(j==k) H++ break } B=A-H if(H>=N) return 1 else return 0 }