Cualquier hexágono regular puede ser embaldosado con diamantes, por ejemplo así (robado de esta pregunta ):
______
/_/_/\_\
/_/\_\/\_\
/\_\/_/\/_/\
\/_/\_\/_/\/
\_\/_/\_\/
\_\_\/_/
Consideraremos lo anterior como un mosaico de tamaño 1 (ya que los lados de los diamantes están hechos de uno / o \ cada uno). El mismo mosaico del tamaño 2 se vería así:
____________
/ / /\ \
/___/___/ \___\
/ /\ \ /\ \
/___/ \___\/ \___\
/\ \ / /\ / /\
/ \___\/___/ \/___/ \
\ / /\ \ / /\ /
\/___/ \___\/___/ \/
\ \ / /\ \ /
\___\/___/ \___\/
\ \ \ / /
\___\___\/___/
Su tarea es rotar las inclinaciones de diamantes en un múltiplo de 60 grados. El mosaico de diamantes en la entrada puede ser de cualquier tamaño (y el tamaño no se especifica explícitamente en la entrada). Pero siempre sería un mosaico válido, y todos los lados del hexágono tendrían la misma longitud.
Estos son los ejemplos anteriores rotados 60 grados en sentido horario:
______
/_/\_\_\
/\_\/_/\_\
/\/_/\_\/_/\
\/\_\/_/_/\/
\/_/\_\_\/
\_\/_/_/
____________
/ /\ \ \
/___/ \___\___\
/\ \ / /\ \
/ \___\/___/ \___\
/\ / /\ \ / /\
/ \/___/ \___\/___/ \
\ /\ \ / / /\ /
\/ \___\/___/___/ \/
\ / /\ \ \ /
\/___/ \___\___\/
\ \ / / /
\___\/___/___/
La entrada es un entero no negativo y un mosaico de diamantes. Su programa (o función) debe rotarlo por el entero * 60 grados. Usted decide si gira en sentido horario o antihorario, siempre que sea consistente. Tanto la entrada como la salida no deben tener espacios iniciales o finales adicionales.
Este es el código de golf. El código más corto gana.
Preguntas relacionadas:
fuente
Respuestas:
Pyth, 81 bytes
Pruébalo en línea
Gira en sentido antihorario.
Cada rotación de 60 ° se realiza utilizando el siguiente algoritmo. Suponga que la entrada es un hexágono de orden k , por lo que tiene 2⋅ k + 1 filas y 4⋅ k columnas. Para encontrar el carácter girado en la fila i columna j , deje
Entonces el carácter de salida es
\
, si la entrada tiene/
en la fila ( u + 1) / 2 columna ( v + 1) / 2; más/
, si la entrada tiene_
en la fila u / 2 columna v / 2 o en la fila u / 2 columna ( v + 2) / 2; más_
, si la entrada tiene una\
fila ( u + 2) / 2 columna v / 2 o una fila ( u + 1) / 2 columna ( v - 1) / 2; más(No contamos caracteres en índices de medio entero).
fuente
\
s, son solo las_
que debe verificar en ambos lugares.\
s, pero es posible que tengas que sacar dos_
s para cada uno\
.JavaScript (ES6),
452356315 bytesDonde
\n
representa el carácter literal de nueva línea. Editar: ahorré 96 bytes al darme cuenta de que mi algoritmo no necesita saber la cantidad y el tamaño de los diamantes por separado, además de algunos campos de golf menores que me perdí la primera vez. Ahorré 41 bytes al reorganizar el código para que el destino sea siempre el mismo par de caracteres, además de un pequeño golf que me perdí al convertir a mi algoritmo anterior.Mostrar fragmento de código
Explicación: Considera cada par de caracteres de salida, lo que podría ser
__
,/_
,_\
,/
o\
, la comprobación de los caracteres apropiados en la entrada que se asignan a los caracteres de salida. Sin golf:fuente