Você não odeia quando não consegue se lembrar de como criar algo no Minecraft? Bem, é hora de remediar isso!
Tarefa
Sua tarefa é pegar uma entrada, como uma lista 1D ou 2D, e produzir qual item é resultado da tabela de criação!
Entrada
Você pode receber a entrada como uma sequência de caracteres ou uma lista de comprimento 9
ou uma matriz aninhada 2D.
Se você considerar a entrada como ...
Corda
Cada item da tabela possui 1 caractere no caractere ASCII imprimível ( 0x20
para 0x7E
). Para representar um espaço vazio, use um -
exemplo WWW-W-WWW
seria o mesmo que uma tabela de criação como
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
Você também pode receber a entrada como uma sequência de múltiplas linhas, desde que todos os espaços sejam preservados, por exemplo
WWW
W
WWW
Matriz 1D
Você usaria a entrada como uma matriz de caracteres, onde os espaços vazios na tabela de criação seriam um caractere vazio, por exemplo, a tabela acima ['W','W','W','','W','','W','W','W']
Matriz 2D
Desta vez, cada lista representa uma linha na tabela de criação, onde um espaço vazio é um caractere vazio, por exemplo [['W','W','W'],['','W',''],['W','W','W']]
Você pode assumir que a entrada sempre corresponderá a um item que pode ser criado e, se estiver usando a entrada da matriz, poderá substituir o caractere vazio por qualquer caractere não usado como um nome abreviado.
Resultado
A saída será o item criado a partir da entrada, da forma que você desejar, desde que seja óbvio o que isso significa. (Pessoalmente, eu usaria minhas abreviações de uma letra dos itens)
Ingredientes
Para este desafio, wood
significa pranchas de madeira, não toras de madeira.
Você só precisa lidar com os itens mais comuns ao criar. Estes são os ingredientes para a elaboração, mas também podem ser produtos da elaboração. A receita de criação segue o formato xxxxxxxxx
como a entrada de sequência acima. Se um item não puder ser criado, ele ---------
será colocado.
Algumas receitas não têm forma , o que significa que, desde que todos os itens estejam lá, o item será feito. Estes são indicados como a *
. Um exemplo disso seria pumpkin pie
(não um neste desafio) que só precisa de pumpkin
, sugar
e egg
para ser feita.
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-
Produtos
Esta é uma lista de todos os produtos que você pode manipular para criar. se o item também for um ingrediente, ele não será incluído aqui, mas você ainda deve poder manipulá-lo . Cada um pode ser criado usando apenas os ingredientes acima e é designada uma letra minúscula exclusiva para identificá-lo. Armor ( +
) pode usar qualquer ingrediente em [G, I, L, D]
. É $
possível fabricar armas ( ) [W, C, I, G, D]
. Como este é um site de código-golfe , no entanto, precisamos tornar essas listas mais curtas. [G, I, L, D]
é denotado por a Q
e [W, C, I, G, D]
é denotado 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
Pontuação
Como não seria razoável pedir-lhe para fazer todas essas receitas, você só precisa fazer as que deseja! Mas é claro que, quanto mais você faz, melhor sua pontuação.
Pontuação é definida como
score = length of program in bytes / number of working recipes squared
Por exemplo, isso pode ser um envio.
input()
print('S')
Como você pode supor que a entrada passada será uma que ela possa manipular ( ----W--W-
), ela sempre produzirá S
, o que equivale a sticks
. Isso marcaria 18/1 = 18 .
Você deve considerar a entrada como um programa válido e deve poder manipular pelo menos 5 entradas diferentes .
A pessoa com a pontuação mais baixa ganha.
Regras
- Menor pontuação ganha
- Você pode receber informações usando qualquer método aceito (parâmetros de função, STDIN etc.)
- Você só pode receber informações de uma das formas acima. Não é muito restritivo e deve ser viável
- As brechas padrão não são permitidas
- Você deve receber informações
- Você deve produzir pelo menos
5
resultados corretos para se qualificar como concorrente. - Para receitas sem forma, por exemplo, pepitas de ouro, combinações diferentes não contam como receitas diferentes.
----W----
é o mesmo (em termos de receita)--W------
e é apenas uma receita. - Por outro lado, para receitas que usam mais de um material, como blocos de materiais, cada material diferente conta como receita diferente, o que significa que
IIIIIIIII
não é o mesmo (em termos de receita) queRRRRRRRRR
.
Boa sorte, Minecrafters!
fonte
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, ou,-----W--W
. precisamos lidar com apenas um desses ou todos?Respostas:
Python 2 , Pontuação: 0.0636347
715 bytes, todas as 106 receitas
Experimente online!
Lida com todas as receitas especificadas, incluindo variações de material.
Cria um dicionário de todas as receitas de trabalho (com comprimento 9).
As receitas disformes são incluídas ordenando a sequência de entrada e comparando-as com o dicionário.
Edit: Mudou para compressão de string e salvou 7 bytes no código graças a notjagan
fonte
Mathematica, pontuação: 0.0482378
0,05402280,0543788542
607611bytes, todas as 106 receitas-4 bytes para reorganizar dados compactados
-65 bytes para perder a capacidade de lidar com entradas inválidas
Aceitar entrada como lista 1D
{"W", "W", "", "", ...}
Versão expandida e clara:
O grande
Uncompress
é uma tabela de strings de todas as combinações, unidas.StringPosition
procura correspondência em uma ordem de: entrada em si, entrada classificada (para receita sem forma), armadura, arma, prato de pressão.# & @@ Join @@
retorna a posição da primeira ocorrência./9+8/9
calcula o índice na tabela de resultados eStringTake
leva o caractere nessa posição.fonte
SOGL V0.12 ,
325322317316 bytes / 106 ^ 2 = pontuação 0,0281238875Explicação:
Experimente aqui! ou teste executando o seguinte (que dirá o que está errado):
fonte
Geléia , pontuação 0.00173611111
4 / (48 ^ 2) = 0.00173611111 pontuação
Recebe entrada como string com hífens para espaço vazio, por exemplo
-----WWWW
.Eu acho que isso é válido porque o desafio diz
As abreviações de 1 letra são tão confusas quanto o que isso gera, portanto, esse resultado é óbvio o que significa.
Isso pressupõe que a entrada possa ser aquela que o programa possa manipular, conforme especificado por
Experimente online!
Suíte de teste (cabeçalho e rodapé prettify a saída) Isso faz todas as 48 receitas e dá seus nomes.
Como funciona
Esta é realmente apenas uma função de hash muito ruim.
fonte