[PYTHON] Codewars kata à partir de zéro, Nampre

Au codewars kata, vous pouvez apprendre la programmation et l'anglais pratique en même temps. C'est un site génial. Si vous avez un compte github, vous pouvez commencer en 30 secondes Si vous êtes intéressé, commencez maintenant commencez ici

En passant, vous pouvez défier dans de nombreux langages autres que python

Code du jour

L'affectation est Sudoku (Sudoku), le nom du site est kata (type), la notation est kyu (classe), ce site semble aimer le Japon Au fait, il semble y avoir un service appelé Kumite.

1. Sudoku Ai-je terminé mon Sudoku? [5kyu]

Jugez si le nombre est terminé sur la carte d'entrée Q

Règles de l'allemand C'est un gars qui organise 1 à 9 dans des zones verticales, horizontales, 3 * 3.

Exemple 1

Entrée: Conseil
[[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]]
Sortie: "Terminé!"

agvz

Exemple 2

Entrée: Conseil
[[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  #Vu verticalement 5,3 est manquant
Sortie: "Réessayez!"

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!'

En tant qu'ensembles = {ensembles de 1 à 9} La colonne fait-elle partie de cet ensemble? Est-ce que chaque zone est cet ensemble? C'est comme vérifier chacun J'ai l'impression que le code est devenu semblable à Codewars ... Je ne sais pas si c'est bon ou mauvais parce que ce n'est pas lisible

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!'

Qu'est-ce que c'est ... C'est vraiment facile à voir Organisez les carrés verticaux et horizontaux dans un tableau à deux dimensions avec np.vstack () Vous voyez combien de types d'éléments il y a dans np.unique () J'ai essayé de faire la même chose avec len (set ()), mais il y a une fonctionnalité tellement utile Je ferai de mon mieux pour écrire un code simple et facile à lire, pas mignon.

Épilogue

J'ai commencé à étudier le CSS et le HTML

Recommended Posts

Codewars kata à partir de zéro, Nampre
Code wars kata à partir de zéro
Soit Code Day58 à partir de zéro "20. Parenthèses valides"
Soit Code Day16 à partir de zéro "344. Reverse String"
Soit Code Day49 à partir de zéro "1323. Maximum 69 Number"
Let Code Day89 "62. Chemins uniques" à partir de zéro
Let Code Day 55 "22. Générer des parenthèses" à partir de zéro
Let Code table à partir de zéro
Soit Code Day18 à partir de zéro "53. Maximum Subarray"
Let Code Day 13 "338. Comptage des bits" à partir de zéro
Let Code Day71 À partir de zéro "1496. Traversée de chemin"
Let Code Day 61 "7. Integer Integer" à partir de zéro
Let Code Day 82 "392. Is Subsequence" Partant de zéro
Let Code Day51 "647. Sous-chaînes palindromiques" à partir de zéro
Let Code Day 50 "739. Températures quotidiennes" à partir de zéro
Let Code Day 15 "283. Move Zeroes" à partir de zéro
Soit Code Day14 à partir de zéro "136. Numéro unique"
[Python] Lecture du code source Django Vue à partir de zéro ①
Let Code Day 43 à partir de zéro "5. Le plus long substrat palindromique"
Soit Code Day74 à partir de zéro "12. Integer to Roman"
Let Code Day 42 "2. Add Two Numbers" en partant de zéro
Let Code Day57 À partir de zéro "35. Rechercher Insérer la position"
Soit Code Day47 à partir de zéro "14. Préfixe commun le plus long"
Soit Code Day78 à partir de zéro "206. Liste liée inversée"
Analyse ChIP-seq à partir de zéro
Soit Code Day 44 "543. Diamètre de l'arbre binaire" à partir de zéro
Soit Code Jour 64 à partir de zéro "287. Trouver le numéro en double"
Soit Code Jour 84 à partir de zéro "142. Cycle de liste liée II"
Let Code Day24 À partir de zéro "21. Fusionner deux listes triées"
Laissez Code Day12 partir de zéro "617. Fusionner deux arbres binaires"
Soit Code Day2 à partir de zéro "1108. Defanging an IP Address"
Let Code Day70 À partir de zéro "295. Trouver la médiane à partir du flux de données"
Let Code Day81 "347. Top K éléments fréquents" à partir de zéro
Let Code Day48 Starting from Zero "26. Supprimer les doublons du tableau trié"
Soit Code Day87 à partir de zéro "1512. Nombre de bonnes paires"
Soit Code Day67 à partir de zéro "1486. Opération XOR dans un tableau"
Let Code Day56 À partir de zéro "5453. Somme exécutée de 1d Array"
Let Code Day86 à partir de zéro "33. Recherche dans un tableau trié avec rotation"
Soit Code Day92 à partir de zéro "4. Médiane de deux tableaux triés"
Let Code Day5 À partir de zéro "1266. Durée minimale de visite de tous les points"
Let Code Day 35 "160. Intersection de deux listes liées" à partir de zéro
Let Code Day83 À partir de zéro "102. Traversée de l'ordre au niveau de l'arborescence binaire"
Soit Code Day 40 à partir de zéro "114. Aplatir l'arbre binaire à la liste liée"
Let Code Day 91 "153. Find Minimum in Rotated Sorted Array" à partir de zéro
Let Code Day 29 "46. Permutations" à partir de zéro
Soit Code Day59 à partir de zéro "1221. Fractionner une chaîne en chaînes symétriques"
Let Code Day 11 À partir de zéro "1315. Somme des nœuds avec un grand-parent pair"
Let Code Day6 commençant à zéro "1342. Nombre d'étapes pour réduire un nombre à zéro"
Let Code Day73 À partir de zéro "1491. Salaire moyen excluant le salaire minimum et maximum"
Let Code Day1 commençant à zéro "1389. Créer un tableau cible dans l'ordre indiqué"
Let Code Day10 À partir de zéro "1431. Enfants avec le plus grand nombre de bonbons"
Soit Code Day21 à partir de zéro "448. Rechercher tous les nombres disparus dans un tableau"
Let Code Day 37 À partir de zéro "105. Construire un arbre binaire à partir de la précommande et de la traversée en ordre"
Let Code Day 19 À partir de zéro "121. Meilleur moment pour acheter et vendre des actions"
Let Code Day 27 "101. Symmetric Tree" à partir de zéro
Construction d'environnement explosif Python à partir de zéro (Mac)
Let Code Day 41 "394. Decode String" à partir de zéro
Let Code Day 25 "70. Grimper les escaliers" à partir de zéro
Laissez Code Day69 à partir de zéro "279. Perfect Squares"
Let Code Day 34 à partir de zéro "118. Le triangle de Pascal"
Laissez Code Day85 à partir de zéro "6. Conversion en zigzag"