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 , pá , 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 .


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 pá 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.


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"')


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.


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.


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á



oh ei, isso é legal!
— quat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.