0th 1. 2. 3. Letzte Geschichte
Schließlich werden wir den KI-Teil erstellen. Vielen Dank> <
Wie in Teil 1 erwähnt, wählt der Computer grundsätzlich die "Hand mit der geringsten Anzahl der schlechtesten Kandidaten" aus.
Das Ziel ist eine Funktion, um die "schlechteste Kandidatennummer" zu finden. So finden Sie den schlechtesten Kandidaten, aber Sie benötigen eine Liste mit Nummern, die die Ergebnisse Ihrer bisherigen Anrufe erfüllen. Es wäre auch nützlich, eine Liste mit 720 Nummern von 012 bis 789 zu haben. Und es scheint Spaß zu machen, eine Liste zu erstellen, die alle Kombinationen von EAT und BITE enthält. Deshalb werde ich zuerst diese drei Listen und Funktionen erstellen.
Ich habe es wie folgt implementiert
def change(a,b,c):
return [[a,b,c],[a,c,b],[b,a,c],[b,c,a],[c,a,b],[c,b,a]]
ALL=[]
for i in range(0,10):
for j in range(i+1,10):
for k in range(j+1,10):
ALL+=change(i,j,k)
Um den Ablauf kurz zu erklären Erstellen Sie eine Funktion, die eine Liste von 3! Sortiert aus 3 Zahlen zurückgibt Ich habe alle Kombinationen so gemacht, dass die Zahlen nicht von für, für, für abgedeckt werden. Bitte lassen Sie mich wissen, ob es eine bessere Implementierung gibt (überlassen Sie es anderen)
Da die Anzahl klein ist, werde ich es ehrlich schreiben
EB=[[3,0],[2,1],[2,0],[1,2],[1,1],[1,0],[0,3],[0,2],[0,1],[0,0]]
Als nächstes definieren wir eine Funktion, die Zahlen sammelt, die die bisherigen Ergebnisse von EAT und BITE erfüllen. Der erste Zug ist der gleiche wie ALL, also zuerst
KOUHO=ALL
Lass es uns kopieren. Und jedes Mal, wenn ich EAT, BITE kenne
def CHECK(CALL,EAT,BITE,KOUHO):
X=len(KOUHO)
group=[]
for i in range(X):
if NUMERON(CALL,KOUHO[i])==[EAT,BITE]:
group.append(KOUHO[i])
return group
KOUHO
KOUHO=CHECK(CALL,EAT,BITE,KOUHO)
Sie können es mit aktualisieren.
Jetzt sind Sie bereit, die "schlechteste Anzahl von Kandidaten" zu finden.
def BAD(CALL,KOUHO):
CHECK_LIST=[0]*10
for i in range(10):
EAT=EB[i][0]
BITE=EB[i][1]
CHECK_LIST[i]=len(CHECK(CALL,EAT,BITE,KOUHO))
return max(CHECK_LIST)
Sie müssen also nur von [0,1,2] bis [7,8,9] suchen. Die Liste der COM-Aufrufe kann also wie folgt geschrieben werden:
def CALL_LIST(KOUHO):
LIST=[]
EATLIST=[]
cnt=1000
for i in range(720):
if BAD(ALL[i],KOUHO)<cnt:
cnt=BAD(ALL[i],KOUHO)
LIST=[]
EATLIST=[]
if len(CHECK(ALL[i],3,0,KOUHO))>=1:
EATLIST.append(ALL[i])
else:
LIST.append(ALL[i])
elif BAD(ALL[i],KOUHO)==cnt:
if len(CHECK(ALL[i],3,0,KOUHO))>=1:
EATLIST.append(ALL[i])
else:
LIST.append(ALL[i])
if len(EATLIST)==0:
return LIST
else:
return EATLIST
Wenn Sie versuchen, in der Situation zu bestätigen, dass die verbleibenden Kandidaten [1,2,3], [1,3,2], [2,4,1] sind
print(CALL_LIST([[1,2,3],[1,3,2],[2,4,1]]))
#[[1, 2, 3], [1, 3, 2]]
Ist zurückgekommen. Klingt richtig.
Jetzt, da Sie die Köpfe von com haben, lassen Sie uns eine Kampfumgebung schaffen !!
Recommended Posts