Existen muchos tipos diferentes de juegos de trenes, que van desde pistas de madera como Brio, hasta el control totalmente digital de pequeñas réplicas metálicas perfectas de trenes reales, pero todos requieren un diseño de pista, idealmente usando la mayor cantidad de piezas posible.
Por lo tanto, su tarea es determinar si, dada la entrada de las piezas disponibles, es posible construir un circuito cerrado completo utilizando todos los elementos, y si no, cuántas piezas quedarán del máximo circuito posible.
Como se trata de un conjunto de trenes simplificado, solo hay 3 elementos: curva grande, curva pequeña y recta. Todos estos se basan en una cuadrícula cuadrada:
- "Big Curve" es una esquina de 90 grados, que cubre 2 unidades en cada dimensión
- "Little Curve" es una esquina de 90 grados, que cubre una unidad en cada dirección
- "Recto" es un elemento recto, 1 unidad de largo
Esto significa que el circuito mínimo posible está formado por 4 pequeñas curvas: es un círculo, de radio 1 unidad. Esto puede extenderse agregando pares de elementos rectos para formar varios óvalos. Hay otros circuitos posibles agregando más curvas o mezclando los tipos de curva.
Este conjunto de trenes no incluye cruces ni métodos para que las pistas se crucen, por lo que no es válido que dos elementos se conecten al mismo extremo de otro elemento (sin formaciones Y) o se crucen entre sí (sin formaciones X) . Además, es un conjunto de trenes, por lo que cualquier formación que no permita que un tren pase no es válida: los ejemplos incluyen rectas que se encuentran en ángulos de 90 grados (siempre debe haber una curva entre rectas perpendiculares) y curvas que se encuentran en ángulos de 90 grados (las curvas deben fluir).
También desea utilizar tantas piezas como sea posible, ignorando de qué tipo son, por lo que siempre optará por un circuito que tenga más bits. Finalmente, solo tiene un tren, por lo que cualquier solución que dé como resultado múltiples circuitos es inaceptable .
Entrada
Ya sea una matriz de tres enteros, todos mayores o iguales a 0, correspondientes a la cantidad de curvas grandes, curvas pequeñas y rectas disponibles, o parámetros pasados a su programa, en el mismo orden.
Salida
Un número correspondiente al número de piezas sobrantes cuando se construye el circuito máximo posible para los elementos proporcionados.
Datos de prueba
Minimal circuit using big curves
Input: [4,0,0]
Output: 0
Slightly more complicated circuit
Input: [3,1,2]
Output: 0
Incomplete circuit - can't join
Input: [3,0,0]
Output: 3
Incomplete circuit - can't join
Input: [3,1,1]
Output: 5
Circuit where big curves share a centre
Input: [2,2,0]
Output: 0
Bigger circuit
Input: [2,6,4]
Output: 0
Circuit where both concave and convex curves required
Input: [8,0,0] or [0,8,0]
Output: 0
Circuit with left over bit
Input: [5,0,0] or [0,5,0]
Output: 1
Notas
- 2 rectas y una pequeña curva son equivalentes a una curva grande, pero use más piezas, por lo que son preferibles, nunca debería ser una situación en la que se deje esta combinación, si hay curvas grandes en el circuito
- Por lo general, se pueden intercambiar 4 pequeñas curvas por 4 rectas, pero no si esto haría que el circuito se intersecara
- El conjunto de trenes también está idealizado: los elementos de la vía ocupan los anchos mostrados, por lo que es válido que las curvas pasen a través de un único cuadrado de la cuadrícula sin cruzarse, en algunos casos. La cuadrícula solo define las dimensiones del elemento. En particular, se pueden colocar dos curvas grandes para que el cuadrado de la cuadrícula en la parte superior izquierda del diagrama de ejemplo también sea el cuadrado inferior derecho de otra curva grande que se ejecuta de izquierda a arriba (con el diagrama que muestra una que se ejecuta de derecha a abajo)
- Una pequeña curva puede caber en el espacio vacío debajo de una gran curva (cuadrícula inferior derecha arriba). Una segunda gran curva también podría usar ese espacio, desplazada una a través y otra hacia abajo desde la primera
- Una curva pequeña no puede caber en el mismo espacio de la cuadrícula que el exterior de una curva grande, principalmente porque no hay forma de conectarse a ella que no se cruce ilegalmente
[5,0,0]
o[0,5,0]
sería1
. ¿Es eso correcto? ¿Podría agregar un caso de prueba?[8,0,0]
, con dos elementos de 2x2 superpuestos en el centro de la cuadrícula?Respuestas:
[JavaScript (Node.js)], 1220 bytes
Pruébalo en línea!
Nota: La entrada es en realidad la variable q al inicio. [2,6,4] también llevará bastante tiempo ya que esta es una solución de fuerza bruta sin optimizaciones.
Realmente hice esto porque no ha sido respondido en más de un año y tenía curiosidad de saber si era posible.
Código original
Primero debo incluir un gráfico de los mosaicos que utilicé.
Lo siento si la redacción es difícil de leer, no estoy acostumbrado a explicar cómo funciona mi código.
PD: Realmente también hice algunas funciones para dibujar los mapas en un png, pero por supuesto se eliminaron para ahorrar al menos algo de espacio.
fuente
p[a.n]-=1
lugar dep[a.n]--
?q
así no es un método de entrada permitido . Lo más común es convertirlo en un argumento de función o leerlo desde stdin.