Golf Alat Minecraft Favorit Anda

20

Di Minecraft , tekstur item default semuanya adalah gambar 16x16 piksel yang cukup sederhana, yang membuatnya tampak ideal untuk bermain golf .

Di bawah ini adalah tekstur yang disederhanakan dari lima alat berlian "inti" di Minecraft: beliung , sekop , kapak , pedang , dan cangkul .

Gambar yang ditampilkan diperbesar untuk menunjukkan detailnya. Klik pada gambar untuk melihat versi 16x16 piksel berukuran benar.

beliung sekop kapak pedang cangkul

Untuk membuat golf lebih mudah, saya telah memodifikasi masing-masing dari aslinya dengan hanya menggunakan lima warna RGB 24-bit yang sama:

  • R=75 G=82 B=73 untuk latar belakang.
  • R=51 G=235 B=203 untuk kepala alat berlian.
  • R=14 G=63 B=54 untuk garis berlian.
  • R=137 G=103 B=39 untuk inti pegangan kayu.
  • R=40 G=30 B=11 untuk garis pegangan kayu.

Pilih alat favorit Anda dari lima dan menulis sebuah program yang output-nya disederhanakan 16 × 16 pixel tekstur dalam lossless umum Format truecolor gambar (seperti bpm, png, ppm, dll).

Jadi, misalnya, jika Anda memilih kapak, Anda akan menulis sebuah program yang menampilkan gambar ini: contoh kapak

Tidak ada input yang harus diambil dan koneksi web tidak diperlukan. Gambar dapat di-output sebagai file dengan nama pilihan Anda, atau data file gambar mentah dapat di-output ke stdout, atau Anda cukup menampilkan gambar.

Anda hanya perlu memilih satu dari lima gambar. Program yang menghasilkan salah satu dari lima gambar dalam jumlah byte paling sedikit adalah pemenangnya.

Anda dapat menulis program untuk lebih dari satu gambar, tetapi hanya program dengan jumlah byte minimum yang dihitung untuk skor Anda. Jika ada seri, pos terpilih tertinggi menang.


Jika Anda menikmati PPCG dan bermain Minecraft, saya mengundang Anda untuk bergabung dengan server Minecraft uji coba kami. Tanyakan saja di ruang obrolan khusus .

Hobi Calvin
sumber
5
"Diperbesar untuk menampilkan detail." Saya hanya bisa memikirkan kotak sereal.
Alex A.
Saya pikir mungkin ada beberapa masalah kompresi atau Anda memiliki kesalahan ketik dalam warna. Mathematica mengklaim, lima warna ini digunakan (setidaknya untuk sekop):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Martin Ender
@ MartinBüttner Anda yakin? Saya mengunduh ulang gambar sekop dan memastikan bahwa 5 warna sudah benar. Saya juga memastikan ada tepat 5 warna. imgur mungkin mengompresi gambar yang diperbesar tetapi itu bukan yang harus Anda gunakan.
Hobi Calvin
@ CalvinHobbies Apakah input diizinkan?
Kritixi Lithos

Jawaban:

6

CJam, 119 byte

Saya sudah memilih sekop.

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

Uji di sini.

Program ini mencetak file PPM ke STDOUT.

Saya menggunakan skrip ini untuk membantu penyandian gambar. (Ini sebagian besar untuk diriku sendiri jika aku perlu menggunakannya kembali nanti.)

Ide dasarnya adalah membuka gulungan gambar di sepanjang antidiagonals dan kemudian menggunakan pengkodean run-length. Dengan teknik ini, sekop berisi lintasan paling sedikit. Untuk referensi jumlah proses per gambar (dalam urutan yang diberikan dalam tantangan) adalah:

{60, 26, 38, 43, 37}

Saya akan menambahkan lebih banyak penjelasan ketika saya selesai bermain golf ini.

Martin Ender
sumber
7

JavaScript ES6, 353 byte

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

Ini sangat menyalahgunakan CSS3 bayangan kotak untuk membuat versi gambar yang pixelized, dalam hal ini cangkul Minecraft. Cuplikan Stack di bawah ini menggunakan ES5 untuk pengujian yang mudah dan agak ungolfed (Anda harus memperbesar untuk melihatnya dengan baik).

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
sumber
Mungkinkah ini dipersingkat dengan menggunakan pengkodean base64 bukan hex?
lirtosiast
6
Gambar sumber terbesar adalah 297 byte. Sedih rasanya bisa melupakan hal itu :)
JB
@JB Ini [kolmogorov-kompleksitas] karena suatu alasan;)
NinjaBearMonkey
@ThomasKwa Bukankah base64 benar-benar membuatnya lebih lama? (Ini sebenarnya basis-17 karena ada yang gmendekati akhir.)
NinjaBearMonkey
Saya tidak tahu seberapa mahal menafsirkan encoding base64 dalam Javascript, tetapi string literal itu sendiri harus 2 / 3rds ukuran dalam base64 seperti dalam hex.
lirtosiast
2

Karena ini adalah masalah minecraft, saya akan melakukan solusi blok perintah: 50 karakter

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

membuat bingkai item yang menunjukkan kapak.

Lucas
sumber
2
Anda perlu menampilkan gambar .
Deusovi
1
Gambar ditampilkan di layar sebagai bagian dari permainan.
Lucas
1
Karena perspektif, itu tidak akan pernah menjadi gambar yang sempurna - itu seharusnya pixelart juga, hanya 16x16.
Deusovi
3
Saya pikir ini memenuhi syarat sebagai celah standar - sama dengan mendapatkan gambar dari sumber eksternal. Saya pikir akan baik-baik saja untuk memanggil blok untuk bertindak sebagai piksel, dengan warna sedekat mungkin.
Calvin Hobbies
1
Saya menganggap ini sebagai fitur bahasa.
Lucas
1

Python 3, 483 byte

Saya memilih untuk membuat pedang

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

di sini adalah output: masukkan deskripsi gambar di sini

Saya membuat string untuk setiap warna, dan menggabungkannya untuk mendapatkan string angka heksadesimal. Lalu saya menggunakan pustaka gambar python untuk mengubah string itu menjadi gambar.

Anthony Roitman
sumber
1

Minecraft 18w11a (.mcfunction), 757 byte

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

Tentu saja seseorang harus menjawab pertanyaan dengan Minecraft. Tempatkan jawaban di dalam datapack, dan jalankan dengan /function <packname>:<filename>. Sekop ditarik relatif ke Anda dalam arah + X dan + Z. Warna salah tetapi saya akan menghitungnya sebagai batasan bahasa;)

Tapi sekop itu sebenarnya terbuat dari kayu dan berlian !!!!

Keluaran

Sekop

quat
sumber