Golfe sua ferramenta Minecraft favorita

20

Em Minecraft , as texturas de itens padrão são todas razoavelmente simples, imagens de 16 × 16 pixels, o que as faz parecer ideais para o golfe .

Abaixo estão as texturas simplificadas das cinco ferramentas de diamante "essenciais" do Minecraft: picareta , , machado , espada e enxada .

As imagens mostradas são ampliadas para mostrar seus detalhes. Clique em uma imagem para visualizar sua versão de 16 × 16 pixels de tamanho correto.

picareta pá Machado espada enxada

Para facilitar o golfe, modifiquei cada um deles de originais para usar apenas as cinco cores RGB de 24 bits:

  • R=75 G=82 B=73 para o fundo.
  • R=51 G=235 B=203 para as cabeças de ferramenta de diamante.
  • R=14 G=63 B=54 para os contornos de diamante.
  • R=137 G=103 B=39 para o núcleo do cabo de madeira.
  • R=40 G=30 B=11 para os contornos do cabo de madeira.

Escolha sua ferramenta favorita dentre as cinco e escreva um programa que produz sua textura simplificada de 16 × 16 pixels em qualquer formato de imagem truecolor comum sem perdas (como bpm,png , ppm, etc.).

Então, por exemplo, se você escolher o machado, você escreveria um programa que gera essa imagem: exemplo de machado

Nenhuma entrada deve ser tomada e uma conexão com a web não deve ser necessária. A imagem pode ser impressa como um arquivo com o nome de sua escolha, ou os dados brutos do arquivo de imagem podem ser impressos em stdout, ou você pode simplesmente exibir a imagem.

Você só precisa escolher uma das cinco imagens.O programa que produz qualquer uma das cinco imagens no menor número de bytes é o vencedor.

Você pode escrever programas para mais de uma das imagens, mas apenas aquela com o número mínimo de bytes conta para a sua pontuação. Se houver empate, o post mais votado vence.


Se você gosta de PPCG e joga Minecraft, convido você a se juntar ao nosso servidor de teste do Minecraft. Basta perguntar na sala de chat dedicada .

Passatempos de Calvin
fonte
5
"Ampliado para mostrar detalhes." Só consigo pensar em caixas de cereal.
Alex A.
Eu acho que pode haver alguns problemas de compactação ou você tem alguns erros de digitação nas cores. Reivindicações Mathematica, estes cinco cores são usadas (pelo menos para a pá):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Martin Ender
@ MartinBüttner Você tem certeza? Eu baixei novamente a imagem da e verifiquei se as 5 cores estão corretas. Eu também tive certeza de que havia exatamente 5 cores. O imgur pode estar compactando as imagens ampliadas, mas essas não são as que você deveria usar.
Calvin's Hobbies
@ Calvin'sHobbies A entrada é permitida?
Kritixi Lithos

Respostas:

6

CJam, 119 bytes

Eu escolhi a pá.

'P3NGSGN255N]o67T"vîþáy$<OW¥ÓNZ"256b9b~99T]2/e~W%"LRI?6jêÌ'
f-":i3/f=F,_W%:)+{)/(\:~}%{G/({)S*S+oNo}%1>\:~+}G*

Teste aqui.

Este programa imprime um arquivo PPM em STDOUT.

Eu usei esse script para ajudar na codificação da imagem. (Isso é principalmente para mim, se eu precisar reutilizá-lo mais tarde.)

A idéia básica é desenrolar a imagem ao longo de antidiagonais e, em seguida, usar a codificação de execução. Com esta técnica, a pá contém o menor número de corridas. Para referência, o número de execuções por imagem (na ordem indicada no desafio) é:

{60, 26, 38, 43, 37}

Vou acrescentar mais explicações quando terminar de jogar isso.

Martin Ender
fonte
7

JavaScript ES6, 353 bytes

document.write(`<p style="width:1px;height:1px;box-shadow:${'931a31b31841940a40b40c41951a51b50c50d51e53f52b61c60d60e62f63c73d70e70f71b83c82d83e81a93b92c939a3aa2ba38b39b2ab37c38c29c36d37d28d35e36e27e34f35f26f34g35g3'.replace(/.../g,e=>(p=parseInt)(e[0],17)+`px ${p(e[1],17)}px 0 #${['33EBCB','0E3F36','896727','281E0B'][e[2]]},`)}9px 9px 0 8px #4B5249"`)

Isso abusa bastante das sombras de caixa do CSS3 para criar uma versão pixelizada da imagem, neste caso a enxada do Minecraft. O snippet de pilha abaixo usa o ES5 para facilitar o teste e é um pouco inútil (você precisará aumentar o zoom para vê-lo bem).

s='931a31b31841940a40b40c41951a51b50c50d51e53f52b61c60d60e62f63c73d70e70f71b83c82d83e81a93b92c939a3aa2ba38b39b2ab37c38c29c36d37d28d35e36e27e34f35f26f34g35g3'.replace(/.../g,function(e){
  return parseInt(e[0],17)+'px '+parseInt(e[1],17)+'px 0 #'+['33EBCB','0E3F36','896727','281E0B'][e[2]]+','
})
document.write('<p style="width:1px;height:1px;box-shadow:'+s+'9px 9px 0 8px #4B5249"')

NinjaBearMonkey
fonte
Isso pode ser reduzido usando a codificação base64 em vez de hexadecimal?
lirtosiast
6
A maior imagem de origem é 297 bytes. Meio triste para ser mais que :)
JB
De @JB Ele [Kolmogorov-complexidade] por uma razão;)
NinjaBearMonkey
@ThomasKwa O base64 realmente não o torna mais longo? (Na verdade, é base-17, porque há gs perto do fim.)
NinjaBearMonkey
Eu não sei o quanto a interpretação da codificação base64 é cara em Javascript, mas a própria string literal deve ter 2 / 3rds do tamanho em base64 e em hexadecimal.
lirtosiast
2

