Гольф - ваш улюблений інструмент Minecraft


20

У Minecraft текстури елементів за замовчуванням - це досить прості зображення розміром 16 × 16 пікселів, що робить їх ідеальними для гольфу .

Нижче наведені спрощені текстури п’яти «основних» алмазних інструментів Minecraft: кирки , лопата , сокира , меч та мотика .

Показані зображення збільшуються, щоб показати їх деталізацію. Клацніть на зображення, щоб переглянути його правильно розміром 16 × 16 пікселів.

кирка лопата сокира меч мотика

Щоб полегшити гольф, я змінив кожен із оригіналів, щоб використовувати лише п’ять однакових 24-бітових кольорів RGB:

  • R=75 G=82 B=73 для фону.
  • R=51 G=235 B=203 для головки алмазних інструментів.
  • R=14 G=63 B=54 для алмазних контурів.
  • R=137 G=103 B=39 для серцевини дерев'яної ручки.
  • R=40 G=30 B=11 для обрисів дерев'яної ручки.

Виберіть улюблений інструмент з п'яти і написати програму , яка виводить його спрощений 16 × 16 піксель текстури в будь-якому форматі без втрат загальної повноколірний зображень (наприклад bpm, png, ppmі т.д.).

Так, наприклад, якби ви вибрали сокиру, ви написали б програму, яка виводить це зображення: приклад сокири

Не слід брати жодних даних і веб-з'єднання не потрібно. Зображення може бути виведене у вигляді файлу з назвою на ваш вибір, або вихідні дані файлу зображення можуть бути виведені в stdout, або ви можете просто відобразити зображення.

Вам потрібно вибрати лише одне з п’яти зображень. Перемагає програма, яка видає будь-яке одне із п’яти зображень у найменшій кількості байтів.

Ви можете писати програми для більш ніж одного з зображень, але до вашого рахунку зараховується лише одне з мінімальною кількістю байтів. Якщо буде нічия, виграє найвищий пост, який проголосував.


Якщо вам подобається PPCG та граєте в Minecraft, я запрошую вас приєднатися до нашого пробного сервера Minecraft. Просто запитайте у спеціалізованій кімнаті для спілкування .


5
"Розширений, щоб показати деталі." Я можу лише думати про ящики з зерновими.
Олексій А.

Я думаю, що можуть виникнути певні проблеми стиснення або у вас є помилки в кольорах. Математика стверджує, що ці п’ять кольорів використовуються (принаймні для лопати):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Мартін Ендер,


@ MartinBüttner Ви впевнені? Я знову завантажив зображення лопати і переконався в правильності 5 кольорів. Я також переконався, що було рівно 5 кольорів. imgur може стискати збільшені зображення, але це не ті, якими слід користуватися.
Захоплення Кальвіна

@ Calvin'sHobbies Чи дозволено введення?
Kritixi Lithos

Відповіді:


6

CJam, 119 байт

Я вибрав лопату.

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

Тестуйте це тут.

Ця програма друкує файл PPM в STDOUT.

Я використовував цей сценарій для кодування зображення. (Це здебільшого для мене, якщо мені доведеться повторно використовувати його згодом.)

Основна ідея полягає в тому, щоб розгортати зображення вздовж антидіагоналів, а потім використовувати кодування по довжині. За допомогою цієї техніки лопата містить найменше пробіжок. Для довідки, кількість запусків на зображення (у порядку, вказаному в виклику) становить:

{60, 26, 38, 43, 37}

Я додам більше пояснень, коли закінчу гольф.


7

JavaScript ES6, 353 байти

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

Це сильно зловживає коробками-тінями CSS3 для створення пікселізованої версії зображення, в даному випадку мотикою Minecraft. У фрагменті стека нижче використовується ES5 для легкого тестування і він дещо нерозвалений (Вам доведеться збільшити масштаб, щоб добре його переглянути).

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


Чи можна це скоротити, використовуючи кодування base64 замість шестигранної?
lirtosiast

6
Найбільше вихідне зображення - 297 байт. Як-то сумно бути над цим :)
JB

@JB Це [kolmogorov-складність] чомусь;)
NinjaBearMonkey

@ThomasKwa Чи не base64 насправді робить це довше? (Це насправді база-17, тому що там gближче до кінця.)
NinjaBearMonkey,

Я не знаю, наскільки дороге інтерпретація кодування base64 в Javascript, але сам літеральний рядок повинен бути 2 / 3рс розміром у base64, як у шестигранному.
lirtosiast

2

Оскільки це проблема minecraft, я вирішу командний блок: 50 символів

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

створює предметний кадр із зображенням сокири.


2
Потрібно вивести зображення .
Deusovi

1
Зображення виводиться на екран як частина гри.
Лукас

1
Зважаючи на перспективу, це ніколи не буде ідеальним зображенням - це також повинен бути пікселярт, лише 16x16.
Deusovi

3
Я думаю, що це кваліфікується як стандартна лазівка ​​- те саме, що отримання зображення із зовнішнього джерела. Я думаю, було б добре викликати блоки, щоб вони виступали пікселями, з кольорами якомога ближче.
Захоплення Кальвіна

1
Я вважаю це мовною особливістю.
Лукас

1

Python 3, 483 байти

Я вирішив зробити меч

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

ось вихід: введіть тут опис зображення

Я створив рядок для кожного кольору та поєднав їх, щоб отримати рядок шістнадцяткових чисел. Потім я використав бібліотеку зображень python для перетворення цієї рядка в зображення.


1

Minecraft 18w11a (.функція), 757 байт

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

Звичайно, хтось повинен був відповісти на питання з Minecraft. Розмістіть відповідь всередині пакета даних та запустіть із ним /function <packname>:<filename>. Лопата намальована відносно вас у напрямку + X та + Z. Кольори неправильні, але я вважаю це обмеженням мови;)

Але лопата насправді зроблена з дерева та алмазів !!!!

Вихідні дані

Лопата



ой, це здорово!
quat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.