Fonction de damier tourné magique en python!

Oct 21 2020

Voici un casse-tête pour tous les programmeurs python:

J'ai défini une fonction qui va comme ceci:

def checkers(num):
    magic = [_____________________________________________________________]
    print('\n'.join(magic + magic[num-2::-1]))

Voici les résultats de l'appel de la fonction avec différents nombres:


checkers(1)

Production:

_|
_|

checkers(2)

Production:

  _|  
_|_|_|
  _|  

checkers(3)

Production:

    _|    
  _|_|_|  
_|_|_|_|_|
  _|_|_|  
    _|    

checkers(4)

Production:

      _|      
    _|_|_|    
  _|_|_|_|_|  
_|_|_|_|_|_|_|
  _|_|_|_|_|  
    _|_|_|    
      _|      

checkers(5)

Production:

        _|        
      _|_|_|      
    _|_|_|_|_|    
  _|_|_|_|_|_|_|  
_|_|_|_|_|_|_|_|_|
  _|_|_|_|_|_|_|  
    _|_|_|_|_|    
      _|_|_|      
        _|        

J'espère que vous comprenez l'essentiel de ce que fait la fonction, mais sinon:
quel que soit le nombre que nous passons entre parenthèses, il imprimera un damier tourné à 45 degrés, avec le numéro que nous avons passé comme chacune de ses dimensions.

Pour votre défi, découvrez comment magicest défini.

Vous n'êtes pas obligé de le définir de la même manière que moi, mais juste pour un petit indice sur une façon de le définir, chaque trait de soulignement entre les deux crochets représente un caractère, sans espaces inutiles ( j'adore PEP-8 , ne vous méprenez pas ).

Réponses

4 AxiomaticSystem Oct 21 2020 at 08:34

D'un autre abuseur de listcomps, la magie est

" "*(num-i-1)+"_|"*(2*i+1)+" "*(num-i-1)for i in range(num)
C'est une liste des lignes dans la moitié supérieure.

L'indice est

magic (1) n'étant pas carré: cela se produit parce que num-2 est -1 et donc ce qui serait tout sauf la dernière ligne dans l'ordre inverse devient la dernière (et seule) ligne

5 Bubbler Oct 21 2020 at 08:54

49 octets, en respectant les espaces du côté droit:

('_|'*(2*i+1)).center(num*4-2)for i in range(num)
Essayez-le en ligne!

Cela dit, ce n'est pas un casse-tête très intéressant car les tâches de formatage de chaînes sont courantes dans la programmation régulière, à l'exception du peu de déduction à quoi magicdoit s'évaluer. J'espère que vous en trouverez d'autres plus intéressants plus tard :)