“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Wypróbuj online!
Jak to działa
“×Ɗ¡‘
dają punkty kodowe znaków między cudzysłowami w SBCS Jelly , które wynoszą 0x11 = 17 , 0x91 = 145 i 0x00 = 0 .
ŒP
konstruuje zestaw potęgowy tablicy punktów kodowych, dając
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
Ostatnie dwa wpisy odpowiadają kombinacjom zawierającym zarówno 80, jak i FF , więc musimy je odrzucić.
»Ṫ¦209
składa się z trzech części:
Ṫ
(ogon) usuwa ostatnią tablicę punktów kodowych, tj. [17, 145, 0] .
»209
przyjmuje maksimum każdej liczby całkowitej w pozostałej części zestawu mocy i 0xD1 = 209 , zastępując je wszystkie wartością 209 .
¦
(rzadkie) iteruje elementy pozostałej części zestawu mocy. Jeśli odpowiedni indeks znajduje się w [17, 145, 0] , element jest zastępowany wszystkimi 209 . Jeśli nie, pozostaje nietknięty.
¦
nie jest modułowy, więc modyfikuje tylko ostatnią tablicę (indeks 0 ) w pozostałej części zestawu mocy. Wskaźniki 17 i 145 są zbyt duże i nie mają wpływu.
Wynik jest następujący.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
oblicza trzecią potęgę kartezjańską każdej tablicy, tj. tablicę wszystkich 3 krotek elementów każdej tablicy.
Fd⁴
spłaszcza wynik i oblicza iloraz i resztę każdej liczby całkowitej podzielonej przez 16 .
ịØH
indeksy (oparte na 1) na „0123456789ABCDEF , więc 0x11 , 0x91 , 0x00 i 0xD1 są mapowane na „ 00 ” , „ 80 ” , „ FF ” i „ C0 ” (odpowiednio).
s3ṢQ
dzieli pary znaków na 3-krotki, sortuje krotki i deduplikuje.
Wreszcie Y
dołącza do unikalnych krotek, oddzielając je liniami.
“0FC8”
jak mamy00
,FF
,C0
, i80
.Python 3,
1341291251089190 bajtówMyślę, że jest jeszcze wiele do gry w golfa. Zapraszamy do gry w golfa!
Edycja: -9 bajtów i wiele podziękowań dla Mego za pomoc w formatowaniu łańcucha. -17 bajtów od znalezienia lepszego sposobu na wydrukowanie łańcucha. -17 bajtów od znalezienia lepszego sposobu na napisanie pętli for. -1 bajt dzięki końcówce xnor do użycia
i%3//2*"\n"
zamiast"\n"*(i%3<2)
.Ungolfing
źródło
*
.i%3//2*"\n"
zapisuje bajt.JavaScript (ES6),
109107 bajtówZaoszczędzono 2 bajty dzięki Neilowi
Jest to
79 bajtów krótszych niż zwykłe zwracanie nieprzetworzonego ciągu w odwrotnych wierszach.Test
Pokaż fragment kodu
źródło
.replace(/./g)
ma taką samą długość jak.map().join
, ale.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
oszczędza dwa bajty.PowerShell,
113106 bajtówTak, nie znalazłem nic krótszego niż tylko wydrukowanie dosłownego ciągu ...Dzięki @ Martin Smith za golenie 7 bajtów za pomocą prostego zamiennika (który całkowicie przeoczyłem). Mamy więc co najmniej 7 bajtów krótszych niż zwykłe kodowanie. Tak!Ale to jest nudne!
Więc zamiast ...
PowerShell v4, 128 bajtów
Przestrzeń
[system.consolecolor]
nazw określa kolory konsoli (natywnie) dostępne dla konsoli PowerShell. Jeśli będziemy odwoływać się do nich poprzez tablicę liczb całkowitych jak ta, domyślnie jest to nazwa (npBlack
lubWhite
lub podobne). Łączymy to z ciągiem znaków-split
spacji, więc teraz mamy tablicę ciągów nazw kolorów.Pętlimy je
|%{...}
i każda iteracja wyciąga odpowiednią[system.windows.media.colors]
wartość. Domyślnym ciągiem znaków dla tych obiektów jest kolor w#AARRGGBB
formacie jako wartość szesnastkowa, więc wykorzystujemy to, zamykając to wywołanie w ciągu za pomocą bloku skryptu"$(...)"
. Ponieważ jednak nie chcemy wartości alfa ani skrótu, bierzemy tylny koniec[3..8]
łańcucha i potrzebujemy, aby-join
wynikowachar
tablica wróciła do łańcucha. Następnie wystarczySort-Object
ustawić je we właściwej kolejności.źródło
00
i.Replace(7,'00')
ma <21 znaków.-replace
for8
i80
jest taka sama liczba bajtów (zapisuje 12 zer, co jest-replace8,80
długością). Robi to dlaFF
jest już przez dwa bajty powodu cudzysłowów wokół potrzebnych"FF"
w-replace2,"FF"
oświadczeniu.Pyth -
644844 bajtówSuper prosta kompresja bazy.
Wypróbuj online tutaj .
źródło
MATL , 39 bajtów
Wypróbuj online!
źródło
05AB1E , 57 bajtów
Wypróbuj online!
To, co musimy wygenerować, to w zasadzie (odwrócone i podzielone):
Co w liczbach dziesiętnych to:
Który w Base-214 to:
Jest to najprostsze rozwiązanie, jakie mogłem wymyślić, ponieważ nie ma mowy, aby w piekle pokonałem Dennisa. Spędziłem godzinę próbując i nic nie przeszło jego pomysłu.
źródło
PHP, 92 bajty
Wypróbuj online!
wystarczy zastąpić cyfry jako klucz w tablicy wartościami strtr
źródło
Partia, 137 bajtów
Tak, to takie nudne. Poprzednia 148-bajtowa próba:
Niestety nie możesz przesyłać danych wyjściowych polecenia
for
lubcall:
polecenia, więc muszę wywoływać się rekurencyjnie.źródło
Pyke, 42 bajty
Wypróbuj tutaj!
źródło
Befunge,
8369 bajtówWypróbuj online!
Kolory są zakodowane w ciągu, który widzisz w pierwszym wierszu, dwa bity na komponent koloru, z dodatkowym ustawieniem wysokiego bitu, aby wymusić każdą wartość w zakresie ASCII (z wyjątkiem przypadku 63, który byłby poza zakresem jako 127 ).
Lista kolorów na stosie jest następnie przetwarzana w następujący sposób:
źródło
C #, 195 bajtów
Niestety, to znacznie przewyższa, tym bardziej interesujący, choć niesamowicie zawiły (napisanie go było o wiele fajniejsze) C #, 270 bajtów
źródło
()=>@"string_here"
(to rzutuje naAction<string>
). Sugeruję również użycie pełnego ciągu (@
), abyś mógł po prostu wstawić nowe wiersze bezpośrednio do łańcucha bez konieczności ucieczki.C (gcc) , 99 bajtów
Wypróbuj online!
Po próbie utworzenia listy liczb i wysłania ich podczas sortowania porównałem do naiwnego rozwiązania, które otrzeźwiło:
Ten zapisuje się na 140 bajtów w porównaniu do mojej próby na 200 i zmieniam.
Rozwiązaniem było potraktowanie go jak tekstu, jakkolwiek z małym alfabetem. Każdy kolor można traktować jako triplet 2-bitowych indeksów w alfabecie {0xff, 0xc0, 0x80, 00}. Proces kolorowania -> tryplet -> liczba -> znak (z przesunięciem +35, aby wszystkie można było wydrukować i uniknąć potrzeby ucieczki) można zilustrować jako:
Następnie wystarczy powtórzyć powstały ciąg i wyciąć odpowiednie części ciągu alfabetu.
źródło