Ne détestez-vous pas quand vous ne vous souvenez pas comment créer quelque chose dans Minecraft? Eh bien, il est temps de remédier à cela!
Tâche
Votre tâche consiste à prendre une entrée, soit sous forme de liste 1D ou 2D et à sortir quel élément est le résultat de la table de fabrication!
Contribution
Vous pouvez prendre l'entrée comme une chaîne ou une liste de longueur 9
ou un tableau imbriqué 2D.
Si vous prenez l'entrée en tant que ...
Chaîne
Chaque élément du tableau contient 1 caractère dans le caractère ASCII imprimable ( 0x20
à 0x7E
). Pour représenter un espace vide, vous utilisez un -
exemple WWW-W-WWW
serait la même chose qu'une table d'artisanat comme
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
Vous pouvez également prendre l'entrée comme une chaîne multiligne tant que tous les espaces sont préservés, par exemple
WWW
W
WWW
Matrice 1D
Vous prendriez l'entrée comme un tableau de caractères où les espaces vides sur la table d'artisanat seraient un caractère vide, par exemple la table ci-dessus serait ['W','W','W','','W','','W','W','W']
Réseau 2D
Cette fois, chaque liste représente une ligne sur la table de fabrication, où un espace vide est un caractère vide par exemple [['W','W','W'],['','W',''],['W','W','W']]
Vous pouvez supposer que l'entrée correspondra toujours à un élément qui peut être fabriqué, et si vous utilisez une entrée de tableau, vous pouvez remplacer le caractère vide par n'importe quel caractère non utilisé comme nom abrégé.
Production
La sortie sera l'élément fabriqué à partir de l'entrée, sous la forme que vous souhaitez, tant qu'il est évident de ce que cela signifie. (Personnellement, j'utiliserais mes abréviations à 1 lettre des articles)
Ingrédients
Pour ce défi, cela wood
signifie des planches de bois, pas des rondins de bois.
Vous n'avez qu'à gérer les objets les plus courants lors de la fabrication. Ce sont les ingrédients de l'artisanat mais peuvent aussi être des produits de l'artisanat. La recette d'artisanat suit le format xxxxxxxxx
comme l'entrée de chaîne ci-dessus. Si un objet ne peut pas être fabriqué, ---------
est placé à la place.
Certaines recettes sont informe , ce qui signifie que tant que tous les articles sont là, l'article sera fait. Celles-ci sont désignées par a *
. Un exemple de cela serait pumpkin pie
(pas un seul dans ce défi) qui n'a besoin que pumpkin
, sugar
et egg
à réaliser.
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-
Des produits
Ceci est une liste de tous les produits que vous pourriez manipuler pour l'artisanat. si l'article est également un ingrédient, il ne sera pas inclus ici mais vous devez toujours pouvoir le manipuler . Chacun peut être fabriqué en utilisant uniquement les ingrédients ci-dessus et est désigné comme une lettre minuscule unique pour l'identifier. Armor ( +
) peut utiliser n'importe quel ingrédient [G, I, L, D]
. Les armes ( $
) peuvent être fabriquées à partir de [W, C, I, G, D]
. Comme il s'agit d'un site de golf à code , nous devons raccourcir ces listes. [G, I, L, D]
est désigné par a Q
et [W, C, I, G, D]
est noté par 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
Notation
Comme il serait déraisonnable de vous demander de faire toutes ces recettes, vous n'avez qu'à faire celles que vous voulez! Mais bien sûr, plus vous en faites, meilleur est votre score.
Le score est défini comme
score = length of program in bytes / number of working recipes squared
Par exemple, cela pourrait être une soumission.
input()
print('S')
Comme vous pouvez supposer que l'entrée passée sera celle qu'elle peut gérer ( ----W--W-
), elle sortira toujours S
, ce qui est équivalent à sticks
. Cela donnerait 18/1 = 18 .
Vous devez prendre l'entrée pour être un programme valide et vous devez pouvoir gérer au moins 5 entrées différentes .
La personne avec le score le plus bas gagne.
Règles
- Le score le plus bas gagne
- Vous pouvez prendre des entrées en utilisant n'importe quelle méthode acceptée (paramètres de fonction, STDIN, etc.)
- Vous ne pouvez prendre de saisie que dans l'un des formulaires ci-dessus. Ce n'est pas trop restrictif et devrait être réalisable
- Les failles standard sont interdites
- Vous devez prendre des informations
- Vous devez produire au moins
5
des résultats corrects pour être qualifié de concurrent. - Pour les recettes sans forme, par exemple les pépites d'or, différentes combinaisons ne comptent pas comme des recettes différentes.
----W----
est la même (au niveau de la recette) que--W------
et n'est qu'une seule recette. - D'un autre côté, pour les recettes qui utilisent plus d'un matériau, comme les blocs de matériaux, chaque matériau différent compte comme une recette différente, ce qui signifie que ce
IIIIIIIII
n'est pas la même chose (au niveau de la recette) queRRRRRRRRR
.
Bonne chance, Minecrafters!
la source
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, ou,-----W--W
. avons-nous besoin de gérer un seul de ces éléments ou tous ces éléments?Réponses:
Python 2 , score: 0,0636347
715 octets, les 106 recettes
Essayez-le en ligne!
Gère toutes les recettes spécifiées, y compris les variations de matériaux.
Crée un dictionnaire de toutes les recettes de travail (de longueur 9).
Les recettes informes sont incluses en triant la chaîne d'entrée et en les comparant au dictionnaire.
Edit: Passé à la compression de chaîne et enregistré 7 octets dans le code grâce à notjagan
la source
Mathematica, score: 0,0482378
0,05402280,0543788542
607611octets, les 106 recettes-4 octets pour réorganiser les données compressées
-65 octets pour avoir perdu la capacité de gérer les entrées invalides
Prendre l'entrée en tant que liste 1D
{"W", "W", "", "", ...}
Version étendue et claire:
Le grand
Uncompress
est une table de cordes de toutes les combinaisons, réunies.StringPosition
recherche la correspondance dans un ordre de: entrée elle-même, entrée triée (pour une recette informe), armure, arme, plaque de pression.# & @@ Join @@
renvoie la position de première occurrence./9+8/9
calcule l'index dans le tableau des résultats etStringTake
prend le caractère à cette position.la source
SOGL V0.12 ,
325322317316 octets / 106 ^ 2 = score 0,0281238875Explication:
Essayez-le ici! ou testez en exécutant ce qui suit (qui dira ce qui ne va pas):
la source
Jelly , score 0,00173611111
4 / (48 ^ 2) = 0,00173611111 score
Prend l'entrée sous forme de chaîne avec des tirets pour l'espace vide, par exemple
-----WWWW
.Je pense que cela est valable parce que le défi dit
Les abréviations à 1 lettre sont à peu près aussi confuses que ce que cela produit, donc cette sortie est assez évidente ce qu'elle signifie.
Cela suppose que l'entrée peut être celle que le programme peut gérer comme spécifié par
Essayez-le en ligne!
Suite de tests (l'en-tête et le pied de page affinent la sortie) Cela fait les 48 recettes et donne leurs noms.
Comment ça fonctionne
Il s'agit vraiment d'une fonction de hachage vraiment médiocre.
la source