Golf su herramienta favorita de Minecraft

20

En Minecraft , las texturas predeterminadas de los elementos son imágenes razonablemente simples de 16 × 16 píxeles, lo que las hace parecer ideales para jugar al golf .

A continuación se presentan texturas simplificadas de las cinco herramientas de diamante "centrales" en Minecraft: pico , pala , hacha , espada y azada .

Las imágenes mostradas se amplían para mostrar sus detalles. Haga clic en una imagen para ver su versión de 16 × 16 píxeles de tamaño correcto.

pico pala hacha espada azada

Para facilitar el golf, modifiqué cada uno de los originales para usar solo los cinco mismos colores RGB de 24 bits:

  • R=75 G=82 B=73 para el fondo
  • R=51 G=235 B=203 para las cabezas de herramienta de diamante.
  • R=14 G=63 B=54 para los contornos de diamantes.
  • R=137 G=103 B=39 para el núcleo del mango de madera.
  • R=40 G=30 B=11 para los contornos de mango de madera.

Elija su herramienta favorita de los cinco y escribir un programa que simplifica su salidas 16 × 16 píxeles textura en cualquier formato de imagen de color verdadero sin pérdidas común (como bpm, png, ppm, etc.).

Entonces, por ejemplo, si elige el hacha, escribiría un programa que genere esta imagen: ejemplo de hacha

No se debe realizar ninguna entrada y no se requiere una conexión web. La imagen se puede generar como un archivo con el nombre que elija, o los datos del archivo de imagen sin formato se pueden generar en stdout, o simplemente puede mostrar la imagen.

Solo necesita elegir una de las cinco imágenes. El programa que genera cualquiera de las cinco imágenes en la menor cantidad de bytes es el ganador.

Puede escribir programas para más de una de las imágenes, pero solo el que tenga el número mínimo de bytes cuenta para su puntaje. Si hay un empate, el puesto más votado gana.


Si disfrutas PPCG y juegas Minecraft, te invito a unirte a nuestro servidor de prueba de Minecraft. Solo pregunta en la sala de chat dedicada .

Pasatiempos de Calvin
fuente
55
"Ampliado para mostrar detalles". Solo puedo pensar en cajas de cereales.
Alex A.
Creo que puede haber algunos problemas de compresión o tienes algunos errores tipográficos en los colores. Mathematica afirma que se usan estos cinco colores (al menos para la pala):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Martin Ender
@ MartinBüttner ¿Estás seguro? Volví a descargar la imagen de la pala y me aseguré de que los 5 colores sean correctos. También me aseguré de que hubiera exactamente 5 colores. imgur puede estar comprimiendo las imágenes ampliadas, pero esas no son las que debería usar.
Hobbies de Calvin
@ Calvin'sHobbies ¿Se permite la entrada?
Kritixi Lithos

Respuestas:

6

CJam, 119 bytes

Elegí la pala.

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

Pruébalo aquí.

Este programa imprime un archivo PPM en STDOUT.

Usé este script para ayudar a codificar la imagen. (Esto es principalmente para mí si necesito reutilizarlo más tarde).

La idea básica es desenrollar la imagen a lo largo de antidiagonales y luego usar codificación de longitud de ejecución. Con esta técnica, la pala contiene la menor cantidad de carreras. Como referencia, el número de ejecuciones por imagen (en el orden dado en el desafío) es:

{60, 26, 38, 43, 37}

Agregaré más explicaciones cuando termine de jugar golf.

Martin Ender
fuente
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"`)

Esto abusa mucho de las sombras de caja CSS3 para crear una versión pixelada de la imagen, en este caso, la azada Minecraft. El siguiente fragmento de pila utiliza ES5 para realizar pruebas fácilmente y no tiene nada de golf (tendrás que hacer zoom para verlo bien).

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

NinjaOsoMono
fuente
¿Podría acortarse esto usando codificación base64 en lugar de hexadecimal?
lirtosiast
66
La imagen fuente más grande es de 297 bytes. Un poco triste de haber superado eso :)
JB
@JB Es [kolmogorov-complex] por una razón;)
NinjaBearMonkey
@ThomasKwa ¿Base64 en realidad no lo hace más largo? (En realidad es base 17 porque hay gs cerca del final).
NinjaBearMonkey
No sé lo caro que es interpretar la codificación base64 en Javascript, pero el literal de la cadena en sí debería ser 2/3 del tamaño en base64 como en hexadecimal.
lirtosiast
2

Como este es un problema de Minecraft, haré una solución de bloque de comandos: 50 caracteres

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

crea un marco de elemento que muestra un hacha.

Lucas
fuente
2
Necesitas dar salida a una imagen .
Deusovi
1
La imagen se muestra en la pantalla como parte del juego.
Lucas
1
Debido a la perspectiva, nunca será una imagen perfecta, se supone que también es pixelart, solo 16x16.
Deusovi
3
Creo que esto califica como una escapatoria estándar, lo mismo que obtener la imagen de una fuente externa. Creo que hubiera estado bien convocar bloques para que actuaran como píxeles, con los colores lo más cerca posible.
Aficiones de Calvin
1
Cuento esto como una característica del lenguaje.
Lucas
1

Python 3, 483 bytes

Elegí hacer la 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')

Aquí está la salida: ingrese la descripción de la imagen aquí

Creé una cadena para cada color, y los combiné para obtener una cadena de números hexadecimales. Luego usé la biblioteca de imágenes de Python para convertir esa cadena en una imagen.

Anthony Roitman
fuente
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

Por supuesto, alguien tuvo que responder la pregunta con Minecraft. Coloque la respuesta dentro de un paquete de datos y ejecútelo con /function <packname>:<filename>. La pala se dibuja en relación con usted en la dirección + X y + Z. Los colores están mal pero lo contaré como una limitación de idioma;)

¡Pero la pala está hecha de madera y diamantes!

Salida

Palear

quat
fuente