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
Die Aufgabe ist Sudoku (Sudoku), der Name der Site ist Kata (Typ), die Notation ist Kyu (Klasse), diese Site scheint Japan zu mögen Übrigens scheint es einen Dienst namens Kumite zu geben.
Regeln des Deutschen Es ist ein Typ, der 1 bis 9 in vertikalen, horizontalen, 3 * 3 Bereichen arrangiert.
[[1, 3, 2, 5, 7, 9, 4, 6, 8]
,[4, 9, 8, 2, 6, 1, 3, 7, 5]
,[7, 5, 6, 3, 8, 4, 2, 1, 9]
,[6, 4, 3, 1, 5, 8, 7, 9, 2]
,[5, 2, 1, 7, 9, 3, 8, 4, 6]
,[9, 8, 7, 4, 2, 6, 5, 3, 1]
,[2, 1, 4, 9, 3, 5, 6, 8, 7]
,[3, 6, 5, 8, 1, 7, 9, 2, 4]
,[8, 7, 9, 6, 4, 2, 1, 5, 3]]
agvz
[[1, 3, 2, 5, 7, 9, 4, 6, 8]
,[4, 9, 8, 2, 6, 1, 3, 7, 5]
,[7, 5, 6, 3, 8, 4, 2, 1, 9]
,[6, 4, 3, 1, 5, 8, 7, 9, 2]
,[5, 2, 1, 7, 9, 3, 8, 4, 6]
,[9, 8, 7, 4, 2, 6, 5, 3, 1]
,[2, 1, 4, 9, 3, 5, 6, 8, 7]
,[3, 6, 5, 8, 1, 7, 9, 2, 4]
,[8, 7, 9, 6, 4, 2, 1, 3, 5]]
#5 #3 #Bei vertikaler Betrachtung 5,3 fehlt
My Answer
import numpy as np
def done_or_not(board):
sets = set([i for i in range(1,10)])
board = np.array(board)
if not [1 for j in range(9) if not set(board[j]) == sets or not set(board[:,j]) == sets] ==[]:
return 'Try again!'
if not [1 for i in range(9) if not set(board[i//3*3:i//3*3+3,i%3*3:(i%3*3)+3].flatten()) == sets ] ==[]:
return 'Try again!'
return 'Finished!'
As sets = {Sätze von 1-9} Ist die Spalte in diesem Satz? Ist jeder Bereich dieses Set? Es fühlt sich an, als würde man jeden überprüfen Ich habe das Gefühl, dass der Code Codewars-ähnlich geworden ist ... Ich weiß nicht, ob es gut oder schlecht ist, weil es nicht lesbar ist
Best Answer
import numpy as np
def done_or_not(aboard): #board[i][j]
board = np.array(aboard)
rows = [board[i,:] for i in range(9)]
cols = [board[:,j] for j in range(9)]
sqrs = [board[i:i+3,j:j+3].flatten() for i in [0,3,6] for j in [0,3,6]]
for view in np.vstack((rows,cols,sqrs)):
if len(np.unique(view)) != 9:
return 'Try again!'
return 'Finished!'
Was ist das ... Es ist wirklich leicht zu sehen Ordnen Sie vertikale und horizontale Quadrate mit np.vstack () in einem zweidimensionalen Array an. Sie sehen, wie viele Arten von Elementen in np.unique () vorhanden sind. Ich habe versucht, dasselbe mit len (set ()) zu tun, aber es gibt eine so nützliche Funktion Ich werde mein Bestes tun, um einen Code zu schreiben, der einfach und leicht zu lesen ist, kein süßer.
Ich habe angefangen, CSS und HTML zu studieren
Recommended Posts