La gestión del inventario de Minecraft es difícil. Tienes 17 diamantes, pero necesitas 7 para crear una mesa de encantamiento, un pico y una espada. ¿Los recoges y haces clic derecho 7 veces? ¿O haces clic derecho una vez y haces clic derecho dos veces y tomas el 7 izquierdo? ¡Es muy confuso!
para aquellos de ustedes que ahora están confundidos, no se preocupen, lo explicaré todo en un segundo
Desafío
Dado el tamaño de una pila de artículos y la cantidad deseada, determine la menor cantidad de clics para obtener esa cantidad. Solo necesita manejar hasta 64 para ambas entradas y puede asumir que tiene ranuras de inventario infinitas. No puedes usar el truco de arrastrar para distribuir.
Definiciones
El inventario es una colección de máquinas tragamonedas donde puede almacenar artículos.
Una ranura es un espacio de almacenamiento en su inventario donde puede colocar hasta un tipo de artículo.
Una pila es una cantidad de elementos colocados en el mismo grupo. Para los propósitos de este desafío, una pila es simplemente un montón de artículos en el mismo lugar (ignore el tamaño de la pila)
El cursor es tu cosita puntiaguda. Ese cursor Puede tener elementos "en él"; en otros términos, si hizo clic en una ranura y recogió elementos, los elementos que recogió están "en el cursor" hasta que los suelte.
Especificaciones
Hay cuatro situaciones posibles. O tiene un elemento en el cursor o no, y o bien hizo clic con el botón izquierdo o derecho.
Si no tiene un elemento en el cursor y hace clic con el botón izquierdo en una ranura, recoge toda la pila.
Si no tiene un elemento en su cursor y hace clic derecho en una ranura, recoge la mitad de la pila, redondeada.
Si tiene un elemento en el cursor y hace clic con el botón izquierdo en una ranura, coloca todos los elementos en esa ranura. (Para todos los jugadores de Minecraft, no tendrás> 64 elementos para este desafío y todos son apilables en 64, y solo tienes un tipo, por lo que el intercambio de elementos no se aplica aquí)
Si tiene un elemento en el cursor y hace clic derecho en una ranura, coloca un elemento en esa ranura.
Entonces, comienza con todos los elementos proporcionados (primera entrada o segunda; puede elegir el orden) en una ranura, y desea terminar con la cantidad deseada (otra entrada) en su cursor.
Veamos un ejemplo. Digamos que comienza con 17 elementos y desea 7. Primero, haga clic derecho en la pila, lo que significa que ha recogido 9 y hay 8 en esa ranura. Luego, si vuelve a hacer clic derecho en la pila, vuelve a colocar un elemento en la ranura, dejándolo con 8 y la ranura con 9. Finalmente, vuelve a hacer clic derecho y tiene 7 y la ranura tiene 10. Por lo tanto, devolvería 3
(el número de clics).
Si logra hacer clic fuera de mi campo de golf, dígame y editaré el ejemplo: P
Casos de prueba
Estos se generan manualmente, así que dígame si hay algún error. Hago gestión de inventario haciendo clic derecho con jitter, así que no tengo experiencia con una gestión de inventario óptima: P
Given, Desired -> Output
17, 7 -> 3
64, 8 -> 5
63, 8 -> 5
10, 10 -> 1
10, 0 -> 0 # note this case
25, 17 -> 7
Explicaciones
Este desafío puede ser complicado para los jugadores que no son de Minecraft, no tengo idea. Aquí hay algunas explicaciones.
64, 8 -> 5
porque recoge 32 utilizando el botón derecho, colóquelo, recoja 16, colóquelo y luego levante 8.
63, 8 -> 5
por la misma razón.
25, 17 -> 7
porque recoges 13, lo colocas hacia abajo, recoges 6 del resto 12, colocas 2 nuevamente en la pila de restos y luego colocas el 4 en el cursor dentro del 13, y luego los recoges.
Reglas
- Se aplican lagunas estándar
- Puedes suponer que
0 <= desired <= given <= 64
- Puede tomar la entrada en cualquier orden y hacer E / S en cualquier formato razonable
0,[n]
, puede transición: (1) a partir de 0,[a,b,...]
a a,[b,...]
, b,[a,...]
, ceil(a/2),[floor(a/2),b,...]
, o ceil(b/2),[a,floor(b/2),...]
; o (2) a partir de x,[a,b,...]
( x>0
) para x-1,[a+1,b,...]
, x-1,[a,b+1,...]
, x-1,[a,b,...,1]
, 0,[a+x,b,...]
, 0,[a,b+x,...]
, 0,[a,b,...,x]
. El desafío es, entonces, encontrar las transiciones mínimas posibles desde 0,[g]
donde se da g hasta t,L
dónde t
está el objetivo deseado y ¿ L
hay alguna lista?