¿Recuerdas esos molinetes divertidos que soplas y giran y giran? ¡Codifiquemos uno!
Un molinete tendrá el conjunto de personajes \ | / _
dibujando su centro y brazos. Un posible molinete podría verse así:
|
|
|_ ___
___|_|
|
|
|
Pero, ¿qué es un molinete que no gira? ¡No es divertido! Podemos hacerlo girar reorganizando los símbolos:
/
\ /
\ /
\/\
\/\
/ \
/ \
/
El desafío es crear un programa que tome tres enteros y genere un molinete como se especifica a continuación. El primero de ellos es el número de brazos que tiene, el segundo es la longitud de los brazos del molinete, y el tercero es el número de veces que girará un octavo de una revolución en el sentido de las agujas del reloj.
Puede asumir lo siguiente:
- El número de brazos siempre será 0, 1, 2, 4 u 8.
- Todos los brazos estarán igualmente separados entre sí.
La posición inicial del molinete tendrá su centro así:
_ |_|
Si el número de brazos es 1, puede decidir en qué dirección apunta el brazo.
- Si el número de brazos es 2, puede decidir hacer que los brazos apunten vertical u horizontalmente.
Puede escribir un programa completo que reciba información a través de STDIN o argumento de línea de comandos, o una función que reciba información a través de argumentos de función. Su programa debe mostrar una secuencia de salidas que muestre el giro del molinete, cada uno separado por al menos una línea vacía. El centro del molinete no debe moverse más de un espacio. Puede generar tantos espacios iniciales y finales como sea necesario.
Aquí hay unos ejemplos:
0 2 1
_
|_|
/\
\/
1 3 2
|
|
|_
|_|
/
/
/
/\
\/
_ ___
|_|
2 2 0
_ __
__|_|
8 4 1
\ | /
\ | /
\ | /
\|_/____
____|_|
/ |\
/ | \
/ | \
/ | \
| /
\ | /
\ | /
\ |/
____\/\____
\/\
/| \
/ | \
/ | \
/ |
Este es el código de golf, por lo que gana el código más corto. ¡Buena suerte!
1 3 5
y el brazo inicialmente apuntando hacia arriba), se necesitarán espacios en las salidas anteriores para acomodar esto.Respuestas:
Python 2
535 517 473468 bytes¡Ahorró 5 bytes gracias a @Easterly Ink!
Se espera que la entrada esté separada por comas (es decir, numArms, armLength, numRots)
Versión de golf
Versión sin golf
Explicación
Bastante simple cuando se descompone. Primero averigüe qué tan grande de la cuadrícula se requiere, luego trace el cuadrado base o el diamante.
La ubicación inicial, el símbolo y la dirección de cada brazo están codificados para cada uno de los 8 brazos posibles para la base cuadrada y de diamante. Entonces, dibujarlos es bastante fácil.
Para rotar todo, simplemente cambio entre la base cuadrada y la base de diamante, luego incremento cada uno de los brazos, girándolos una vez en sentido horario.
fuente
' ' for
a' 'for'
,] for
to]for'
, 8 for to8for'
,print ''
toprint''
.