Golf swoje ulubione narzędzie Minecraft

20

W Minecraft wszystkie domyślne tekstury przedmiotów to dość proste obrazy 16 × 16 pikseli, co czyni je idealnymi do gry w golfa .

Poniżej znajdują się uproszczone tekstury pięciu „podstawowych” narzędzi diamentowych w Minecraft: kilof , łopata , topór , miecz i motyka .

Pokazane obrazy są powiększone, aby pokazać ich szczegóły. Kliknij obraz, aby wyświetlić jego prawidłową wersję 16 × 16 pikseli.

kilof łopata topór miecz motyka

Aby ułatwić grę w golfa, zmodyfikowałem każdy z oryginałów, aby używał tylko tych samych 24-bitowych kolorów RGB:

  • R=75 G=82 B=73 na tle.
  • R=51 G=235 B=203 do głowic diamentowych.
  • R=14 G=63 B=54 dla konturów diamentów.
  • R=137 G=103 B=39 do rdzenia drewnianego uchwytu.
  • R=40 G=30 B=11 do konturów drewnianej rączki.

Wybierz swojego ulubionego narzędzia z pięciu i napisać program, który wypisuje jej uproszczoną 16 x 16 pikseli tekstury w jakikolwiek wspólny format bezstratnej TrueColor obrazu (takich jak bpm, png, ppm, itd.).

Na przykład, jeśli wybierzesz siekierę, napiszesz program, który wyświetla ten obraz: przykład siekiery

Nie należy pobierać danych wejściowych i nie powinno być wymagane połączenie internetowe. Obraz może być wyprowadzany jako plik o wybranej przez ciebie nazwie, dane surowego pliku obrazu mogą być wyprowadzane na standardowe wyjście, lub możesz po prostu wyświetlić obraz.

Musisz tylko wybrać jeden z pięciu zdjęć. Program, który wysyła jeden z pięciu obrazów w jak najmniejszej liczbie bajtów, jest zwycięzcą.

Możesz pisać programy dla więcej niż jednego obrazu, ale tylko ten z minimalną liczbą bajtów liczy się do twojego wyniku. W przypadku remisu wygrywa post z największą liczbą głosów.


Jeśli lubisz PPCG i grasz w Minecraft, zapraszam do dołączenia do naszego próbnego serwera Minecraft. Po prostu zapytaj w dedykowanym czacie .

Hobby Calvina
źródło
5
„Powiększono, aby pokazać szczegóły”. Mogę myśleć tylko o pudełkach z płatkami.
Alex A.,
Myślę, że mogą wystąpić problemy z kompresją lub literówki w kolorach. Mathematica twierdzi, że używa się tych pięciu kolorów (przynajmniej dla łopaty):[[76 82 73] [26 63 54] [106 234 204] [39 30 13] [133 102 45]]
Martin Ender
@ MartinBüttner Czy jesteś pewien? Ponownie pobrałem obraz łopaty i upewniłem się, że 5 kolorów jest poprawnych. Upewniłem się również, że jest dokładnie 5 kolorów. imgur może kompresować powiększone obrazy, ale nie są to te, których powinieneś używać.
Calvin's Hobbies
@ Calvin'sHobbies Czy wprowadzanie danych jest dozwolone?
Kritixi Lithos

Odpowiedzi:

6

CJam, 119 bajtów

Wybrałem łopatę.

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

Sprawdź to tutaj.

Ten program drukuje plik PPM do STDOUT.

Użyłem tego skryptu, aby pomóc w kodowaniu obrazu. (Jest to głównie dla mnie, jeśli będę musiał użyć go później).

Podstawową ideą jest rozwinięcie obrazu wzdłuż antidiagonali, a następnie zastosowanie kodowania długości przebiegu. Dzięki tej technice łopata zawiera najmniejszą liczbę przebiegów. Dla porównania liczba przebiegów na obraz (w kolejności podanej w wyzwaniu) wynosi:

{60, 26, 38, 43, 37}

Dodam więcej wyjaśnień, kiedy skończę grać w golfa.

Martin Ender
źródło
7

JavaScript ES6, 353 bajtów

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

To mocno nadużywa cieni CSS3 , aby stworzyć pikselową wersję obrazu, w tym przypadku motykę Minecraft. Poniższy fragment stosu używa ES5 do łatwego testowania i jest nieco niezgolony (musisz go powiększyć, aby go dobrze zobaczyć).

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
źródło
Czy można to skrócić stosując kodowanie base64 zamiast hex?
lirtosiast
6
Największy obraz źródłowy ma 297 bajtów. Trochę mi przykro z tego powodu :)
JB
@JB To [złożoność kolmogorowa] z jakiegoś powodu;)
NinjaBearMonkey
@ThomasKwa Czy base64 tak naprawdę nie wydłuża go? (To właściwie baza 17, bo jest już gblisko końca.)
NinjaBearMonkey
Nie wiem, jak drogie jest interpretowanie kodowania base64 w Javascripcie, ale sam literał łańcuchowy powinien mieć rozmiar 2 / 3rds wielkości w base64 jak w systemie szesnastkowym.
lirtosiast
2

Ponieważ jest to problem Minecrafta, zrobię rozwiązanie bloku poleceń: 50 znaków

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

tworzy ramkę przedmiotu przedstawiającą topór.

Lucas
źródło
2
Musisz wydrukować obraz .
Deusovi
1
Obraz jest wyświetlany na ekranie jako część gry.
Lucas,
1
Ze względu na perspektywę, nigdy nie będzie to idealny obraz - ma to być także pixelart, tylko 16 x 16.
Deusovi
3
Myślę, że to kwalifikuje się jako standardowa luka - tak samo jak pobieranie obrazu z zewnętrznego źródła. Myślę, że byłoby w porządku przywołać bloki, by działały jak piksele, a kolory były jak najbliższe.
Calvin's Hobbies
1
Liczę to jako funkcję języka.
Lucas,
1

Python 3, 483 bajty

Zdecydowałem się na miecz

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

oto wynik: wprowadź opis zdjęcia tutaj

Utworzyłem ciąg dla każdego koloru i połączyłem je, aby uzyskać ciąg liczb szesnastkowych. Następnie użyłem biblioteki obrazów Python do konwersji tego ciągu na obraz.

Anthony Roitman
źródło
1

Minecraft 18w11a (.mcfunction), 757 bajtów

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

Oczywiście ktoś musiał odpowiedzieć na pytanie za pomocą Minecraft. Umieść odpowiedź w pakiecie danych i uruchom /function <packname>:<filename>. Łopata jest rysowana względem ciebie w kierunku + X i + Z. Kolory są nieprawidłowe, ale liczę to jako ograniczenie językowe;)

Ale łopata jest faktycznie wykonana z drewna i diamentów !!!!

Wynik

Łopata

quat
źródło