Tarea:
Considere el problema: "dado un tablero de ajedrez que falta un cuadrado, córtelo en 21 L-triominoes". Existe una prueba constructiva bien conocida de que esto se puede hacer para cualquier tamaño de tablero de ajedrez cuadrado que sea una potencia de dos. Funciona dividiendo el tablero de ajedrez en un tablero de ajedrez más pequeño con el agujero y un gran triomino y luego observando que ese triomino se puede cortar en cuatro triominoes de forma recursiva.
En esta tarea, debe cortar un tablero de ajedrez de 8x8 en triominoes en forma de L y luego colorearlos con cuatro colores para que no haya dos triominoes adyacentes que tengan el mismo color.
Especificación:
Su entrada es la posición del agujero, dada como un par de enteros. Puede elegir cuál es el índice de columna y cuál es el índice de fila. Puede elegir si cada uno comienza en 0 o en 1 y lejos de qué esquina aumentan. Puede requerir A..H como la primera coordenada en lugar de 0..7 o 1..8. También puede aceptar ambas coordenadas agrupadas en un solo número entero 0..63 o 1..64 en orden lexicográfico (fila mayor o columna mayor, de izquierda a derecha o de derecha a izquierda, de arriba a abajo o de abajo a arriba). Puede escribir un programa completo o una función.
Puede generar el mosaico como ASCII, como ASCII coloreado o como primitivas gráficas. Si elige la salida ASCII, puede elegir cuatro caracteres ASCII imprimibles para representar los cuatro colores. Si elige ASCII de color, puede elegir cuatro caracteres ASCII imprimibles o solo un carácter que no sea el espacio. El hoyo debe estar representado por el carácter de espacio. Si uno de tus personajes es el personaje espacial, ningún triomino adyacente al hoyo o en el borde del tablero de ajedrez puede ser de este color.
Si elige color ASCII o salida gráfica, puede elegir cuatro colores entre # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF o sus equivalentes más cercanos disponibles en su entorno. Si elige la salida gráfica, sus primitivas gráficas deben rellenarse con cuadrados de al menos 32x32 píxeles de tamaño y estar separadas por no más de dos píxeles de otro color. Si lo anterior excede la resolución de pantalla de su entorno, el requisito de tamaño mínimo se reduce al tamaño cuadrado más grande que todavía cabe en la pantalla.
Puede elegir cualquier mosaico válido del tablero de ajedrez dado. Puede elegir cuatro colores del mosaico que elija. Su elección de cuatro colores debe ser la misma en todas las salidas, pero no es necesario que use todos los colores en cada salida.
Ejemplos:
Salida posible para entrada = [0, 0] (esquina superior izquierda)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Otra salida posible del mismo programa (input = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
También puede producir un programa diferente para la entrada de "D1" (tenga en cuenta la orientación no estándar pero permitida del tablero de ajedrez),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA
fuente
Respuestas:
JavaScript (ES6),
184 ... 171163 bytesToma la entrada como0 ≤ x ≤ 7 0 ≤ y≤ 7 0 1 2
(x)(y)
, con y . Salidas como una cadena con 3 colores (marcados como , y ).Pruébalo en línea!
Método
Trabajamos en una matriz de triominoes:4×4
Cada triomino es uno de:
La configuración inicial de la matriz es la siguiente:
Alternamos los primeros 2 colores como lo haríamos en cualquier tablero de ajedrez, lo que da:
Los siguientes pasos son:
Por ejemplo, suponiendo que el agujero esté ubicado en , esto da:(3,0)
Y en ese caso, la matriz final es:
Comentado
Salida gráfica
Haga clic en la imagen para establecer la posición del agujero.
Mostrar fragmento de código
fuente
Carbón , 78 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Salidas con
#$%
caracteres. Explicación:Ingrese las coordenadas del cuadrado en blanco.
Salida de una cadena comprimida. Contiene nuevas líneas, por lo que para evitar interrumpir el flujo de esta explicación, encontrará la cadena al final de la respuesta.
Si cualquiera de las coordenadas es mayor que
3
entonces, recuerde ese hecho y reste la coordenada de 7.Salte al
%
cuadrado de%
s superior izquierdo más cercano y sobrescríbalo con a#
o$
según corresponda. (Pero esto se sobrescribirá con el espacio en blanco si ya estaba en este cuadrado).Deje en blanco el cuadrado en las coordenadas reducidas y luego refleje la salida según sea necesario para colocar el blanco en la posición original.
Traté de comenzar con el cuadrado de
%
s en el centro y llegar a las coordenadas deseadas, pero eso tomó 90 bytes.fuente