Este desafío está relacionado con Voltear panqueques .
Es posible que haya oído hablar de la clasificación de panqueques , donde una pila de panqueques se ordena por tamaño insertando una espátula en la pila y volteando todos los panqueques por encima de la espátula, hasta que los panqueques se clasifiquen de menor a mayor en el plato. El problema del panqueque quemado es ligeramente diferente. Todos los panqueques ahora tienen un lado quemado, y el lado quemado de cada panqueque debe mirar hacia el plato una vez que se complete la clasificación.
Por ejemplo, dada la siguiente pila (tamaño del panqueque a la izquierda. 0
Significado con el lado quemado hacia abajo y 1
significado con el lado quemado hacia arriba a la derecha):
1 0
3 1
2 1
Puede voltear toda la pila para obtener 20 30 11
, voltear los dos primeros para obtener 31 21 11
y voltear toda la pila nuevamente para obtener 10 20 30
, una pila ordenada de panqueques quemados. Esta secuencia de movimientos, flip 3, flip 2, flip 3, podría representarse como 3 2 3
.
El reto
- Dada una variedad de tamaños de panqueques (no necesariamente únicos) y sus orientaciones, genera una secuencia válida de clasificación de panqueques quemados, es decir, una secuencia de volteos que lleva a que la pila de panqueques se clasifique de menor a mayor con los lados quemados hacia abajo.
- La entrada y la salida pueden tener cualquier formato correcto con separadores, pero especifique qué formatos usa y establezca qué extremo de su formato de entrada es la parte superior de la pila (TOS).
- Voltear cero panqueques está permitido.
- Se permite mezclar separadores en la entrada / salida.
Casos de prueba
Para todos los siguientes casos de prueba, la entrada es una lista y la salida es una cadena separada por espacios, y TOS está a la izquierda.
[[1, 0], [3, 1], [2, 1]]
"3 2 3"
[[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]]
"5 3 4 1 3 2 1"
[[5, 1], [3, 0], [3, 0], [1, 1]]
"4 3 2 3"
Como siempre, si algo no está claro o es incorrecto, hágamelo saber en los comentarios. ¡Buena suerte y buen golf!
0
permitido en la lista de salida?CJam (37 bytes)
La entrada es una matriz en formato CJam en stdin; La salida es una lista separada por nueva línea de longitudes de volteo en stdout. La parte superior de la pila está en el índice
0
;0
indica el lado quemado hacia arriba e1
indica el lado quemado hacia abajo.Demostración en línea
Disección
La salida siempre es
3n
larga, donden
está el número de panqueques. Primero volteamos el panqueque restante más grande hacia arriba; entonces, si está quemada, volteamos ese panqueque; y luego lo volteamos al fondo y repetimos como si la pila de panqueques fuera uno más corta.fuente
Ruby,
1019593 bytesNo muy golfista, solo quería hacer una variante de tipo bogo. Es una función anónima que toma una matriz de matrices e imprime volteos aleatorios en stdout hasta que se ordenan los panqueques.
Por ejemplo, puede asignarlo
f
y decirf.call [[1, 0], [3, 1], [2, 1]]
-5 bytes de @Jordan con el brillante uso de
rassoc
-2 bytes de @ Sherlock9
fuente
a.all?{...}
con!a.rassoc(1)
.r
)assoc
antes, pero pensar en ello, probablemente sea útil en muchos problemas en este sitio, creo que debería ir en la publicación de consejos de golf de Ruby. De todos modos, gracias :) Yo también era capaz de matar a otro byte a pesar de la aplicación de la ley deMorgans y reemplazaruntil
conwhile
.b
solo es0
o1
,1-b
también funcionaría y ahorraría dos bytes.