Czy nie nienawidzisz tego, gdy nie pamiętasz, jak stworzyć coś w Minecraft? Czas to naprawić!
Zadanie
Twoim zadaniem jest wziąć dane wejściowe, jako listę 1D lub 2D i wypisać, jaki przedmiot jest wynikiem tabeli rzemieślniczej!
Wejście
Możesz wziąć dane wejściowe jako ciąg znaków, listę długości 9
lub zagnieżdżoną tablicę 2D.
Jeśli weźmiesz wkład jako ...
Strunowy
Każdy element w tabeli ma 1 znak w drukowanym znaku ASCII ( 0x20
do 0x7E
). Aby przedstawić pustą przestrzeń, użyj -
np. WWW-W-WWW
Byłby taki sam jak stół rzemieślniczy jak
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
Możesz również wziąć dane wejściowe jako ciąg wielowierszowy, o ile wszystkie spacje są zachowane, np
WWW
W
WWW
Tablica 1D
Wziąłbyś dane wejściowe jako tablicę znaków, w której puste miejsca na stole rzemieślniczym byłyby pustym znakiem, np. Powyższa tabela byłaby ['W','W','W','','W','','W','W','W']
Tablica 2D
Tym razem każda lista reprezentuje linię na stole rzemieślniczym, gdzie puste miejsce to pusty znak, np [['W','W','W'],['','W',''],['W','W','W']]
Możesz założyć, że dane wejściowe zawsze będą odpowiadały elementom, które można spreparować, a jeśli używasz danych tablicowych, możesz zastąpić pusty znak dowolnym znakiem nieużywanym jako nazwa skrócona.
Wynik
Wyjście będzie przedmiotem wytworzonym na podstawie danych wejściowych, w dowolnej formie, o ile będzie oczywiste, co to znaczy. (Osobiście użyłbym moich 1-literowych skrótów pozycji)
Składniki
Dla tego wyzwania wood
oznacza drewniane deski, a nie drewniane kłody.
Podczas wytwarzania musisz obsługiwać tylko najczęstsze przedmioty. Są to składniki rzemieślnicze, ale mogą być również produktami rzemieślniczymi. Przepis wytwarzania ma format xxxxxxxxx
podobny do powyższego ciągu znaków. Jeśli przedmiot nie może zostać wytworzony, ---------
zamiast tego jest umieszczany.
Niektóre przepisy są bezkształtne , co oznacza, że dopóki wszystkie elementy będą dostępne, przedmiot zostanie wykonany. Są one oznaczone jako a *
. Przykładem tego będzie pumpkin pie
(nie jeden na to wyzwanie), który tylko potrzebuje pumpkin
, sugar
a egg
które mają być wykonane.
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-
Produkty
To jest lista wszystkich produktów, które możesz wykorzystać do tworzenia. jeśli przedmiot jest również składnikiem, nie zostanie tu uwzględniony, ale nadal musisz go obsługiwać . Każdy z nich może być wykonany przy użyciu wyłącznie powyższych składników i jest oznaczony unikalną, małą literą, aby go zidentyfikować. Pancerz ( +
) może używać dowolnego składnika [G, I, L, D]
. Broń ( $
) może być wykonana z [W, C, I, G, D]
. Ponieważ jest to strona z kodem do golfa , musimy skrócić te listy. [G, I, L, D]
jest oznaczony przez a Q
i [W, C, I, G, D]
jest oznaczony przez 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
Punktacja
Ponieważ nierozsądne byłoby prosić cię o wykonanie wszystkich tych przepisów, musisz zrobić tylko te, które chcesz! Ale im więcej tego zrobisz, tym lepszy wynik.
Wynik jest zdefiniowany jako
score = length of program in bytes / number of working recipes squared
Na przykład może to być przesłanie.
input()
print('S')
Jak można założyć, że przekazane dane wejściowe będą w stanie obsłużyć ( ----W--W-
), zawsze będą generować dane wyjściowe S
, co jest równoważne z sticks
. Dałoby to wynik 18/1 = 18 .
Musisz wziąć dane wejściowe, aby być poprawnym programem i musisz być w stanie obsłużyć co najmniej 5 różnych danych wejściowych.
Osoba z najniższym wynikiem wygrywa.
Zasady
- Najniższy wynik wygrywa
- Możesz przyjmować dane wejściowe przy użyciu dowolnej zaakceptowanej metody (parametry funkcji, STDIN itp.)
- Możesz przyjmować dane tylko w jednym z powyższych formularzy. Nie jest zbyt restrykcyjny i powinien być wykonalny
- Standardowe luki są niedozwolone
- Musisz wziąć wkład
- Musisz podać co najmniej
5
poprawne wyniki, aby zakwalifikować się jako konkurencyjny. - W przypadku przepisów bezkształtnych, np. Złote samorodki, różne kombinacje nie liczą się jako różne przepisy.
----W----
jest taki sam (pod względem przepisów) jak--W------
i jest tylko 1 przepisem. - Z drugiej strony, w przypadku przepisów, które wykorzystują więcej niż jeden materiał, takich jak bloki materiałów, każdy inny materiał liczy się jako inny przepis, co oznacza, że
IIIIIIIII
nie jest taki sam (pod względem receptury) jakRRRRRRRRR
.
Powodzenia, Minecrafters!
źródło
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, lub-----W--W
. czy potrzebujemy obsługiwać tylko jedną z nich, czy wszystkie z nich?Odpowiedzi:
Python 2 , Wynik: 0,0636347
715 bajtów, wszystkie 106 przepisów
Wypróbuj online!
Obsługuje wszystkie określone przepisy, w tym odmiany materiałów.
Tworzy słownik wszystkich działających przepisów (o długości 9).
Bezkształtne przepisy są uwzględniane poprzez sortowanie ciągu wejściowego i sprawdzanie ich w słowniku.
Edycja: Przełączono na kompresję ciągów i zapisano 7 bajtów w kodzie dzięki notjagan
źródło
Mathematica, wynik: 0,0482378
0,05402280,0543788542
607611bajty, wszystkie 106 przepisów-4 bajty do zmiany kolejności skompresowanych danych
-65 bajtów za utratę możliwości radzenia sobie z nieprawidłowymi danymi wejściowymi
Weź dane jako listę 1D
{"W", "W", "", "", ...}
Rozszerzona i przejrzysta wersja:
Big
Uncompress
to tabela ciągów wszystkich kombinacji, połączonych ze sobą.StringPosition
szuka dopasowania w kolejności: sam wkład, posortowane wejście (dla bezkształtnego przepisu), zbroja, broń, płyta dociskowa.# & @@ Join @@
zwraca pozycję pierwszego wystąpienia./9+8/9
oblicza indeks w tabeli wyników iStringTake
przyjmuje znak w tej pozycji.źródło
SOGL V0.12 ,
325322317316 bajtów / 106 ^ 2 = wynik 0,0281238875Wyjaśnienie:
Wypróbuj tutaj! lub przetestuj, uruchamiając następujące (co powie, co jest nie tak):
źródło
Galaretka , wynik 0,00173611111
4 / (48 ^ 2) = 0,00173611111 punktacja
Pobiera dane wejściowe jako ciąg znaków z łącznikami dla pustej przestrzeni, np
-----WWWW
.Myślę, że jest to ważne, ponieważ mówi wyzwanie
Skróty 1-literowe są tak samo mylące, jak to, co wyświetla, więc to wyjście jest wystarczająco oczywiste, co to znaczy.
Zakłada się, że dane wejściowe mogą być obsługiwane przez program w sposób określony przez
Wypróbuj online!
Pakiet testowy (nagłówek i stopka upiększają dane wyjściowe) Wykonuje wszystkie 48 przepisów i podaje ich nazwy.
Jak to działa
To naprawdę bardzo słaba funkcja skrótu.
źródło