Golf dein Lieblings-Minecraft-Tool

20

In Minecraft sind die Standardtexturen für Objekte alle recht einfache 16 × 16-Pixel-Bilder, weshalb sie für das Golfen ideal erscheinen .

Nachfolgend finden Sie vereinfachte Texturen der fünf "Kern" -Diamantwerkzeuge in Minecraft: Spitzhacke , Schaufel , Axt , Schwert und Hacke .

Die gezeigten Bilder werden vergrößert, um ihre Details zu zeigen. Klicken Sie auf ein Bild, um dessen 16 × 16-Pixel-Version in der richtigen Größe anzuzeigen.

Spitzhacke Schaufel Axt Schwert Hacke

Um das Golfen zu vereinfachen, habe ich jedes von ihnen gegenüber den Originalen modifiziert , dass nur die fünf gleichen 24-Bit-RGB-Farben verwendet werden:

  • R=75 G=82 B=73 für den Hintergrund.
  • R=51 G=235 B=203 für die Diamantwerkzeugköpfe.
  • R=14 G=63 B=54 für die Diamantkonturen.
  • R=137 G=103 B=39 für den Holzgriffkern.
  • R=40 G=30 B=11 für die Holzgriffkonturen.

Wählen Sie Ihre Lieblings - Tool aus dem fünf und ein Programm schreiben , dass die Ergebnisse seiner 16 vereinfacht × 16 Pixel - Textur in allen gängigen lossless Truecolor - Bildformat (wie zB bpm,png , ppmusw.).

Wenn Sie zum Beispiel die Axt wählen, schreiben Sie ein Programm, das dieses Bild ausgibt: Axt Beispiel

Es sollten keine Eingaben gemacht und keine Webverbindung benötigt werden. Das Bild kann als Datei mit dem Namen Ihrer Wahl ausgegeben werden, oder die Rohdaten der Bilddatei können auf stdout ausgegeben werden, oder Sie können das Bild einfach anzeigen.

Sie müssen nur eines der fünf Bilder auswählen . Das Programm, das eines der fünf Bilder mit der geringsten Anzahl von Bytes ausgibt, ist der Gewinner.

Sie können Programme für mehr als eines der Bilder schreiben, aber nur das mit der Mindestanzahl von Bytes zählt für Ihre Punktzahl. Bei Stimmengleichheit gewinnt der am höchsten gewählte Beitrag.


Wenn du PPCG magst und Minecraft spielst, lade ich dich ein, dich unserem Test-Minecraft-Server anzuschließen. Fragen Sie einfach im dafür vorgesehenen Chatroom .

Calvins Hobbys
quelle
5
"Vergrößert, um Details zu zeigen." Ich kann nur an Müslischachteln denken.
Alex A.
Ich denke, dass es einige Komprimierungsprobleme geben kann oder Sie einige Tippfehler in den Farben haben. Mathematica behauptet, diese fünf Farben werden verwendet (zumindest für die Schaufel):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Martin Ender
@ MartinBüttner Bist du sicher? Ich habe das Bild der Schaufel erneut heruntergeladen und sichergestellt, dass die 5 Farben korrekt sind. Ich habe auch dafür gesorgt, dass es genau 5 Farben gibt. Imgur komprimiert möglicherweise die vergrößerten Bilder, aber das sind nicht die, die Sie verwenden sollten.
Calvins Hobbys
@ Calvin'sHobbies Ist die Eingabe erlaubt?
Kritixi Lithos

Antworten:

6

CJam, 119 Bytes

Ich habe die Schaufel gewählt.

'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 es hier.

Dieses Programm druckt eine PPM-Datei nach STDOUT.

Ich habe dieses Skript zum Codieren des Bildes verwendet. (Dies ist hauptsächlich für mich selbst, wenn ich es später wiederverwenden muss.)

Die Grundidee besteht darin, das Bild entlang der Antidiagonalen abzurollen und dann die Lauflängencodierung zu verwenden. Mit dieser Technik enthält die Schaufel die wenigsten Läufe. Als Referenz ist die Anzahl der Läufe pro Bild (in der in der Challenge angegebenen Reihenfolge):

{60, 26, 38, 43, 37}

Ich werde weitere Erklärungen hinzufügen, wenn ich damit fertig bin.

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

Dies missbraucht stark CSS3- Box-Shadows , um eine pixelbasierte Version des Bildes zu erstellen, in diesem Fall die Minecraft-Hacke. Das Stapel-Snippet unten verwendet ES5 zum einfachen Testen und ist etwas ungolfed (Sie müssen zoomen, um es gut zu sehen).

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
quelle
Könnte dies durch die Verwendung von Base64-Codierung anstelle von Hex gekürzt werden?
Lirtosiast
6
Das größte Quellbild ist 297 Bytes. Ein bisschen traurig darüber hinweg zu sein :)
JB
@ JB Es ist [Kolmogorov-Komplexität] aus einem Grund;)
NinjaBearMonkey
@ThomasKwa Macht base64 es nicht länger? (Es ist eigentlich Basis-17, weil es gnahe am Ende ist.)
NinjaBearMonkey
Ich weiß nicht, wie teuer das Interpretieren der Base64-Codierung in Javascript ist, aber das String-Literal selbst sollte 2/3 der Größe in Base64 wie in Hex sein.
Lirtosiast
2

Da dies ein Minecraft-Problem ist, werde ich eine Befehlsblock-Lösung durchführen: 50 Zeichen

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

Erstellt einen Item-Frame mit einer Axt.

Lucas
quelle
2
Sie müssen ein Bild ausgeben .
Deusovi
1
Das Bild wird als Teil des Spiels auf dem Bildschirm ausgegeben.
Lucas
1
Aufgrund der Perspektive wird es nie ein perfektes Bild sein - es sollte auch Pixelart sein, nur 16x16.
Deusovi
3
Ich denke, dies ist eine Standardlücke - genau wie das Abrufen des Bildes von einer externen Quelle. Ich denke, es wäre in Ordnung gewesen, Blöcke zu beschwören, die als Pixel fungieren und deren Farben so nah wie möglich sind.
Calvins Hobbys
1
Ich zähle das als Sprachfeature.
Lucas
1

Python 3, 483 Bytes

Ich habe beschlossen, das Schwert zu machen

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

Hier ist die Ausgabe: Bildbeschreibung hier eingeben

Ich habe für jede Farbe eine Zeichenfolge erstellt und diese kombiniert, um eine Folge von Hexadezimalzahlen zu erhalten. Dann habe ich die Python-Bildbibliothek verwendet, um diesen String in ein Bild zu konvertieren.

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

Natürlich musste jemand die Frage mit Minecraft beantworten. Legen Sie die Antwort in ein Datenpaket und führen Sie sie mit aus/function <packname>:<filename> . Die Schaufel wird relativ zu Ihnen in der Richtung + X und + Z gezeichnet. Farben sind falsch, aber ich zähle das als Spracheinschränkung;)

Aber die Schaufel besteht eigentlich aus Holz und Diamanten !!!!

Ausgabe

Geschaufelt

quat
quelle