Już 1 listopada programowanie łamigłówek i Code Golf skończy się, więc w ciągu następnych 11 miesięcy będziemy chcieli uratować wspomnienia z czasów, gdy nie byliśmy na studiach.
Napisz program, który produkuje favicon PPCG, jak pokazano poniżej.
- Obraz musi mieć co najmniej 64 x 64 pikseli.
- Niebieski musi mieć kolor # 62B0DF. Tło może być białe lub jasnoszare.
- Obraz nie musi być pikselowany, tak jak jest tutaj.
- Alternatywnie, utwórz tekst (o wymiarach co najmniej 64x64 znaków spoza białych znaków) przy użyciu standardowych jasnych kodów kolorów ANSI Cyan i White.
- Wbudowane obrazy i importowanie logo PPCG są niedozwolone.
To jest kod golfowy, więc obowiązują standardowe zasady. Najkrótszy kod w bajtach wygrywa.
Odpowiedzi:
Bash (OSX),
33272318 bajtówSłyszałeś tego mężczyznę, w dowolny sposób.
Wiem, że to konkurs popularności. Ale hej, kiedy możesz kodować golfa, dlaczego nie?Teraz jest to golf golfowy. \ o / To było ważne w momencie publikacji.
W pewnym momencie zrobiono dla mnie wyjątek! Ale jak @AlexA. wskazany...
Zgadzam się z tym i jako taki nie chcę, aby wybrano to jako odpowiedź. Nie znaczy to, że nie będę więcej próbował grać w golfa. ;)
Dzięki @ ΚριτικσιΛίθος za golenie 6 bajtów za pomocą fantazyjnie krótkiego adresu URL!
Dzięki @ ev3commander za zgolenie KOLEJNYCH 5 bajtów jeszcze bardziej wymownym, krótszym adresem URL!
Dzięki @kennytm za wskazanie, że mogę zmniejszyć rozmiar protokołu i usunąć cudzysłowy, oszczędzając mi kolejne 4 bajty!
źródło
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 bajtów
To wychodzi
Jest to prawdopodobnie najkrótszy kod, za pomocą którego nadal można rozpoznać logo ... Stworzyłem straszny język :(
Wypróbuj tutaj
Uwaga
To zostało przesłane przed zmianą reguł, zgodnie z obecnymi regułami ta odpowiedź jest nieprawidłowa. Zostawię to tutaj, by być może zainspirować ludzi
źródło
JavaScript
Uwaga: Ta odpowiedź została udzielona zanim reguły uległy znacznej zmianie, więc ta odpowiedź nie konkuruje.
To drukuje się w konsoli przeglądarki poprzez szalone i niesamowite przetwarzanie ciągów.
Stworzyłem krótszą wersję tego, ale nigdzie nie mogę go znaleźć.
Chrome / Firefox
Ta wersja podwaja się na każdym pikselu, dzięki czemu wygląda bardziej proporcjonalnie
Safari
To
long_string_here
jest ppm , napisałem ten skrypt jakiś czas temu, aby wydrukować dowolny obraz na konsoli .Jak to działa? Cóż, JavaScript ma funkcję, w
console.log
której możesz podać css do stylizowania wiadomości.I znak
█
i kolor Unicode, że poprawny kolor, który jest pobierany z ppm.Aby wyświetlić dowolny inny obraz::
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
, a następnie skopiuj dane wyjściowe do<long_string_here>
Pełny kod
Ponieważ jest to dość masywne, umieściłem pełny kod w pastebinach, abyś mógł je uruchomić
Chrome / Firefox: wklejanie
Safari: pastebin
Wynik
Wynik przeglądarki Firefox
Wynik Safari
źródło
Rubin z butami
Przykładowe dane wyjściowe:
źródło
JavaScript (ES2015), 199 bajtów
(+72 bajty CSS)
Mój kod drukuje logo w
<body>
elemencie strony poprzez niektóre sekwencje Unicode. Sugestie dotyczące ulepszenia kodu są mile widziane (szczególnie w0
przypadku zadania -pads)JavaScript (wstawiono nowe wiersze w celu zapewnienia czytelności)
CSS
Wynik
Nieoznakowany i wyjaśniony
Jeśli weźmiemy pod uwagę oryginalną opublikowaną ikonę PCG 16x16, możemy zakodować informacje w formacie binarnym.
Np. Pierwsza linia byłaby zakodowana jako miejsce, w
1100 0000 0000 0011
którym[0, 1]
mapy[blue, white]
. Każda liczba binarna może być łatwo zapisane w formacie dziesiętnym tak1100 0000 0000 0011
jest49155
. Tablicazawiera wszystkie informacje (w formacie dziesiętnym) o każdym kolorze piksela. Każdy element tablicy reprezentuje linię do narysowania. Zauważ, że niektóre linie są
0
( linie w pełni niebieskie) lub ich długość jest mniejsza niż16
cyfry (linia zaczynająca się od niebieskiego piksela): wtedy musimy wprowadzić te liczby binarne w prawomap
Funkcja dodać 15 zer na lewo plus liczby binarnej kaskadowego. Tak więc wynik jest krojony o16
piksel w lewo. Teraz tablica jest w rzeczywistościPrzyjrzyj się powyższym cyfrom: prawie możemy zobaczyć logo PCG. :)
Pamiętaj, że jeśli przechowujemy te informacje w tablicy, musimy użyć 16 x 18 bajtów (288 bajtów). To podejście wymaga zamiast tego 135 bajtów
Następnym krokiem jest narysowanie każdej linii. Konstrukt
zapętlamy tablicę
values
(funkcja ES6) i dodajemy do treścigdzie
[...l
] reprezentuje ciąg binarny jako tablicę. Np. Pierwszy wiersz zostanie odczytany jakonastępnie ponownie używamy
map()
do przekształcania każdej wartości:jeśli wartość jest,
0
to staje sięLEFT SEVEN EIGHTHS BLOCK (U+2589)
inaczej, jest to spacjaEM SPACE (U+2003)
. W skrócie to zadaniekonwertuje każdy
0
albo1
albo w kwadratowy blok albo w spację: następnie tablica jest łączona i wraz z końcową sekwencją nowego wiersza jest dołączana do ciała.Użyty przeze mnie CSS naprawia
line-height
iletter-spacing
(testowałem na Chrome, więc wynik może nieznacznie różnić się w innych przeglądarkach)źródło
Brainfuck, 120148 bajtów
Ta odpowiedź jest teraz niekonkurencyjna. Było to przed zmianą zasad i nie ma absolutnie żadnej nadziei na wygraną w golfa kodowego.
Kod Brainfuck do wyświetlania wartości szesnastkowej obrazu. Bardzo, bardzo długo.
Oto link do wklejania i pierwsze kilka linii. https://paste.ee/p/LtcCy
źródło
Snap , 16 bloków
Powiedz mi, czy to jest nieprawidłowe.
źródło
JavaScript ES6, 461 bajtów
Muszę więcej popracować nad kompresją.
źródło
Bubblegum , 175 bajtów
Jeden z rzadkich przypadków Bubblegum jest przydatny do tworzenia grafiki !
Uruchom w terminalu obsługującym kody specjalne ANSI.
Odwróć zrzut heksowy za pomocą
xxd -r
Oto zrzut ekranu wyników:
Uwaga: Na moim komputerze z systemem Windows z terminalem MinGW, plik binarny Python dla Windows nie wyświetla poprawnie kodów ANSI, więc powyższe było,
python <esolangs reference implementation>.py <infile> | cat
ale powinien działać poprawnie na komputerach z systemem Linux.źródło
JavaScript (ES6), 192 bajty
To wymaga skompresowanej wersji ścieżki SVG D. Spacje są usuwane, więc wszystkie argumenty muszą być pojedynczymi miejscami po przecinku, więc dowolna liczba jest mnożona przez 20 przed zapisaniem do rzeczywistego pliku svg.
Wyjście: Demo: https://jsfiddle.net/Luy6qj80/
źródło
LibreLogo ,
122116115 bajtówKod:
Wynik:
Wyjaśnienie:
Poprzednie próby:
116 bajtów:
122 bajtów:
źródło
JavaScript, 680 bajtów
Cóż, miałem to już ukończone w pierwotnym konkursie, którego zasady zostały drastycznie zmienione. To zdecydowanie nie jest najkrótszy kod, jaki można wymyślić. Został zaprojektowany na konkurs popularności i tworzy oryginalny favicon piksel po pikselu. Ma też więcej funkcji. :)
Możesz wywołać funkcję z maksymalnie trzema parametrami:
m
przechodzi w meta i odpowiednio zmienia kolor. A jeśli uznasz, że jest za mały, użyj go,b
aby go powiększyć od 16x16px do 64x64px . Wreszciea
animuje logo, jakby wygrawerowane na niebieskiej planszy. Wartość to prędkość każdego kroku animacji.Nie golfił
Wydajność
Domyślna
Ożywiony
źródło
Python 3, 10,069 bajtów
Zapisuje hex z oryginalnego logo do nowego pliku.
źródło
R 189 bajtów
Z wcięciami dla przejrzystości:
Bezwstydnie kradnę tę metodę ze starej mojej odpowiedzi : biorę podstawową reprezentację 16 liczb 16, przekształcam ją w macierz 16x16 jedności i zer i wykreślam ją taką, jaka jest.
źródło
Google Blockly , 140 bloków
Produkuje
Na żądanie doda wyjaśnienie. Wypróbuj tutaj
Mile widziane są sugestie dotyczące ograniczenia funkcji masywnej po lewej stronie!
źródło
Python 2, 211 bajtów
źródło
05AB1E , 49 bajtów
Wypróbuj online!
źródło
Excel VBA,
252246245237 bajtówZaoszczędź 6 bajtów dzięki Taylor Scott.
Oszczędność kolejnych 8 bajtów dzięki inspiracji Taylor Scott
Kod należy uruchomić ze strony kodowej arkusza roboczego i doda kształt do tego arkusza. To nic szczególnego, ale bezpośrednio wykorzystuje zaokrąglone prostokątne objaśnienie, na którym opiera się ikona. (Dla
AddShape
,106
odpowiadamsoShapeRoundedRectangularCallout
.)Formatowanie nie dodaje wiele, ale ułatwia czytanie:
Istnieje również rozwiązanie jednowierszowe, które ma być uruchamiane w bezpośrednim oknie dłuższym o 1 bajt:
źródło
()
wp()
i konwersjaWith ActiveSheet. ...
doWith[Sheet1]. ...
Sheet1
. Przypuszczam, że możemy założyć, że użytkownik uruchamia kod w nowym pliku.Sheet1
obiektu powinno być prawdopodobnie przyjętą normą, o ile wspominasz, że to jest częścią warunku wejścia / wyjścia jako część twojego rozwiązaniaSheet1
przedmiot - więc możesz upuścić bajt, zastępującWith[Sheet1].
goWith Sheet1.
Sheet1
jest to tylko domyślna nazwa kodowa pierwszego arkusza. To ładna redukcja o 0,4%.MATLAB,
153 150140 bajtówKod przyjmuje tablicę liczb 16-bitowych (niestety nie ma możliwości ich zakodowania, co zmniejszyłoby liczbę bajtów oprócz odczytu z wcześniej zapisanego pliku binarnego). EDYCJA: Przy odrobinie kreatywności w tworzeniu tablicy zapisałem 3 bajty, a przy odrobinie więcej i dodatkowej zmiennej mogę zapisać kolejne 10.
Za pomocą tej tablicy jest konwertowany na ciąg binarny, w którym ascii „1” oznacza niebieski, a ascii „0” jest biały. Tablica jest w tym momencie 2D, ponieważ każda z 16 liczb staje się ciągiem 16 znaków.
Odejmuję 47, aby przekonwertować to na tablicę 1 i 2 (potrzebne do następnego bitu), gdzie każdy element reprezentuje jeden piksel. Znowu pozostaje to jako 2D i jest to nasze dane obrazu.
Obraz jest następnie powiększany 8-krotnie przy użyciu najbliższego sąsiada do utworzenia obrazu, który ma co najmniej wymagany minimalny rozmiar 64 x 64 pikseli - w rzeczywistości jest to 128 x 128, ponieważ w jakiś sposób podzieliłem 64 na 16, aby uzyskać 8> _ <(nie zapytać!).
Na koniec jest to wyświetlane przy użyciu mapy kolorów, w której dowolne 1 staje się białe, a dowolne 2 staje się wymaganym odcieniem niebieskiego # 62B0DF.
To jest wynik:
źródło
Przetwarzanie, 211 bajtów
Przechowywanie pikseli w podpisanych liczbach całkowitych (wydaje się to najbardziej wydajnym sposobem, może spróbuję 2 ^ 64 liczb całkowitych), a następnie wydrukowanie ich w ramce.
źródło
Swift (plac zabaw), 599 bajtów
Postanowiłem spróbować, ponieważ wciągnięcie w Swift jest dość proste i zwykle nie jest to gra w golfa. Skończyło się tracenie cennych bajtów z tekstem ... Cholera
NSDescriptiveVariableNames
!Oto jak to wygląda na placu zabaw:
Myślę, że mógłbym bardziej zagrać w golfa, aliasingując takie rzeczy
CGRectMake
, grupując obiekty w funkcji itp.źródło
PHP, 145 bajtów, nie konkuruje
Powinienem zamiast tego używać niepustych kolorów i kolorów, ale jestem zbyt zmęczony.
Zgadnij, że doda to około 10 bajtów, może więcej.
źródło
Excel VBA, 178 bajtów
Anonimowa funkcja okna natychmiastowego VBE, która nie pobiera danych wejściowych i wysyła Favicon PCG (dokładnie tak jak w powyższym pytaniu) do zakresu
źródło
C (gcc) , 188 bajtów
Wypróbuj online!
Wykorzystuje kody ucieczki ANSI do drukowania 128 poziomych i 64 pionowych kolorowych przestrzeni.
(Obraz zmieniony.)
źródło
C ++ z SFML , 607 bajtów
Kod wywołujący funkcję:
Wymagania:
Musisz mieć prawidłowy plik ttf o nazwie
a.ttf
w bieżącym katalogu, w którym działa plik wykonywalny, aby mógł załadować czcionki do wyświetlenia tekstuMusisz mieć odpowiednie biblioteki DLL SFML w bieżącym katalogu, w którym działa plik wykonywalny
Wynik:
Objaśnienia:
źródło
tcl / tk, 113
Tcl / tk, 144
źródło