¿No odias cuando no puedes recordar cómo crear algo en Minecraft? Bueno, ¡es hora de remediar eso!
Tarea
¡Su tarea es tomar una entrada, ya sea como una lista 1D o 2D y dar salida a qué elemento es el resultado de la tabla de elaboración!
Entrada
Puede tomar la entrada como una cadena o una lista de longitud 9
o una matriz anidada 2D.
Si toma la entrada como ...
Cuerda
Cada elemento de la tabla es 1 carácter en el carácter ASCII imprimible ( 0x20
a 0x7E
). Para representar un espacio vacío, utiliza un -
eg WWW-W-WWW
sería lo mismo que una mesa de fabricación como
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
También puede tomar la entrada como una cadena multilínea siempre que se conserven todos los espacios, p. Ej.
WWW
W
WWW
Matriz 1D
Tomaría la entrada como una matriz de caracteres donde los espacios vacíos en la tabla de creación serían un carácter vacío, por ejemplo, la tabla anterior sería ['W','W','W','','W','','W','W','W']
Matriz 2D
Esta vez, cada lista representa una línea en la mesa de trabajo, donde un espacio vacío es un carácter vacío, por ejemplo [['W','W','W'],['','W',''],['W','W','W']]
Puede suponer que la entrada siempre corresponderá a un elemento que se puede crear, y si usa la entrada de matriz, puede reemplazar el carácter vacío con cualquier carácter que no se use como nombre abreviado.
Salida
La salida será el elemento creado a partir de la entrada, en cualquier forma que desee, siempre que sea obvio lo que significa. (Personalmente, usaría mis abreviaturas de 1 letra de los artículos)
Ingredientes
Para este desafío, wood
significa tablones de madera, no troncos de madera.
Solo tienes que manejar los elementos más comunes al crear. Estos son los ingredientes para la elaboración, pero también pueden ser productos de elaboración. La receta de elaboración sigue el formato xxxxxxxxx
como la entrada de cadena anterior. Si un artículo no se puede crear, ---------
se coloca en su lugar.
Algunas recetas no tienen forma , lo que significa que siempre y cuando todos los artículos estén allí, el artículo estará hecho. Estos se denotan ser a *
. Un ejemplo de esto sería pumpkin pie
(no uno en este desafío) que sólo necesita pumpkin
, sugar
y egg
que se harán.
item name | abb. name | crafting recipe
----------------+-----------+------------------
wood | W | ---------
cobblestone | C | ---------
sticks | S | ----W--W-
iron | I | ---------
gold | G | ---------
diamond | D | ---------
redstone | R | ---------
string | N | ---------
coal | Y | ---------
sugar cane | U | ---------
redstone torch | E | -R--S----
paper | P | ---------
book | B | ---PL-PP-
wool | M | ---NN-NN-
obsidian | O | ---------
gunpowder | X | ---------
sand | A | ---------
glass | H | ---------
feather | F | ---------
flint | K | ---------
torch | T | ---------
leather | L | ---------
material blocks | Z | QQQQQQQQQ (here Q represents any in `[G, I, R, D, Y]`
compass | V | -I-IRI-I-
Productos
Esta es una lista de todos los productos que podría manejar para la elaboración. Si el artículo también es un ingrediente, no se incluirá aquí, pero aún debe ser capaz de manejarlo . Cada uno se puede elaborar utilizando solo los ingredientes anteriores y se designa con una letra minúscula única para identificarlo. Armor ( +
) puede usar cualquier ingrediente en [G, I, L, D]
. Las armas ( $
) se pueden hacer de [W, C, I, G, D]
. Sin embargo, como este es un sitio de código de golf , debemos acortar estas listas. [G, I, L, D]
se denota por a Q
y [W, C, I, G, D]
se denota por a J
.
item name | abb. name | crafting recipe
----------------+-----------+------------------
crafting table | a | -----WWWW
boots + | b | ---Q-QQ-Q
pants + | c | QQQQ-QQ-Q
chestplate + | d | Q-QQQQQQQ
helmet + | e | QQQQ-Q---
bed | f | ---MMMWWW
chest | g | WWWW-WWWW
wood door | h | WW-WW-WW-
iron door | i | II-II-II-
furnace | j | CCCC-CCCC
trap door | k | ---WW-WW-
TNT | l | XAXAXAXAX
anvil | m | ZZZ-I-III
axe $ | n | -JJ-SJ-S-
sword $ | o | -J--J--S-
pickaxe $ | p | JJJ-S--S-
hoe $ | q | JJ--S--S-
shovel $ | r | -J--S--S-
arrow | s | -K--S--F-
bow | t | SN-S-NSN-
bowl | u | ---W-W-W-
gold nugget * | v | ----G----
bucket | w | ---I-I-I-
clock | y | -G-GRG-G-
map | z | PPPPVPPPP
fishing rod | 1 | --S-SNS-N
flint and steel | 2 | ----I---K
shears | 3 | ---I---I-
wood button * | 4 | ----W----
dropper | 5 | CCCC-CCRC
stone button * | 6 | ----C----
jukebox | 7 | WWWWDWWWW
lever | 8 | ----S--C-
noteblock | 9 | WWWWRWWWW
piston | 0 | WWWCICCRC
pressure plate | ! | ------WW- (W can also be replaced with C/I/G)
repeater | @ | ---ERECCC
tripwire hook | # | -I--S--W-
activator rail | ( | ISIIEIISI
boat | % | ---W-WWWW
minecart | ^ | ---I-IIII
powered rail | & | G-GGSGGRG
rail | ) | I-IISII-I
stone wall | { | ---CCCCCC
fence gate | } | ---SWSSWS
fence panel | [ | ---SSSSSS
glass pane | ] | ---HHHHHH
iron bars | ; | ---IIIIII
item frame | : | SSSSLSSSS
ladder | ' | S-SSSSS-S
sandstone | " | -----AAAA
slabs | | | ---CCC---
stairs | < | W--WW-WWW
bookshelves | > | WWWBBBWWW
carpet | . | -------MM
painting | , | SSSSMSSSS
sign | ? | WWWWWW-S-
cauldron | / | I-II-IIII
enchant. table | ` | -B-DODOOO
glass bottle | ~ | ---H-H-H-
rocket * | _ | -----PXXX
Puntuación
Como no sería razonable pedirle que haga todas estas recetas, ¡solo tiene que hacer las que desee! Pero, por supuesto, cuanto más hagas, mejor será tu puntuación.
El puntaje se define como
score = length of program in bytes / number of working recipes squared
Por ejemplo, esto podría ser una presentación.
input()
print('S')
Como puede suponer que la entrada pasada será una que pueda manejar ( ----W--W-
), siempre generará S
, lo que es equivalente a sticks
. Esto obtendría 18/1 = 18 .
Debe tomar la entrada para ser un programa válido y debe poder manejar al menos 5 entradas diferentes .
La persona con el puntaje más bajo gana.
Reglas
- La puntuación más baja gana
- Puede tomar datos utilizando cualquier método aceptado (parámetros de función, STDIN, etc.)
- Solo puede tomar la entrada en uno de los formularios anteriores. No es demasiado restrictivo y debería ser viable.
- Las lagunas estándar no están permitidas
- Debe tomar entrada
- Debe generar al menos
5
resultados correctos para calificar como competidor. - Para las recetas que no tienen forma, por ejemplo, pepitas de oro, las diferentes combinaciones no cuentan como recetas diferentes.
----W----
es el mismo (en cuanto a recetas) que--W------
y solo es 1 receta. - Por otro lado, para las recetas que usan más de un material, como bloques de materiales, cada material diferente cuenta como una receta diferente, lo que significa que
IIIIIIIII
no es lo mismo (en cuanto a recetas)RRRRRRRRR
.
¡Buena suerte, Minecrafters!
fuente
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, o,-----W--W
. ¿Necesitamos manejar solo uno de estos o todos estos?Respuestas:
Python 2 , Puntuación: 0.0636347
715 bytes, las 106 recetas
Pruébalo en línea!
Maneja todas las recetas especificadas, incluidas las variaciones de material.
Crea un diccionario de todas las recetas de trabajo (con longitud 9).
Las recetas sin forma se incluyen ordenando la cadena de entrada y comparándolas con el diccionario.
Editar: Cambió a la compresión de cadenas y guardó 7 bytes en el código gracias a notjagan
fuente
Mathematica, puntuación: 0.0482378
0.05402280.0543788542
607611bytes, las 106 recetas-4 bytes para reorganizar datos comprimidos
-65 bytes por perder la capacidad de manejar entradas inválidas
Tomar entrada como lista 1D
{"W", "W", "", "", ...}
Versión ampliada y clara:
El grande
Uncompress
es una tabla de cuerdas de todas las combinaciones, unidas.StringPosition
busca coincidencias en un orden de: entrada en sí, entrada ordenada (para receta sin forma), armadura, arma, placa de presión.# & @@ Join @@
devuelve la posición de la primera ocurrencia./9+8/9
calcula el índice en la tabla de resultados yStringTake
toma el carácter en esa posición.fuente
SOGL V0.12 ,
325322317316 bytes / 106 ^ 2 = puntuación 0,0281238875Explicación:
Pruébalo aquí! o prueba ejecutando lo siguiente (que dirá lo que está mal):
fuente
Jalea , partitura ,00173611111
4 / (48 ^ 2) = 0.00173611111 puntaje
Toma la entrada como una cadena con guiones para el espacio vacío, por ejemplo
-----WWWW
.Creo que esto es válido porque el desafío dice
Las abreviaturas de 1 letra son tan confusas como lo que esto genera, por lo que esta salida es bastante obvia de lo que significa.
Esto supone que la entrada puede ser una que el programa puede manejar según lo especificado por
Pruébalo en línea!
Test Suite (Encabezado y pie de página embellecen la salida) Esto hace las 48 recetas y da sus nombres.
Cómo funciona
Esto es realmente una función hash realmente pobre.
fuente