• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の事で・・・)

C言語で分からない部分があるナンバーズゲームの解説をお願いします

このQ&Aのポイント
  • C言語の勉強を始めたばかりですが、akabas.netのナンバーズというゲームのプログラムについて分からない部分があります。解説していただけないでしょうか?
  • このプログラムでは、数当てゲームが行われています。プレイヤーは数字を入力し、その数字が正解なのかを判定するアルゴリズムです。
  • プログラムの詳細は以下の通りです。まず、プレイヤーが入力した数字を4桁の数に分解し、正解と比較します。数字の一致数と位置が正確な場合、その数字を「Keta」と「Kazu」にそれぞれ加算します。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

> "答えが'4135'で入力が'0123'の場合、'数:2,桁:1'とヒントが出ます。\n" とのことなので,これをデータ例として説明します。  [3] [2] [1] [0] +―+―+―+―+ |4|1|3|5| 配列 numbers はプログラムが決定した4桁の乱数 +―+―+―+―+  [3] [2] [1] [0] +―+―+―+―+ |0|1|2|3| 配列 test は人間が入力した4桁の数 +―+―+―+―+ > for( i = 0 ; i < 4 ; i++ ){ > for( j = 0 ; j < 4 ; j++ ){ > if( numbers[i] == test[j] ){ という2重ループで,4回×4回=計16回の次のような判断をおこなっている。 if (numbers[0] == test[0]) つまり 5==3?という判断 if (numbers[0] == test[1]) つまり 5==2?という判断 if (numbers[0] == test[2]) つまり 5==1?という判断 if (numbers[0] == test[3]) つまり 5==0?という判断 if (numbers[1] == test[0]) つまり 3==3?という判断 if (numbers[1] == test[1]) つまり 3==2?という判断 if (numbers[1] == test[2]) つまり 3==1?という判断 if (numbers[1] == test[3]) つまり 3==0?という判断 if (numbers[2] == test[0]) つまり 1==3?という判断 if (numbers[2] == test[1]) つまり 1==2?という判断 if (numbers[2] == test[2]) つまり 1==1?という判断 if (numbers[2] == test[3]) つまり 1==0?という判断 if (numbers[3] == test[0]) つまり 4==3?という判断 if (numbers[3] == test[1]) つまり 4==2?という判断 if (numbers[3] == test[2]) つまり 4==1?という判断 if (numbers[3] == test[3]) つまり 4==0?という判断 で,例えば,   > if (numbers[1] == test[0]) つまり 3==3?という判断 の場合のように,互いに数字は合っているけれど桁位置が異なる場合は,kazu++   > if (numbers[2] == test[2]) つまり 1==1?という判断 の場合のように,互いに数字も合っており桁位置も合っている(i==j)場合は,kazu++ してさらに keta++

関連するQ&A