Função de tabuleiro de damas girado mágica feita em python!

Oct 21 2020

Aqui está um quebra-cabeça para todos os programadores de Python:

Eu defini uma função mais ou menos assim:

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

Aqui estão os resultados da chamada da função com números diferentes:


checkers(1)

Resultado:

_|
_|

checkers(2)

Resultado:

  _|  
_|_|_|
  _|  

checkers(3)

Resultado:

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

checkers(4)

Resultado:

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

checkers(5)

Resultado:

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

Espero que você obtenha a essência do que a função faz, mas se não:
Qualquer número que passarmos para os colchetes, ele imprimirá um tabuleiro de xadrez girado 45 graus, com o número que passamos em cada uma de suas dimensões.

Para o seu desafio, descubra como magicse define.

Você não tem que defini-lo da mesma maneira que eu fiz, mas apenas para uma pequena dica sobre uma maneira de defini-lo, cada sublinhado entre os dois colchetes representa um caractere, sem espaços em branco desnecessários ( eu adoro PEP-8 , não me interpretem mal ).

Respostas

4 AxiomaticSystem Oct 21 2020 at 08:34

De um colega abusador de listcomps, a magia é

" "*(num-i-1)+"_|"*(2*i+1)+" "*(num-i-1)for i in range(num)
É uma lista das linhas na metade superior.

A dica é

magic (1) não sendo quadrado: isso ocorre porque num-2 é -1 e então o que seria tudo menos a última linha na ordem reversa torna-se a última (e única) linha

5 Bubbler Oct 21 2020 at 08:54

49 bytes, respeitando os espaços do lado direito:

('_|'*(2*i+1)).center(num*4-2)for i in range(num)
Experimente online!

Dito isso, não é um quebra-cabeça muito interessante, já que as tarefas de formatação de string são comuns na programação normal, exceto a parte de inferir o que o magicdeve avaliar. Espero que você venha com outros interessantes mais tarde :)