ヒットアンドブローというゲームがあります。Aさんが4つの異なる数字を思い浮かべ、Bさんがその数字を当てます。Bさんが答えた4つの数字に対し、Aさんは次の二つを答えます。
この結果を手がかりにBさんは再び4つの数字を選びAさんに伝えます。
たとえばAさんが『4583』という数を思い浮かべます。
それにBさんが『2537』と答えたとします。
この場合「1ヒット1ブロー」とAさんは答えることになります。
Aさんの4つの数字とBさんの4つの数字を入力してヒットとブローの数を出力してください。
なお、入力される数字は0~9の範囲で4つの数字は全て異なります。
a1(Aさん1個目の数字:0~9の整数)
a2(Aさん2個目の数字:0~9の整数)
a3(Aさん3個目の数字:0~9の整数)
a4(Aさん4個目の数字:0~9の整数)
b1(Bさん1個目の数字:0~9の整数)
b2(Bさん2個目の数字:0~9の整数)
b3(Bさん3個目の数字:0~9の整数)
b4(Bさん4個目の数字:0~9の整数)
ヒット数(整数) ブロー数(整数)
4
5
8
3
2
5
3
7
1
1
for文で回して条件判定です。
#include <stdio.h> int main(){ int a[4],b[4]; int hit,blow; int i; for(i=0;i<4;i++){ scanf("%d",&(a[i])); } for(i=0;i<4;i++){ scanf("%d",&(b[i])); } hit =blow =0; for(i=0;i<4;i++){ int j; for(j=0;j<4;j++){ if(a[i] ==b[j]){ if(i==j){ hit++; }else{ blow++; } } } } printf("%d\n%d\n",hit,blow); return 0; }
もっと簡単な方法もありそうですが、妥協点です。