Lembra-se daqueles cata-ventos divertidos que você assopra e eles giram sem parar? Vamos codificar um!
Um cata-vento terá o conjunto de caracteres \ | / _
desenhando seu centro e braços. Um possível cata-vento poderia ser assim:
|
|
|_ ___
___|_|
|
|
|
Mas o que é um cata-vento que não gira? Não é divertido! Podemos fazê-lo girar reorganizando os símbolos:
/
\ /
\ /
\/\
\/\
/ \
/ \
/
O desafio é criar um programa que use três números inteiros e produza um cata-vento, conforme especificado abaixo. O primeiro deles é o número de braços que possui, o segundo é o comprimento dos braços do cata-vento e o terceiro é o número de vezes que ele gira um oitavo de uma rotação no sentido horário.
Você pode assumir o seguinte:
- O número de armas sempre será 0, 1, 2, 4 ou 8.
- Todos os braços serão igualmente espaçados um do outro.
A posição inicial do cata-vento terá seu centro assim:
_ |_|
Se o número de braços for 1, você pode decidir em qual direção o braço aponta.
- Se o número de braços for 2, você pode decidir apontar os braços na vertical ou na horizontal.
Você pode escrever um programa completo que receba entrada por meio de STDIN ou argumento da linha de comando ou uma função que aceita entrada por argumentos de função. Seu programa deve mostrar uma sequência de saídas que mostra a rotação do cata-vento, cada uma separada por pelo menos uma linha vazia. O centro do cata-vento não deve se mover em mais de um espaço. Você pode gerar quantos espaços iniciais e finais forem necessários.
aqui estão alguns exemplos:
0 2 1
_
|_|
/\
\/
1 3 2
|
|
|_
|_|
/
/
/
/\
\/
_ ___
|_|
2 2 0
_ __
__|_|
8 4 1
\ | /
\ | /
\ | /
\|_/____
____|_|
/ |\
/ | \
/ | \
/ | \
| /
\ | /
\ | /
\ |/
____\/\____
\/\
/| \
/ | \
/ | \
/ |
Isso é código de golfe, então o código mais curto vence. Boa sorte!
1 3 5
e o braço inicialmente apontando para cima), os espaços precisarão ser anexados nas saídas anteriores para acomodar isso.Respostas:
Python 2
535 517 473468 bytesGuardado 5 bytes graças a @Easterly Ink!
É esperado que a entrada seja separada por vírgula (ou seja, numArms, armLength, numRots)
Versão Golfed
Versão Ungolfed
Explicação
Muito simples quando está quebrado. Primeiro, calcule o tamanho da grade necessária e plote o quadrado base ou o diamante.
A localização, símbolo e direção de cada braço são codificados para cada um dos 8 braços possíveis para a base quadrada e de diamante. Então, desenhá-los é fácil.
Para girar tudo, eu simplesmente alterno entre a base quadrada e a base de diamante e, em seguida, incremento cada um dos braços, girando-os no sentido horário uma vez.
fonte
' ' for
para' 'for'
,] for
para]for'
, 8 para para8for'
,print ''
paraprint''
.