Como esse é um problema do minecraft, farei uma solução de bloco de comando: 50 caracteres

summon ItemFrame ~1 ~0 ~0 {Item:{id:diamond_axe}}

cria um quadro de item mostrando um machado.

Lucas
fonte
2
Você precisa produzir uma imagem .
Deusovi
1
A imagem é exibida na tela como parte do jogo.
Lucas
1
Por causa da perspectiva, nunca será uma imagem perfeita - também deveria ser pixelart, apenas 16x16.
Deusovi 12/09/15
3
Eu acho que isso se qualifica como uma brecha padrão - o mesmo que obter a imagem de uma fonte externa. Eu acho que teria sido bom convocar blocos para atuarem como pixels, com as cores o mais próximo possível.
Hobbies de Calvin
1
Eu conto isso como um recurso de idioma.
Lucas
1

Python 3, 483 bytes

Eu escolhi fazer a espada

from PIL import Image as IG, ImageColor as IC
s=IG.new('RGB',(16,16))
w='#6b6727'
b='#4b5249'
d='#33ebcb'
a='#0e3f36'
n='#281e0b'
t=b*13+a*3+b*12+a+d*2+a+b*11+a+d*3+a+b*10+a+d*3+a+b+b*9+a+d*3+a+b*2+b*8+a+d*3+a+b*3+b*2+a*2+b*3+a+d*3+a+b*4+b*2+a+d+a+b+a+d*3+a+b*5+b*3+a+d+a+d*3+a+b*6+b*3+a+d+a+d*2+a+b*7+b*4+a+d+a*2+b*8+b*3+n+w+a+d*2+a+b*7+b*2+n+w+n+b+a*2+d+a+b*6+a*2+w+n+b*4+a*2+b*6+a+d+a+b*13+a*3+b*13
s.putdata([IC.getrgb(t[i:i+7]) for i in range(0,len(t),7)])
s.save('s.png','PNG')

aqui está a saída: insira a descrição da imagem aqui

Criei uma string para cada cor e as combinei para obter uma string de números hexadecimais. Então eu usei a biblioteca de imagens python para converter essa string em uma imagem.

Anthony Roitman
fonte
1

Minecraft 18w11a (.mcfunction), 757 bytes

fill ~ ~ ~ ~15 ~ ~15 ice
fill ~13 ~ ~13 ~7 ~ ~11 cyan_wool
fill ~12 ~ ~14 ~10 ~ ~8 cyan_wool
fill ~12 ~ ~13 ~10 ~ ~11 diamond_block
fill ~11 ~ ~12 ~9 ~ ~10 diamond_block
fill ~10 ~ ~11 ~8 ~ ~9 diamond_block
fill ~3 ~ ~4 ~1 ~ ~2 dirt
setblock ~3 ~ ~4 oak_planks
setblock ~2 ~ ~3 oak_planks
clone ~3 ~ ~4 ~1 ~ ~2 ~4 ~ ~5
setblock ~4 ~ ~5 oak_planks
setblock ~4 ~ ~7 ice
setblock ~6 ~ ~5 ice
clone ~6 ~ ~5 ~4 ~ ~7 ~7 ~ ~8
setblock ~9 ~ ~10 diamond_block
setblock ~4 ~ ~4 dirt
setblock ~3 ~ ~5 dirt
setblock ~7 ~ ~7 dirt
setblock ~6 ~ ~8 dirt
setblock ~1 ~ ~2 ice
fill ~12 ~ ~9 ~12 ~ ~8 ice
setblock ~11 ~ ~8 ice
fill ~8 ~ ~13 ~7 ~ ~13 ice
setblock ~7 ~ ~12 ice
fill ~ ~ ~ ~15 ~ ~15 light_gray_concrete replace ice
fill ~ ~ ~ ~9 ~ ~10 dark_oak_bark replace dirt

Claro que alguém teve que responder à pergunta com o Minecraft. Coloque a resposta dentro de um pacote de dados e execute com /function <packname>:<filename>. A pá é desenhada em relação a você na direção + X e + Z. As cores estão erradas, mas contarei isso como uma limitação de idioma;)

Mas a pá é realmente feita de madeira e diamantes !!!!

Saída

Pá

quat
fonte