Hassen Sie es nicht, wenn Sie sich nicht erinnern können, wie man in Minecraft etwas herstellt? Nun, es ist Zeit, dem abzuhelfen!
Aufgabe
Deine Aufgabe ist es, eine Eingabe entweder als 1D- oder 2D-Liste zu machen und auszugeben, welcher Gegenstand das Ergebnis der Herstellungstabelle ist!
Eingang
Sie können Eingaben entweder als Zeichenfolge oder als Längenliste 9
oder als 2D-verschachteltes Array vornehmen.
Wenn Sie Eingaben als ...
String
Jedes Element in der Tabelle ist 1 Zeichen im druckbaren ASCII-Zeichen ( 0x20
bis 0x7E
). Um einen leeren Raum darzustellen, verwenden Sie ein -
Beispiel WWW-W-WWW
, das einem Basteltisch ähnelt
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
Sie können Eingaben auch als mehrzeilige Zeichenfolge verwenden, sofern alle Leerzeichen erhalten bleiben, z
WWW
W
WWW
1D Array
Sie würden die Eingabe als Zeichen-Array annehmen, wobei leere Stellen auf der Herstellungstabelle ein leeres Zeichen wären, z. B. obige Tabelle ['W','W','W','','W','','W','W','W']
2D-Array
Diesmal stellt jede Liste eine Zeile auf dem Handwerkstisch dar, wobei ein leerer Raum ein leeres Zeichen ist, z [['W','W','W'],['','W',''],['W','W','W']]
Sie können davon ausgehen, dass die Eingabe immer einem herstellbaren Element entspricht. Wenn Sie eine Array-Eingabe verwenden, können Sie das leere Zeichen durch ein beliebiges Zeichen ersetzen, das nicht als abgekürzter Name verwendet wird.
Ausgabe
Die Ausgabe ist das Element, das aus der Eingabe in jeder gewünschten Form erstellt wird, sofern klar ist, was dies bedeutet. (Persönlich würde ich meine 1-Buchstaben-Abkürzungen der Artikel verwenden)
Zutaten
Für diese Herausforderung wood
bedeutet Holzbohlen, nicht Holzstämme.
Sie müssen beim Herstellen nur mit den häufigsten Gegenständen umgehen. Dies sind die Zutaten für das Handwerk, können aber auch Handwerksprodukte sein. Das Herstellungsrezept folgt dem oben angegebenen Format xxxxxxxxx
. Wenn ein Gegenstand nicht hergestellt werden kann, ---------
wird er stattdessen platziert.
Einige Rezepte sind formlos , was bedeutet, dass der Gegenstand hergestellt wird, solange alle Gegenstände vorhanden sind. Diese werden mit a bezeichnet *
. Ein Beispiel hierfür wäre pumpkin pie
(nicht ein in dieser Herausforderung) , dass nur braucht pumpkin
, sugar
und egg
gemacht werden.
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-
Produkte
Dies ist eine Liste aller Produkte, die Sie zum Herstellen verwenden können. Wenn der Gegenstand auch eine Zutat ist, wird er hier nicht aufgeführt, aber Sie müssen trotzdem damit umgehen können . Jedes kann nur mit den oben genannten Zutaten hergestellt werden und ist mit einem eindeutigen Kleinbuchstaben gekennzeichnet, um es zu identifizieren. In Armor ( +
) können alle Zutaten verwendet werden [G, I, L, D]
. Waffen ( $
) können aus gemacht werden [W, C, I, G, D]
. Da es sich jedoch um eine Code-Golf- Site handelt, müssen diese Listen verkürzt werden. [G, I, L, D]
wird mit a bezeichnet Q
und [W, C, I, G, D]
wird mit a bezeichnet 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
Wertung
Da es unvernünftig wäre, Sie zu bitten, alle diese Rezepte zu machen, müssen Sie nur die Rezepte machen, die Sie wollen! Aber natürlich, je mehr Sie tun, desto besser ist Ihre Punktzahl.
Punktzahl ist definiert als
score = length of program in bytes / number of working recipes squared
Dies könnte beispielsweise eine Einreichung sein.
input()
print('S')
Da Sie davon ausgehen können, dass die übergebene Eingabe eine Eingabe ist, die sie verarbeiten kann ( ----W--W-
), wird sie immer ausgegeben S
, was äquivalent zu ist sticks
. Dies würde 18/1 = 18 ergeben .
Sie müssen Eingaben vornehmen , um ein gültiges Programm zu sein, und Sie müssen in der Lage sein, mindestens 5 verschiedene Eingaben zu verarbeiten.
Die Person mit der niedrigsten Punktzahl gewinnt.
Regeln
- Die niedrigste Punktzahl gewinnt
- Sie können Eingaben mit jeder akzeptierten Methode (Funktionsparameter, STDIN usw.) vornehmen.
- Sie können Eingaben nur in einer der oben genannten Formen vornehmen. Es ist nicht zu restriktiv und sollte praktikabel sein
- Standardlücken sind nicht zulässig
- Sie müssen Eingaben machen
- Sie müssen mindestens
5
korrekte Ergebnisse ausgeben, um sich als Teilnehmer zu qualifizieren. - Bei formlosen Rezepten, z. B. Goldnuggets, gelten unterschiedliche Kombinationen nicht als unterschiedliche Rezepte.
----W----
ist das gleiche (rezeptweise) wie--W------
und ist nur 1 Rezept. - Auf der Kehrseite dieses, für Rezepte , die mehr als ein Material, wie beispielsweise Materialblocks verwenden, die jeweils unterschiedliches Material zählt als anderes Rezept, was bedeutet , dass
IIIIIIIII
nicht das gleiche ist (Rezept-wise) alsRRRRRRRRR
.
Viel Glück, Minecrafters!
quelle
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, oder-----W--W
. Müssen wir nur eine oder alle behandeln?Antworten:
Python 2 , Score: 0,0636347
715 Bytes, alle 106 Rezepte
Probieren Sie es online!
Behandelt alle angegebenen Rezepte, einschließlich Materialvarianten.
Erstellt ein Wörterbuch aller Arbeitsrezepte (Länge 9).
Die unförmigen Rezepte werden eingefügt, indem die Eingabezeichenfolge sortiert und mit dem Wörterbuch abgeglichen wird.
Bearbeiten: Auf String-Komprimierung umgestellt und dank notjagan 7 Bytes im Code gespeichert
quelle
Mathematica, Kerbe: 0.0482378
0,05402280,0543788542
607611Bytes, alle 106 Rezepte-4 Bytes zum Umordnen komprimierter Daten
-65 Byte für den Verlust der Fähigkeit, mit ungültigen Eingaben umzugehen
Eingabe als 1D-Liste übernehmen
{"W", "W", "", "", ...}
Erweiterte und übersichtliche Version:
Der große
Uncompress
ist eine String-Tabelle aller Kombinationen, die zusammengefügt sind.StringPosition
Sucht nach Übereinstimmungen in der Reihenfolge: Eingabe selbst, sortierte Eingabe (für formloses Rezept), Rüstung, Waffe, Druckplatte.# & @@ Join @@
Gibt die Position des ersten Auftretens zurück./9+8/9
berechnet den Index in der Ergebnistabelle undStringTake
übernimmt das Zeichen an dieser Position.quelle
SOGL V0.12 ,
325322317316 Bytes / 106 ^ 2 = Score 0.0281238875Erläuterung:
Probieren Sie es hier aus! oder testen Sie, indem Sie Folgendes ausführen (was sagt, was nicht stimmt):
quelle
Jelly , Punktzahl 0.00173611111
4 / (48 ^ 2) = 0,00173611111 Punkte
Übernimmt die Eingabe als Zeichenfolge mit Bindestrichen für Leerzeichen, z
-----WWWW
.Ich denke, das ist gültig, weil die Herausforderung sagt
Die 1-Buchstaben-Abkürzungen sind ungefähr so verwirrend wie die Ausgabe, daher ist diese Ausgabe offensichtlich genug, was sie bedeutet.
Dies setzt voraus, dass es sich bei der Eingabe um eine Eingabe handeln kann, die das Programm wie von angegeben verarbeiten kann
Probieren Sie es online!
Test Suite (Kopf- und Fußzeile verschönern die Ausgabe) Dies erledigt alle 48 Rezepte und gibt deren Namen an.
Wie es funktioniert
Dies ist wirklich nur eine sehr schlechte Hash-Funktion.
quelle