a291: nAnB problem
#a291: nAnB problem
'''
題目會先提供一組正確的四位數字密碼,接著會有數組猜密碼的數字,
對於每組嘗試的密碼,若有 p 個數字的值正確且在正確的位子上,輸出 pA,
另外有 q 個數字的值正確,
但不在正確的位子上,輸出 qB,將 AB 組合為 pAqB 輸出。
輸入說明
多筆輸入。
第一行有四個介於0-9之間的數字,代表正確的密碼
第二行有一個整數n,1<=n<=10000,代表接下來嘗試n組密碼
接下來有n行,每行有四個介於0-9之間的數字,每行各代表一組嘗試的密碼。
輸出說明
輸出n行。
對於每組嘗試的密碼,若有p個數字的值正確,且在正確的位子上,
另外有q個數字的值正確,但不在正確的位子上,
輸出pAqB。
範例見測資。
範例輸入 #1
1 2 3 4
4
1 1 4 5
1 2 4 3
1 1 4 4
4 3 2 1
範例輸出 #1
1A1B
2A2B
2A0B
0A4B
'''
print('a291: nAnB problem')
num = int(input('輸入測資的筆數-->')) # 題目次數
pwd1 = [int(i) for i in input('輸入四個介於0-9之間的數字,代表正確的密碼-->').split(' ')]
for j in range(num): # 重複幾題
try:
pwd2 = [int(j) for j in input('輸入四個介於0-9之間的數字,代表嘗試的密碼-->').split(' ')]
except:
print('結束') # 程式結束
print (pwd1,pwd2)
sum1=sum2=0
c=list(pwd1)
#print (c)
for i in range (num):
if(pwd2[i]==c[i]):
sum1=sum1+1
pwd2[i]='c',
c[i]='c';
for i in range (0,4 ):
for j in range (0,4):
if(c[j]==pwd2[i] and c[j]!='c' and pwd2[i]!='c'):
sum2=sum2+1
pwd2[i]='c'
c[j]='c';
print(sum1,'A',sum2,'B')
>>> %Run a291.py
a291: nAnB problem
輸入測資的筆數-->4
輸入四個介於0-9之間的數字,代表正確的密碼-->1 2 3 4
輸入四個介於0-9之間的數字,代表嘗試的密碼-->1 1 4 5
[1, 2, 3, 4] [1, 1, 4, 5]
1 A 1 B
輸入四個介於0-9之間的數字,代表嘗試的密碼-->1 2 4 3
[1, 2, 3, 4] [1, 2, 4, 3]
2 A 2 B
輸入四個介於0-9之間的數字,代表嘗試的密碼-->1 1 4 4
[1, 2, 3, 4] [1, 1, 4, 4]
2 A 0 B
輸入四個介於0-9之間的數字,代表嘗試的密碼-->4 3 2 1
[1, 2, 3, 4] [4, 3, 2, 1]
0 A 4 B
>>>
沒有留言:
張貼留言