Função de tabuleiro de damas girado mágica feita em python!
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
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
49 bytes, respeitando os espaços do lado direito:
Experimente online!('_|'*(2*i+1)).center(num*4-2)for i in range(num)
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 :)