¡Función de tablero de ajedrez girada mágica hecha en Python!

Oct 21 2020

Aquí hay un rompecabezas para todos los programadores de Python:

Definí una función que es así:

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

Estos son los resultados de llamar a la función con diferentes números:


checkers(1)

Salida:

_|
_|

checkers(2)

Salida:

  _|  
_|_|_|
  _|  

checkers(3)

Salida:

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

checkers(4)

Salida:

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

checkers(5)

Salida:

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

Espero que entiendas lo esencial de lo que hace la función, pero si no:
cualquier número que pasemos entre corchetes, imprimirá un tablero de ajedrez girado 45 grados, con el número que pasamos como cada una de sus dimensiones.

Para su desafío, descubra cómo magicse define.

No tiene que definirlo de la misma manera que lo hice yo, pero solo para una pequeña pista sobre una forma de definirlo, cada guión bajo entre los dos corchetes representa un carácter, sin espacios en blanco innecesarios ( me encanta PEP-8 , no me malinterpretes ).

Respuestas

4 AxiomaticSystem Oct 21 2020 at 08:34

De un compañero abusador de listcomps, la magia es

" "*(num-i-1)+"_|"*(2*i+1)+" "*(num-i-1)for i in range(num)
Es una lista de las filas de la mitad superior.

La pista es

magic (1) no es cuadrado: esto ocurre porque num-2 es -1 y, por lo tanto, lo que sería todo menos la última fila en orden inverso se convierte en la última (y única) fila

5 Bubbler Oct 21 2020 at 08:54

49 bytes, respetando los espacios del lado derecho:

('_|'*(2*i+1)).center(num*4-2)for i in range(num)
¡Pruébelo en línea!

Dicho esto, no es un acertijo muy interesante ya que las tareas de formateo de cadenas son comunes en la programación regular, excepto el poco de inferir a qué se magicdebe evaluar. Espero que se te ocurran más interesantes más tarde :)