Ich mache ein Projekt in Python und ein Teil davon beinhaltet Ranking Board Staaten in einem Spiel. Dieses Spiel, Sneaky Statues, ist ähnlich zu verbinden vier, in denen Sie gewinnen, indem Sie vier Stücke in Folge. Meine naive Einschätzung eines Bretts ist, wie viele Stücke du hintereinander hast (also entweder 1,2,3 oder 4). Das Brett ist ein Dreieck, so dass Sie Teile in einer Reihe hoirizontaly oder diagonal in jeder Richtung haben können. Dies ist die Funktion, die ich gerade benutze, um Stücke zu finden.Wie Code effektiv in Python wiederverwenden
def score(player):
player_x = sorted(player, key=lambda statue: statue.x) #player's pieces sorted by x coordinate
player_y = sorted(player, key=lambda statue: statue.y)
max_score = [0]
count = 1
#pieces are in a horizontal line if they share a y coord and have sequential x coords
for cur_s, next_s in zip(player_x, player_x[1:]):
if cur_s.x + 1 == next_s.x and cur_s.y == next_s.y:
count += 1
else:
max_score.append(count)
count = 1
max_score.append(count)
count = 1
#pieces are diagonal if they share an x and have sequental y's
for cur_s, next_s in zip(player_y, player_y[1:]):
if cur_s.y + 1 == next_s.y and cur_s.x == next_s.x:
count += 1
else:
max_score.append(count)
count = 1
max_score.append(count)
count = 1
#they are diagonal if both x's and y's are sequential
for cur_s, next_s in zip(player_y, player_y[1:]):
if cur_s.y + 1 == next_s.y and cur_s.x + 1 == next_s.x:
count += 1
else:
max_score.append(count)
count = 1
max_score.append(count)
return max(max_score)
Soweit ich seine Arbeit sagen kann, aber ich wiederhole mich im Wesentlichen dreimal. Meine Frage ist, was ist der pythischste Weg für mich, diese Funktion zu schreiben, damit ich mich weniger wiederhole?