Wygeneruj siatkę kolorów RGB


47

To! to siatka kolorów RGB ...

Podstawowa siatka RGB

Zasadniczo jest to dwuwymiarowa matryca, w której:

  • Pierwszy wiersz i pierwsza kolumna są czerwone.
  • Drugi rząd i druga kolumna są zielone.
  • Trzeci rząd i trzecia kolumna są niebieskie.

Oto kolory opisane graficznie za pomocą liter R, G i B.

schemat wierszy i kolumn

Oto jak obliczamy kolor każdej przestrzeni na siatce.

  • Czerwony + czerwony = czerwony (# FF0000)
  • Zielony + zielony = zielony (# 00FF00)
  • Niebieski + niebieski = niebieski (# 0000FF)
  • Czerwony + zielony = żółty (# FFFF00)
  • Czerwony + Niebieski = Fioletowy (# FF00FF)
  • Zielony + niebieski = turkusowy (# 00FFFF)

Wyzwanie

  • Napisz kod, aby wygenerować siatkę kolorów RGB.
  • To jest golf golfowy, więc spróbuj zrobić to w jak najmniejszej liczbie bajtów.
  • Użyj dowolnego języka programowania lub języka znaczników, aby wygenerować siatkę.
  • Rzeczy, na których mi zależy:
    • Wynik powinien graficznie wyświetlać siatkę RGB ze zdefiniowanymi kolorami.
  • Rzeczy, na których mi nie zależy:
    • Jeśli dane wyjściowe to obraz, HTML, SVG lub inny znacznik.
    • Rozmiar lub kształt bloków kolorów.
    • Granice, odstępy itp. Między blokami lub wokół nich.
    • Na pewno nie musi mieć etykiet informujących o tym, jakie powinny być kolory wierszy i kolumn.

2
Czy możemy wyprowadzić obiekt mag natywny dla naszego języka, na przykład Bitmapobiekt w C #?
Wcielenie nieznajomości

1
@EmbodimentofIgnorance brzmi dla mnie dobrze.
AJFaraday

11
Czekam na rozwiązanie w Piet
manassehkatz

4
@manassehkatz Czy to możliwe, że kodowanie danych byłoby lepszym golfem niż ich wykonanie?
AJFaraday

3
Nie, żeby to naprawdę miało znaczenie, ale osobiście użyłbym cyjanu i magenty zamiast turkusu i fioletu (lub czegokolwiek innego). O ile mi wiadomo, są to oficjalne terminy używane w drukowaniu lub odejmowaniu kolorowych modeli, takich jak CMYK .
Arnauld

Odpowiedzi:


34

Bash, 44

  • 2 bajty zapisane dzięki @NahuelFouilleul
  • 2 bajty zapisane dzięki @manatwork
printf "${f=^[[3%dm.}$f$f
" 1 3 5 3 2 6 5 6 4

Tutaj bloki są .znakami. ^[to dosłowny znak zmiany znaczenia ASCII (0x1b).

wprowadź opis zdjęcia tutaj

Możesz odtworzyć ten skrypt w następujący sposób:

base64 -d <<< cHJpbnRmICIke2Y9G1szJWRtLn0kZiRmCiIgMSAzIDUgMyAyIDYgNSA2IDQ= > rgbgrid.sh

11
Co za cholera? proszę wyjaśnij :)
flawr

1
może zaoszczędzić 2 bajty za pomocą rozszerzenia powłokiprintf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
Nahuel Fouilleul

1
Ten naprawdę rozjaśnił mój dzień, dziękuję!
AJFaraday

4
printf \\e[3%dm. 1'rozwija się do \\e[31m.którego jest kod ucieczkowy ANSI dla czerwonego itd. i .jest znakiem do wydrukowania.
Fredrik Pihl

3
Kontynuując sugestię @ NahuelFouilleul, zacytuj ją dwukrotnie: printf "${f=^[[3%dm.}$f$f␤" 1 3 5 3 2 6 5 6 4(Gdzie ^[dosłowny znak ucieczki = 1 bajt i ␤ dosłowny znak nowej linii = 1 bajt.)
manatwork

26

Zestaw 8088, IBM PC DOS,  44  43 bajty

Wymienianie kolejno:

BE 0122     MOV  SI, OFFSET CTBL    ; load color bar table into [SI]
        LOOP_COLOR: 
B9 0001     MOV  CX, 1              ; display 1 char and clear CH (changed by INT 10H:3)
AC          LODSB                   ; load next color byte 
8A D8       MOV  BL, AL             ; move new color to BL
3C 10       CMP  AL, 010H           ; if this is third color in row: SF=0, CF=0 
                                    ; else if last color: SF=1, CF=0
                                    ; else continue on same row: CF=1
B8 09DB     MOV  AX, 09DBH          ; AH=9 (write char with attr), AL=0DBH (a block char) 
CD 10       INT  10H                ; call PC BIOS, display color block
B4 03       MOV  AH, 3              ; get cursor position function
CD 10       INT  10H                ; call PC BIOS, get cursor
72 04       JC   NEXT_COL           ; if not last in row, move to next column 
78 09       JS   EXIT               ; if last color, exit 
B2 FF       MOV  DL, -1             ; otherwise move to first column and next row 
        NEXT_COL:
42          INC  DX                 ; move to next column (and/or row)
B4 02       MOV  AH, 2              ; set cursor position function 
CD 10       INT  10H                ; call PC BIOS, set cursor position
EB E2       JMP  LOOP_COLOR         ; loop to next color byte 
        EXIT:
C3          RET                     ; return to DOS
CTBL    DB  0CH, 0EH, 1DH, 0EH, 0AH, 1BH, 0DH, 0BH, 91H ; color table

Używa INT 10Husług wideo IBM PC BIOS do zapisywania siatki kolorów na ekranie. Niestety jedyny sposób na zapisanie określonego atrybutu koloru wymaga również napisania kodu, aby umieścić kursor w następnej poprawnej lokalizacji, więc jest na to wiele dodatkowego kodu.

Oto dane wyjściowe działające na komputerze IBM PC CGA (w trybie tekstowym 40x25, aby je powiększyć).

wprowadź opis zdjęcia tutaj

Pobierz i przetestuj RGBGRID.COM dla DOS.


1
Czy to zadziała w dos, prib nie, ale byłoby fajnie, gdyby tak się stało.
marszałkowiec

@marshalcraft Tak, w rzeczywistości będzie to działać tylko w systemie DOS lub przy użyciu emulatora DOS, takiego jak DOSBox, pcjs.org itp. Dodałem link do pobrania pliku wykonywalnego, abyś mógł spróbować.
640 KB

Windows jest wyposażony w emulator ograniczonej dos, prawdopodobnie teraz nazywany wierszem poleceń, który prawdopodobnie powinienem powiedzieć, byłby fajny, gdyby działał z cmd lub haha ​​PowerShell.
marszałkowiec

1
@marshalcraft Masz rację, ale ponieważ dotyczy DOS, jest to 16-bitowy plik wykonywalny, a jeśli masz 32-bitową wersję systemu Windows, powinien on faktycznie działać, ponieważ ma 16-bitowe środowisko wykonawcze. Jednak 64-bitowa wersja systemu Windows nie będzie go uruchamiać, ponieważ ma tylko 32-bitowe środowisko wykonawcze.
640 KB

1
Boże, to fajna odpowiedź
Samy Bencherif


18

Kod maszynowy 80386, IBM PC DOS, 38 bajtów

klątwa:

B0 13 CD 10 68 00 A0 1F 66 C7 06 00 00 28 2C 24
00 66 C7 06 40 01 2C 30 34 00 66 C7 06 80 02 24
34 20 00 CD 16 C3

jako M:

mov al,13h
int 10h ; initialize vga 13h mode (320x200x256 colors)
push 0a000h
pop ds ; push video buffer address to ds
mov dword ptr ds:0, 242c28h ; print 3 pixels
mov dword ptr ds:320, 34302ch ; print 3 pixels
mov dword ptr ds:640, 203424h ; print 3 pixels
int 16h ; wait for any keypress
ret ; exit to os

skalowane wyjście z dosbox:

wprowadź opis zdjęcia tutaj


Zauważ, że mov al, 13hjest to niepoprawne, chyba że DOSBox gwarantuje, że będzie w ah = 0punkcie wejścia programu.
Margaret Bloom

@MargaretBloom ax jest 0 na początku aplikacji com w ms dos
Iłya Bursov

Dzięki Iłya, dobrze wiedzieć!
Margaret Bloom

18

Excel VBA (natychmiastowe okno), 80 bajtów

For i=1To 9:Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1):Next

Excel VBA (funkcja), 96 bajtów

Sub g()
For i=1To 9
Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1)
Next
End Sub

Nie jest to okropne narzędzie do pracy ... Doceniam fakt, że Excel już pokazuje siatkę, więc kwestią jest ustawienie koloru tła.

Siatka kolorów Excel

Podziękowania dla @Neil za sugestię, żebym użył ColorIndexzamiast Colorprowadzić do 43 bajtów oszczędności.

-21 bajtów dzięki @Keeta

-16 bajtów dzięki @Chronocidal za sugerowanie „natychmiastowego okna”

-2 bajty dzięki @i_saw_drones

Wiele zmian w stosunku do mojego oryginalnego zgłoszenia :)


1
Prawdopodobnie lepiej byś to zrobił, ColorIndexponieważ jest to liczba od 3 do 8, którą możesz zakodować w łańcuchu lub czymś podobnym.
Neil

@Neil - Rzeczywiście :) Dzięki temu mogłem uzyskać nieco krótszą wersję. Dzięki za wskazówkę.
dana

Nie widziałem niczego, co powstrzymałoby cię od zmiany tego na Sub F () i End Sub, aby uzyskać więcej oszczędności.
Keeta

1
Nie włączaj tej funkcji i uruchom ją w Natychmiastowym oknie, aby upuścić 21 bajtów:for i=1 To 3:for j=1 To 3:Cells(i,j).Interior.ColorIndex=Mid("367408005",i*j,1):next j,i
Chronocidal

1
Możesz również usunąć cudzysłowy z ciągu, VBA automatycznie wymusi liczbę na ciąg.
i_saw_drones

16

GFA Basic 2.02 (Atari ST), 48 bajtów

Ręcznie edytowany wpis w formacie .LST. Obejmuje wiele znaków niedrukowalnych, których kody są pokazane w nawiasach.

?"[ESC]c[SOH] [ESC]c[ETX] [ESC]c[ENQ] "[CR]
?"[ESC]c[ETX] [ESC]c[STX] [ESC]c[ACK] "[CR]
?"[ESC]c[ENQ] [ESC]c[ACK] [ESC]c[EOT] "[CR]

System operacyjny Atari ST definiuje rozszerzone polecenia VT52, które są tutaj używane.

Wynik

Wyjście jest blok 24×24 pikseli (9 spacjami z 8×8 pikseli).

wynik

zrzut ekranu ze Steem SSE


+1 za zrobienie ze mnie nostalgii za moim zaufanym starym ST.
Wossname

16

SVG, 210 182 bajtów

<svg><path d="h3v3h-3" fill=#f0f/><path d="h2v2h-2" fill=#ff0/><path d="m1 1h2v2h-2" fill=#0ff/><line x2=1 stroke=red/><path d="m1 1h1v1h-1" fill=#0f0/><path d="m2 2h1v1" fill=#00f/>

Ponieważ rozmiar lub kształt bloków kolorów nie ma znaczenia, można rozegrać kilka bajtów za pomocą tego nieco dziwnego układu:

układ SVG


Naprawdę podoba mi się pomysłowość tego rozwiązania.
AJFaraday

16

HTML + CSS, 121 120 bajtów

Najgorszy fragment HTML, jaki kiedykolwiek napisałem. Oszczędność jednego bajtu dzięki @Gust van de Wal

b{color:#ff0}a{color:cyan}i{color:lime}u{color:blue
<pre><body bgcolor=#f0f text=red><b>█
█<i><a>█
 █<u>

HTML + CSS, 114 bajtów (pół poprawny)

Podaję to jako częściowo poprawne, ponieważ niebieski nie jest dokładnie # 0000FF niebieski, a także polega na tym, że nie kliknął linku.

Dzięki @Lynn za pomysł

b{color:#ff0}i{color:lime}c{color:cyan
<pre><body bgcolor=#f0f text=red><b>█
█<i><c>█
 █<a href=x>


3
Możesz pominąć ostatni nawias zamykający w CSS. Także niesamowita (i obrzydliwa) praca!
Gust van de Wal

3
Można zmienić nazwy znaczników w celu uniknięcia domyślne formatowanie CSS, np <w>, <x>, <y>, i <z>.
darrylyeo

1
<a href=x>█będzie domyślnie niebieski, oszczędzając Ci trochę bajtów CSS :)
Lynn,

15

ditaa , 118 bajtów

/----+----+----\
|cF00|cFF0|cF0F|
+----+----+----+
|cFF0|c0F0|c0FF|
+----+----+----+
|cF0F|c0FF|c00F|
\----+----+----/

To jest wynik przy użyciu -Eopcji:

wprowadź opis zdjęcia tutaj


13

R, 89 50 48 bajtów

Najnowsza wersja:

image(matrix(c(6,4,5,2:4,1,2),3),col=rainbow(6))

Za mało elementów w wektorze do wypełnienia macierzy 3x3, więc zawija się i ponownie wykorzystuje pierwszy element.

Stare wersje:

image(matrix(c(6,4,5,2:4,1,2,6),3),col=rainbow(6))

image(matrix(c(3,5,6,2,4,5,1:3),3),col=c('red','yellow','magenta','green','cyan','blue'))

wprowadź opis zdjęcia tutaj


3
Witamy w PPCG!
Wcielenie nieznajomości

1
wow, to Rainbow Six !
Yong Quan

@alephalpha Yikes, nie mogę uwierzyć, że mi tego brakowało. Poszedłem dalej i naprawiłem najstarszą wersję i liczbę znaków
anjama

12

Excel-VBA, 89 73 72 70 bajtów

Edycja: Możesz użyć bezpośredniego okna i zrezygnować z Sub/, End Subaby zapisać 16 bajtów:

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Next

Oryginalna odpowiedź:

Sub a()
For i=1To 9
[A1:C3].Cells(i).Interior.ColorIndex=Mid(367648785,i,1)
Next
End Sub

Zostało to zainspirowane sugestią Neila dotyczącą tej odpowiedzi i jest to moje pierwsze zgłoszenie!

Wynik:

Siatka wyników

-2 bajty : Usunięcie numerów wierszy komórek - dzięki Taylor Scott !


3
Witamy w PPCG!
Johan du Toit

1
Dziękuję Ci! Mam nadzieję, że nauczę się sztuczek od mistrzów :)
i_saw_drones

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Nextza 70
Taylor Scott

11

Perl 6 (i prawdopodobnie podobny w wielu językach) (31 bajtów)

{'ÿ   ÿÿÿ ÿ ÿÿ  ÿ ÿÿÿ ÿ ÿÿ  ÿ'}   # replace spaces with ASCII 00
                                  # which I can't seem to enter

Powoduje to wygenerowanie bezgłowego pliku TIFF, który był wcześniej generowany przez program Photoshop z rozszerzeniem .raw i jest uważany za kwadratowy, chyba że w momencie otwarcia określono inaczej. Zabawa z głębią kolorów (jeśli jest dozwolona) może to jeszcze bardziej zmniejszyć.


11

ffplay (ffmpeg), 93 bajty

ffplay -f rawvideo -s 3x3 -pix_fmt rgb24 "data:/;base64,/wAA//8A/wD///8AAP8AAP///wD/AP//AAD/"

Stary :

ffplay -f lavfi -i testsrc=s=3x3,geq=r=255*not(X*Y):g=255*not((X-1)*(Y-1)):b=255*not((X-2)*(Y-2))

10

TEX(MathJax), 122bajty

Golf'd:

$\def\c#1{\color{#1}{\rule{5em}{5em}}}\c{red}\c{yellow}\c{fuchsia}\\\c{yellow}\c{lime}\c{aqua}\\\c{fuchsia}\c{aqua}\c{blue}$

Ungolf'd:

$$
\def\coloredBox#1{\color{#1}{\rule{5em}{5em}}}
\coloredBox{red}
\coloredBox{yellow}
\coloredBox{fuchsia} \\
\coloredBox{yellow}
\coloredBox{lime}
\coloredBox{aqua}    \\
\coloredBox{fuchsia}
\coloredBox{aqua}
\coloredBox{blue}
$$

Edycje:

  1. Dzięki @flawr za wskazanie, jak naprawić kolory!

  2. Mógł się ogolić 14bytes\rule{5em}{5em}

    , ale po prostu nie wygląda tak samo.

  3. Mógłby prawdopodobnie zgolić jeszcze kilka bajtów, znajdując nazwy kolorów, które akceptowalnie przypominają zamierzone kolory.

  4. TEX're

    RedZielonyniebieskiCzerwonyZielonyniebieski.


1
Myślę, że twoje kolory są nieprawidłowe. Ale oprócz tego zagłosowałbym za twoim postem, choćby dla samego tytułu :)
flawr

T.miX

1
Wygląda na to, że mathjax używa nazw kolorów css. Więc można wymienić purplesię fuchsiai tealze aquai greenze limepotem wszystko byłoby poprawne myślę.
flawr

Dla przypomnienia: powyższe mogłoby być trochę bardziej golfa, usuwając niektóre {}. Ale to naruszyłoby zbyt wiele zasad czystego kodowania dla mojego zdrowia psychicznego. = P
Nat

5
Pamiętaj tylko, że społeczność PPCG nigdy nie była znana ze swojego rozsądku. Prawdopodobnie z powodu jego braku.
flawr

10

Lua + LÖVE / Love2D , 186 183 bajtów

t={[0>1]=0,[0<1]=1}l=love g=l.graphics function l.draw()for i=1,3 do for j=1,3 do g.setColor(t[i<2 or j<2],t[i==2 or j==2],t[i>2 or j>2])g.rectangle('fill',j*10,i*10,10,10)end end end

Wypróbuj online!

wprowadź opis zdjęcia tutaj

Mój pierwszy wpis do golfa!


1
Witamy w Code Golf! Dobra robota!
AJFaraday

1
Myślę, że można używać wyrażeń w tabeli prawdy t={[0>1]=0,[0<1]=1}.
manatwork

1
@manatwork Smart!
Sheepolution

kolejny löver, miło cię tu widzieć
Lycea

10

MATL, 44 23 21 20 19 bajtów

Bezpośredni port mojej odpowiedzi Octave z sugestiami @ExpiredData i @LuisMendo.

126973007Bo7B3*e0YG

spróbuj online


9

Octave / MATLAB , 57 56 40 bajtów

-17 bajtów dzięki @ExpiredData! Sprawdź ich jeszcze bardziej golfowe rozwiązanie !

image(reshape(de2bi(126973007),[3,3,3]))

Wypróbuj online!


1
Czy tylko obraz działa zamiast imshow? Nie mam już licencji Matlab, a ja rozmawiam przez telefon, więc nie mogę jej przetestować
data wygasła

2
@ExpiredData Dziękuję bardzo, to naprawdę działa!
flawr

2
Prawdopodobnie możesz to zrobić. Wypróbuj online!
Data wygasła

1
@ExpiredData --- Bardzo fajna sztuczka, wielkie dzięki! :) --- dlaczego nie opublikujesz tego jako własnej odpowiedzi?
flawr

3
Ok, zrobię to
Data wygasła

9

Ciąg Factorio Blueprint, 705 bajtów

Przyznaję, że przekraczam granice tego, co liczy się jako rozwiązanie.

0eNrdWNGOqyAQ/ReedeNo0daH/ZHNTYOW7ZJFNAi91zT99wua7ZpdaaT1pb40oQ6HOecwA3pGBde0kUwolJ8RK2vRovztjFp2FITb/1TXUJQjpmiFAiRIZUdtzYkMGyIoR5cAMXGg/1AOlz8BokIxxegA0w+6vdBVQaUJuAKQstSV5kTV0qA2dWvm1MKuZ3FecIA6lIf4BV8uwS+YeDKPXzBhPKAkUxjJPAy4AbG5QljZFBEqLOuqYGKa1Vc6YAQzE5Ss+b6gH+TETLQJeWdcUemQ/8Sk0oSPHOgjQkkPqMfT1kEYWzEsI2hpc2gtFtgfO2NkDTMjbIKnCOLv1SrCechJ1UzwSm7zKpksNVN78+xwnffOZKv2s2kS0akPJo4D10FslEd2UDVE9oLn6NU+1i01S/HaKqmkpvNl2DhkSGfJEK1Eha1DhWyWCmvZCzuHCtu7aj5asuQ7ynn99/GqT0f07BjAwXnnx3kohEW7XMPE5+OEs5+EUwdhiL4T0IVh3LNzHlMwfUoB+LTPeK19A2LPkoGbety1f46SUvH4BoLExTHxOCKe3mmIXTJ43ogGp5MlnS47soTR+GeryFyUscex+PzOu65IkPr0OrzW2wFkHn0Ar3c3eN6S4pt63NUH7GvtAn3AafTOo+yf3+jhbDcv9/1XgHz00SBAJ+NNn3uWRJDiDcDWXIf+Aya7oEk=

Produkowane wyjście po umieszczeniu w grze (używane niskie ustawienia grafiki):

wprowadź opis zdjęcia tutaj

Aby udowodnić, że jest to prawidłowe rozwiązanie, musisz dokładnie wypróbować tę siatkę pikseli, która dokładnie odpowiada specyfikacji:

wprowadź opis zdjęcia tutaj

Reszta obrazu jest klasyfikowana jako obramowanie lub odstęp, który, jak powiedziano w pytaniu, nie ma znaczenia.



8

HTML / CSS, 278 141 137 bajtów

r{color:red}y{color:#ff0}m{color:#f0f}g{color:#0f0}c{color:#0ff}l{color:#00f
<pre><r><y><m><y><g><c><m><c><l>

-137 bajtów dzięki komentującym, w szczególności @data
-4 bajtów dzięki @Einacio

Używa Unicode (U + 2588) dla „bloków” i używa klas CSS / stylu wbudowanego do ich pokolorowania.

<font>Wydaje mi się, że tagi można bardziej zagrać w golfa, jednak zmiana ich na krótszą, na przykład <a>złamanie coloratrybutu


1
Opuścić </td>, przeglądarka jest wystarczająco inteligentny, aby automatycznie dodać ten tag zamykający
Ferrybig

3
Jeśli używasz przestarzałych elementów, możesz także określić kolor tła komórki, używając<td bgcolor=#f00>
Ferrybig

2
Może pytanie noob, ale nie możesz uniknąć korzystania ze stołu i po prostu wydrukować █ i przejść do nowej linii z <br>?
frarugi87

1
@ frarugi87 tak - 235 łącznie:<span style="color:red">█<span class=a>█<span class=b>█<br><span class=a>█<span style="color:#0f0">█<span class=c>█<br><span class=b>█<span class=c>█<span style="color:#00f">█
Tylko ASCII

1
@ Tylko ASCII b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <kolor czcionki = wapno> █ <i> █ <u> █ <i> █ <kolor czcionki = niebieski> █
dane

7

JavaScript, 108 102 bajtów

console.log(`%c█%c█%c█
`.repeat(3),...[...`320251014`].map(c=>`color:#`+`f0ff00f0`.substr(c,3)))

Brak fragmentu, ponieważ działa tylko w prawdziwej konsoli przeglądarki, a nie w konsoli fragmentu. Edycja: Dzięki @AJFaraday za zrzut ekranu. Objaśnienie: Przeglądarki zezwalają, aby pierwszy parametr console.logobejmował podstawienia. %cPodstawienie przyjmuje parametr i stosuje je jako (oczyszczone) CSS. Każdy blok jest więc pokolorowany przy użyciu odpowiedniego podciągu f0ff00f0interpretowanego jako trzycyfrowy kod koloru.

Przykład wykonania kodu


1
Nie rozumiem, jak to działa?
marszałkowiec

1
@marshalcraft %csłuży do tworzenia łańcucha formatu, argumentami są style CSS tekstu po nim
tylko ASCII

1
Więc to jest w zasadzie jak wersje dos, ale z przeglądarką chrome?
marszałkowiec

1
Ciekawe, ale jak poszedłeś znaleźć najkrótszy możliwy ciąg fs / 0 do użycia?
Marie

2
@Marie Zacząłem od zauważenia, że ff0ffzawiera wszystkie mieszane kolory i 00f00zawiera wszystkie czyste kolory. Jeśli połączysz je, otrzymasz zduplikowane pozycje ff0i f00możesz następnie usunąć pierwszy i ostatni znak. Następnie napisałem krótki skrypt, aby sprawdzić wszystkie ciągi 7 znaków, aby upewnić się, że 8 jest optymalny.
Neil

7

HTML (GIF), 108 bajtów

To bitwa internetowych formatów graficznych! (Czy istnieje jakiś pretendent do TIF lub JPG?)

Odpowiedz przez @AC .

<img src=data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7>


HTML (BMP), 116 115 bajtów

Odpowiedz tylko przez @ ASCII .

<img src=data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA>


HTML (WebP), 116 bajtów

Odpowiedz przez @Hohmannfan .

<img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>


HTML (PNG), 151 136 135 bajtów

-15 bajtów dzięki @Hohmannfan .

<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII>


Zobacz także moje odpowiedzi CSS i SVG .


3
Dobry pomysł, ale ... Wydaje mi się, że plik 89 bajtów dla obrazu 9 pikseli to trochę za dużo. Może ręczne napisanie nagłówka BMP może zagrać w golfa. Jeśli się nie mylę, nagi minimalny nagłówek ma 26 bajtów, a 12 rzeczywistych danych (3 rzędy 4 pikseli) może przyciąć obraz do 38 bajtów, co w base64 oznacza 51 lub 52 znaków zamiast 119
frarugi87

2
118: <img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">. 14-bajtowy nagłówek pliku, 12-bajtowy nagłówek aplikacji, 9 rzeczywistych danych na wiersz (od +3 do wielokrotności 4), tak
tylko ASCII

2
Nie liczyłem, ale podejrzewam, że <img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">jest krótszy
AC

2
Oto plik png, który jest 15 bajtów mniejszy, gdy kodowany jest base64:iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
Hohmannfan

2
Aby kontynuować bitwę formatu, oto bezstratne rozwiązanie WebP. Nie mogę już tego wyciąć bez naruszenia specyfikacji, więc został pobity przez BMP przy 116 bajtach. <img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
Hohmannfan

6

dc (na xterm), 64 bajty

Fi16[AP]sF36dD6r31 101dD6rD1[1CP61P[38;5;]Pn[mX]Pz3%0=Fz0<M]dsMx

Zamiast kolorów dostaniesz kilka zwariowanych kodów ucieczki, ale nadal możesz wypróbować online!

W moim rozumieniu 16 podstawowych kolorów ANSI można interpretować dowolnie, jak chce terminal. Z drugiej strony 216 kolorów w sześcianie kolorów xterm ma wyraźne wartości RGB. Używam tych kodów i drukuję siatkę Xs:

pęczek kolorowych „x”

Najpierw ustawiamy podstawową podstawkę na bazę 15 za pomocą Fi. Kosztuje to dwa bajty, ale daje trzy, więc ... zysk netto bajtu (i duża utrata czytelności). Następnie staramy się umieścić nasze wartości kolorów na stosie. W systemie dziesiętnym byłoby to21 51 201 51 46 226 201 226 196 , ale jesteśmy w trybie zwariowanym, więc tak będzie 16 36 D6 36 31 101 D6 101 D1. Eliminujemy jedną ze spacji, wprowadzając makro, które w pewnym momencie musimy zdefiniować [AP]sF(co po prostu drukuje linię). Możemy się zmniejszyć 36 D6 36i 101 D6 101umieszczając pierwszą wartość na stosie, powielając ją, umieszczając drugą, a następnie zamieniając ( 36dD6r, 101dD6r).

Makro Mobsługuje drukowanie i tak dalej. 1CPdrukuje znak ucieczki. Wsporniki służą do oddzielania ciągów, io ile wiem nie są escapable, więc musimy wydrukować wspornik z wartością ASCII jak dobrze 61P. [38;5;]Pjest kodem „ustaw kolor pierwszego planu z listy numerowanej”. nwypisuje wartość z góry stosu bez nowej linii, popping ją. [mX]Pkończy kod i wypisuje „X”. z3%0=Fsprawdza mod 3 głębokości stosu, uruchamiając w Frazie potrzeby nasze makro przesunięcia wiersza . z0<Mutrzymuje Mdziała tak długo, jak nie ma rzeczy na stosie.dsMxbiegać.

Zauważ, że jeśli uruchomisz to w DC w Xtermie, kolor pierwszego planu pozostanie niebieski. 1CP61P74P(dane wejściowe pokazane na zrzucie ekranu) powinny to zresetować.


6

Zablokowany żółw, 45 bloków

Wypróbuj online!

A może zagramy w grę polegającą na znalezieniu najbardziej absurdalnego narzędzia do tego zadania?

Wynik:

Chwalebne wyjście tego chwalebnego kawałka gównianego programowania

Program (jako zrzut ekranu dla dodatkowej herezji):

Program jako zrzut ekranu dla dodatkowej herezji

Uwaga: Wyszarzone bloki są również liczone do metryki.


1
Chciałbym, żeby to było standardowe wyzwanie PCG! Zamiast tego dzieje się to organicznie na niektórych łamigłówkach golfowych
AJFaraday

5

Node.js, 79 bajtów

require('fs').writeFile(a='P',a+[...'3331100110101110010011101011001'].join` `)

Tworzy plik o nazwie „P” w formacie PPM zawierający siatkę kolorów.


5

TI-Basic, x bajtów (zdobędzie, gdy będę mógł)

Uwaga: filtr zawartości blokuje mi wyszukiwanie wielkości tokenów dla każdego z tych poleceń. Jeśli ktoś chce dla mnie strzelić, idź po niego.

TextColor(11
Text(0,0,"0"
TextColor(19
Text(0,2,"0"
Text(2,0,"0"
TextColor(13
Text(4,0,"0"
Text(0,4,"0"
TextColor(14
Text(2,2,"0"
TextColor(18
Text(2,4,"0"
Text(4,2,"0"
TextColor(17
Text(4,4,"0"

Wygląda to naprawdę źle na moim małym ekranie kalkulatora. Ale hej, kształt nie ma znaczenia: ^)

Wydajność golfa: Zmodyfikowana dla 8x większej wydajności:

wprowadź opis zdjęcia tutaj



wprowadź opis zdjęcia tutaj



TI-BASIC, x bajtów

Używanie Pxl-On zamiast tekstu:

Pxl-On(0,0,11
Pxl-On(0,1,19
Pxl-On(0,2,13
Pxl-On(1,0,19
Pxl-On(1,1,14
Pxl-On(1,2,18
Pxl-On(2,0,13
Pxl-On(2,1,18
Pxl-On(2,2,17

Wyjście: wysadzone w powietrze ~ 11x:

wprowadź opis zdjęcia tutaj



wprowadź opis zdjęcia tutaj


Ma 180 znaków, z wyłączeniem podziałów linii. Nie jestem pewien, jak / jeśli liczone są przerwy linii w golfowym kodzie.
Nat

4
Tak, ale TI-BASIC jest językiem tokenizowanym - na przykład interpreter widzi TextColor2 bajty, a nie 9, jak można oczekiwać @Nat
Benjamin Urquhart

4

C ++, SFML, 177 bajtów

#include<SFML/Graphics.hpp>
int d[]={255,65535,0xFF00FF,65535,65280,0xFFFF00,0xFF00FF,0xFFFF00,0xFF0000};void f(){sf::Image g;g.create(3,3,(sf::Uint8*)d);g.saveToFile("a.jpg");}

Używa sf::Image::create(int,int,unsigned char*)metody do utworzenia obrazu z wartościami rgb


Możesz ogolić jeden bajt pisząc 0xFF0000jako 255<<16.
Broxzier

1
Idąc dalej, możesz zapisać 13 bajtów, definiując wartości kolorów R / G / B w zmiennych przed tablicą:int b=255<<16,g=65280,r=255,d[]={r,g|r,b|r,g|r,g,b|g,b|r,b|g,b};
Broxzier

4

C #, 248 204 198 bajtów

class P{static void Main(){for(int i=0;i<12;i++){foreach(dynamic n in Enum.GetValues(typeof(ConsoleColor)))if((""+n)[0]=="RYMRYGCRMCBR"[i])Console.BackgroundColor=n;Console.Write(i%4<3?" ":"\n");}}}

Wynik:
wprowadź opis zdjęcia tutaj


4

BASIC C64, 106 bajtów

0 POKE53281,0
1 DATA144,28,158,156,144,13,158,30,159,144,13,156,159,31,144
2 READA:PRINTCHR$(A)+"o";:GOTO2

wprowadź opis zdjęcia tutaj


3

Wolfram Language (Mathematica), 72 bajty

Grid@Partition[RGBColor/@Unitize[Total/@Tuples[IdentityMatrix@3,{2}]],3]

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.