Eres chef y te encanta cocinar con tus especias, pero recientemente te ha gustado organizar tus especias en función de la frecuencia con que las usas. Pero no tiene tiempo para escribir cuando usó su especia por última vez. Simplemente, intercambias y mueves especias, y esto parece hacer el truco.
Pero, por supuesto, eres chef y eso significa que tienes algunos cocineros contigo. Decides decirles las simples reglas de compromiso con tus especias.
Si recientemente usó una especia, muévala hacia arriba una en el estante de especias
Si no usó ninguna
[]
especie , por ejemplo , la lista de movimientos vacía, entonces la lista de especias no se ve afectada.Puede poner cualquier especia en mi porta especias, pero si la usa, asegúrese de moverla.
La lista puede contener cualquier cosa. Pero debido a que estas son especias con las que estamos trabajando. Se prefiere que use nombres de especias.
Las especias deben ser únicas. Demasiadas de las mismas especias estropean el caldo ... o como dice ese dicho
Se aplican las reglas normales de código de golf.
Ejemplo de uso de orégano una y otra vez.
pepper pepper pepper pepper oregano
paprika paprika paprika oregano pepper
salt salt oregano paprika paprika
cumin oregano salt salt salt
oregano cumin cumin cumin cumin
Tarea
Ingrese una lista de especias y una lista de las especias que se usaron, luego envíe la lista final.
Ejemplo
Entrada
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Salida
[salt, pepper, paprika, cumin, oregano]
Cómo se ve esto
pepper pepper pepper pepper pepper pepper salt
paprika paprika paprika paprika paprika salt pepper
salt salt salt cumin salt paprika paprika
cumin oregano cumin salt cumin cumin cumin
oregano cumin oregano oregano oregano oregano oregano
Entrada
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Salida
[salt, pepper, paprika, oregano, cumin]
Respuestas:
Casco ,
1514 bytesLas entradas son listas de cadenas (también funciona en otros tipos de listas). Pruébalo en línea!
-1 byte gracias a H.PWiz
Explicación
Tengo que repetir
x
infinitamente, ya que de lo contrario la lista perdería su último elemento cuando usemos la especia más alta. Sería suficiente agregar un 1 al final, pero la repetición toma menos bytes. Una mejor manera sería rotar la lista en lugar de soltar su primer elemento, pero Husk no tiene nada incorporado para eso.fuente
Σm
esṁ
por un byte.Haskell , 48 bytes
foldl(?)
es una función anónima que toma dos argumentos de lista y devuelve una lista, con todos los elementos del mismo tipo (Eq
-comparable).Usar como
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Pruébalo en línea!
foldl(?) s m
comienza con la lista (estante de especias)s
y la combina con cada elemento (especia)m
en orden, utilizando el operador?
.s?n
usa la especian
del estantes
y devuelve el estante resultante.s
tiene al menos dos elementos,?
verifica si el segundo es igual an
, y si es así, cambia los dos primeros elementos. Si no es igual,?
mantiene el primer elemento fijo y recurre al resto.s
tiene como máximo un elemento, lo?
devuelve sin cambios.fuente
Chef ,
875843 bytes-32 bytes gracias a Jonathan Allan al eliminar
the
donde no creo que funcione.Chef no tiene tipos de cadena, por lo que los ingredientes son enteros positivos. 0 se utiliza para separar la lista de inicio de los ingredientes utilizados y para finalizar la lista de ingredientes utilizados. Vea el enlace TIO para ver un ejemplo.
Explicación del pseudocódigo:
Pruébalo en línea!
fuente
Did you pour the contents of the mixing bowl into the baking dish before serving?
que suena completamente como un comentario que iría a la cocina SE y no aquí: P lol (también una pregunta muy extraña para cocinar si me preguntas: P)JavaScript, 61 bytes
Formato de entrada:
Salida:
Mostrar fragmento de código
fuente
Python 2 ,
727169 bytesNueva respuesta, en el espíritu de mi intento original.
Pruébalo en línea!
Otra solución:
Python 2 , 69 bytes
Pruébalo en línea!
fuente
print(r)
->print r
?Python 2 , 80 bytes
Pruébalo en línea!
fuente
r[i-1:i+1]
.return
porprint
puede guardar otro byte .Java 8,
878676 bytesToma dos entradas como
ArrayList<String>
y modifica la primera Lista en lugar de devolver una nueva para guardar bytes.-10 bytes gracias a @Nevay .
Explicación:
Pruébalo aquí
fuente
a->b->b.forEach(x->{int i=a.indexOf(x);a.set(i,a.set(i>0?i-1:i,a.get(i)));});
05AB1E ,
2018 bytesPruébalo en línea!
Explicación
fuente
C #,
1251178179 bytesPruébalo en .NET Fiddle
golfed 36 bytes gracias a raznagul
fuente
Array.IndexOf
. Pero hay varias formas de acortar la respuesta: 1. Use unforeach
bucle en lugar delfor
bucle. 2. Sic
es un enList<string>
lugar destring[]
usted puede usar directamentec.IndexOf
. 3. Comoc
está modificado en su lugar, no necesita devolverlo.05AB1E , 16 bytes
Pruébalo en línea!
fuente
Mathematica, 52 bytes
pero es mi primera publicación aquí, así que sé amable si se cuenta incorrectamente :)
Y un ejemplo:
fuente
CJam , 18 bytes
Pruébalo en línea!
fuente