Bei codewars kata können Sie gleichzeitig Programmieren und praktisches Englisch lernen. Es ist eine geniale Seite. Wenn Sie ein Github-Konto haben, können Sie in 30 Sekunden loslegen Wenn Sie interessiert sind, starten Sie jetzt hier starten
Übrigens können Sie in vielen anderen Sprachen als Python herausfordern
Funktion, wie viele Kuchen gemacht werden können
Machen Sie def Kuchen (Rezept, verfügbar):
cakes({flour: 500, sugar: 200, eggs: 1}, {flour: 1200, sugar: 1200, eggs: 5, milk: 200})
2
{apples: 3, flour: 300, sugar: 150, milk: 100, oil: 100}, {sugar: 500, flour: 2000, milk: 2000})
0
MyAnswer
list = []
for key,value in recipe.items():
if key in available:
list.append(available[key]//value)
else:
list.append(0)
return min(list)
Es scheint, dass Sie den Inhalt mit items () erhalten können, wenn Sie mit dem ersten Wörterbuchtyp gg, also holen Sie ihn mit for Speichern Sie in jedem Material (Schlüssel) das // Materialrezept in der Liste Wenn kein Material vorhanden ist, speichern Sie 0 Ändern Sie den Mindestwert der Liste
Einfacher Code
BestAnswers
def cakes(recipe, available):
return min(available.get(k, 0)/recipe[k] for k in recipe)
Es scheint, dass Sie den Schlüssel mit "for k in dict" erhalten können Wert mit dict.get (k, 0) abrufen, zweites Argument abrufen, wenn kein Schlüssel vorhanden ist
Fast das gleiche mit min (available.get (k, 0) // v für k, v in prescription.items ())
Ich muss dict.get verwenden
return min ([verfügbar [i] // Rezept [i], wenn i verfügbar ist, sonst 0 für i im Rezept])
und wenn eingeschlossen werden kann
Wenn Sie denken, dass das Tic Tac-Spiel so etwas wie ein OX-Spiel ist Wenn Sie die Tafel bestehen und die Ergebnisse klassifizieren, ist dies in Ordnung -1: Unvollständig 1: X gewinnt 2: O gewinnt 0: Unentschieden (es ist ein Katzenspiel) Es sieht schwierig aus ...
[[0, 0, 1], [0, 1, 2], [2, 1, 0]]
-1
MyAnswer
def ox(board):
lines = []
for i in range(3):
lines.append(board[i])
lines.append([board[j][i] for j in range(3)])
lines.append([board[0][0],board[1][1],board[2][2]])
lines.append([board[0][2],board[1][1],board[2][0]])
yetfin = 0
for k in range(8):
if lines[k] == [1,1,1] or lines[k] == [2,2,2]:
return lines[k][0]
if set(lines[k]) == {0,1} or set(lines[k]) == {0,2} :
yetfin = 1
if yetfin:
return -1
else:
return 0
Es ist ein Programm, das die numerischen Werte jeder der 8 vertikalen und horizontalen Spalten in Zeilen speichert und dann nach den folgenden sucht Gewinn: [111] [222] Unvollständig: {0,1} {0,2} Unentschieden: Sonst
BestAnswers
def ox2(board):
for i in range(0,3):
if board[i][0] == board[i][1] == board[i][2] != 0:
return board[i][0]
elif board[0][i] == board[1][i] == board[2][i] != 0:
return board[0][i]
if board[0][0] == board[1][1] == board[2][2] != 0:
return board[0][0]
elif board[0][2] == board[1][1] == board[2][0] != 0:
return board[0][0]
elif 0 not in board[0] and 0 not in board[1] and 0 not in board[2]:
return 0
else:
return -1
Was Sie tun, ist fast dasselbe, außer dass Sie bis zur Gewinnerentscheidung keine Linien gezogen haben (Das ist klug, weil es Speicher spart) Ich suche jedoch nur nach 0 im Unentschieden ... Mit anderen Worten XXO OOX XO_ Das Verhalten hat sich bei einem Stapelspiel mit 0 like geändert
board = [[1,1,2],
[2,2,1],
[1,2,0]]
print('MyAnswer:',ox(board))
print('BestPractice:',ox2(board))
MyAnswer: 0
BestPractice: -1
Es wird sein.
Das? Wenn Sie sich die Problemstellung genau ansehen
-1 if the board is not yet finished (there are empty spots),
Mit anderen Worten, wenn auch nur eine leer ist, ist sie unvollständig, so dass letztere die richtige Best Practice zu sein scheint.
Am Samstag gegen Mittag habe ich keine Lust, vor Mittag das Haus zu verlassen, also kann ich nichts essen
Persönliche Vorlage
Q
MyAnswer
BestAnswers
Recommended Posts