Czego chcę:
Po prostu chcę wyświetlacz tekstowy, który prosi o dane wejściowe n
, a następnie pokazuje tę wartość na wyświetlaczu! Ale jest haczyk. Każdy z „prawdziwych” pikseli (tych wypełnionych) musi być reprezentowany przez tę liczbę n
.
Przykład:
Otrzymałeś wkład n
. Możesz założyć n
, że będzie to jedna cyfra
Input: 0
Output:
000
0 0
0 0
0 0
000
Input: 1
Output:
1
1
1
1
1
Input: 2
Output:
222
2
222
2
222
Input: 3
Output:
333
3
333
3
333
Input: 4
Output:
4 4
4 4
444
4
4
Input: 5
Output:
555
5
555
5
555
Input: 6
Output:
666
6
666
6 6
666
Input: 7
Output:
777
7
7
7
7
Input: 8
Output:
888
8 8
888
8 8
888
Input: 9
Output:
999
9 9
999
9
999
Wyzwanie:
Wykonaj powyższe czynności w jak najmniejszej liczbie bajtów.
Przyjmę tylko odpowiedzi, które spełniają wszystkie wymagania.
Otaczanie białych znaków jest opcjonalne, o ile cyfra jest wyświetlana poprawnie.
Ponadto <75 bajtów to mój głos, najniższy poziom akceptacji, ale zawsze mogłem zmienić przyjętą odpowiedź, więc nie zniechęcaj się do odpowiedzi.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
źródło
źródło
Odpowiedzi:
SOGL V0.12 , 30 bajtów
Wypróbuj tutaj! Skompresowany ciąg
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
toczyli (zaczynając od 1, kończąc na 0) liczby, linia po linii, liczba do liczby. Reszta
źródło
-
), a reszta jest łatwa. Jestem ciekawy, jakiego testera online użyłeś? Nie zrobiłem ani nie widziałem.JavaScript (ES6), 88 bajtów
Liczby kodują, które kwadraty zawierają spacje dla danej cyfry, np. Lewy dolny róg ma wartość 146, ponieważ 1, 4 i 7 go nie używają, a 146 = 2¹ + 2⁴ + 2⁷.
źródło
05AB1E ,
403938 bajtówWypróbuj online!
Wyjaśnienie
źródło
Japt , 43 bajty
Zawiera niektóre niedrukowalne. Wypróbuj online!
Tallies: 13 bajtów skompresowanych danych, 9 bajtów na dekompresję i 21 bajtów na dane wyjściowe.
Wyjaśnienie
Nieskluczony kod:
Istnieją dokładnie 4 różne możliwości wierszy: (
#
reprezentuje cyfrę)W ten sposób każda liczba może być zapisana jako zestaw pięciu cyfr podstawowych 4. Ponieważ każda liczba może być następnie zapisana w 10 bitach, w sumie jest to 100 bitów, co odpowiada 13 bajtom. Pominę proces kompresji i wyjaśnię dekompresję.
Po dekompresji 13-bajtowy skompresowany ciąg wygląda następująco:
Zauważ, że to się nie powiedzie, jeśli którykolwiek z 4-cyfrowych przebiegów zacznie się od
0
, ponieważ zera wiodące byłyby pominięte podczass4
uruchamiania. Możemy to naprawić poprzez0
reprezentację#
, która pojawia się tylko trzy razy i żadna z nich nie spada na początku 4-cyfrowego przebiegu.Ok, więc aby nasz 50-cyfrowy ciąg ładnie kompresował się w kawałkach po 4, musieliśmy dodać dwie dodatkowe cyfry. Dodanie ich na początku sznurka oznacza, że możemy je odciąć pojedynczo
¤
.Żenujące jest to, że Japt nie ma wbudowanej funkcji dzielenia łańcucha na plasterki o długości X. Ma jednak wbudowaną funkcję pobierania co X znaku, więc możemy przechowywać wszystkie dane, najpierw kodując wszystkie górne rzędy, a następnie wszystkie drugie rzędy itp.
Więc teraz mamy 5-cyfrowy ciąg kodujący cyfrę, którą chcemy utworzyć, np .
32223
Dla0
.Aby wyjaśnić magiczną liczbę, powróć do czterech różnych rzędów. Jeśli zastąpi
z
#
się1
i0
, maszPrzełożenie tego, a następnie połączenie w pojedynczy ciąg daje nam
101100010111
. Konwertuj na dziesiętne i, voilà, masz 2839. Odwrócenie procesu odwzorowuje cyfry0123
na cztery pokazane powyżej wiersze binarne.Prawie skończone! Teraz pozostaje tylko dodać spacje i cyfry:
A presto, niejawna produkcja zajmuje się resztą. Przykro mi, że to wyjaśnienie jest tak długie, ale nie widzę żadnego prawdziwego sposobu na grę w golfa bez uczynienia go mniej zrozumiałym (jeśli jest zrozumiałe ...)
źródło
JavaScript (ES6),
115111 bajtówPobiera dane wejściowe jako ciąg.
Jak to działa
Kodowanie wzorca
Cztery różne wzory
"XXX"
,"X.."
,"..X"
i"X.X"
mogą być skompresowane, jak"XXX...X.X"
i ekstrahuje się w ten sposób:Podstawiając cyfrę wejścia
n
do"X"
i korzystania rzeczywiste przestrzenie, daje wyraz:Kodowanie cyfrowe
Używając zdefiniowanych powyżej identyfikatorów wzorów, każdą cyfrę można przedstawić za pomocą 5 * 2 = 10-bitów.
Na przykład:
Pełna lista to:
Jednak podzielenie tych wartości przez 2 pozwala zaoszczędzić dwa bajty. Zamiast tego przechowujemy:
Próbny
Pokaż fragment kodu
źródło
Narzędzia Bash + GNU, 114
Prawdopodobnie jest tutaj więcej możliwości kompresji, ale oto początek:
Wyjaśnienie
Każdy rząd każdej cyfry jest jednym z tych czterech wzorów:
Oznaczając je cyframi 0-3, każdą cyfrę można przedstawić za pomocą 5 cyfr podstawowych 4. Np. 0 byłoby
32223
, a pełna lista cyfr jest zakodowana w bazie-4 jako32223000003031330303223003130331323300003232332303
. To zakodowane w postaci szesnastkowej jakoEAC00CDF33AC373DEF00EEFB3
.dc
konwertuje hexEAC00CDF33AC373DEF00EEFB3
na base-4.fold
umieszcza 5 cyfr podstawowych 4 w każdej liniised
:x
es) dla każdej linii danej cyfry, wraz z nową linią na końcu każdego wierszax
es na cyfrę n.Wypróbuj online .
źródło
s/1/x \n/g
jes/1/x\n/g
, ponieważ te spacje nie wpłyną wizualnie na wynik.MATL ,
4543 bajtówWypróbuj online!
Wyjaśnienie
źródło
Retina,
166164163 bajtówDwa spacje w trzeciej linii od dołu
Wypróbuj online!
Ulepszona wersja @ Okx w roztworze
źródło
Pyth 82
8591100bajtówPrawdopodobnie dużo golfa, moje pierwsze wyzwanie.
źródło
Plik wsadowy, 8 + 184 bajtów
Oto moje obowiązkowe rozwiązanie partii. Niestety standardowa metoda osiągnięcia tego celu to ponad 300 bajtów wsadowo, dlatego stosujemy znacznie tańszą taktykę.
W bieżącym katalogu mam 10 plików o nazwach od 0 do 9. W każdym z nich znajduje się odpowiednia siatka pikseli 5x3. Na przykład:
Liczby bajtów są następujące:
Nadal pokonałem Javę.
źródło
Rubinowy, 94 bajty
Niegolfowany w programie testowym
źródło
PHP, 115 bajtów
Wypróbuj online!
Rozszerzony
Kodowanie Wypróbuj online!
źródło
Siatkówka , 125 bajtów
Wypróbuj online! (Usuń pakiet testowy w nagłówku, aby przetestować poszczególne cyfry wejściowe.) Ostatni wiersz zawiera dwie spacje.
źródło
PowerShell,
126120113109101Unicode jest fajny. Znaki są również znacznie krótsze niż cyfry. Powyższy kod zawiera U + 0000 dwa razy, dlatego nie można go skopiować bezpośrednio (ale działa dobrze w pliku). Można skopiować następujący kod:
Tracimy trzy bajty, ponieważ na początku potrzebujemy podpisu UTF-8. W przeciwnym razie ciąg nie będzie działać.
źródło
Siatkówka , 190 bajtów
W ostatnim wierszu znajdują się dwie spacje,
ale SE nie chce tego renderować: /Naprawiono!Wypróbuj online!
źródło
a
trzema cyframi i nową linią. (Może używasz lookaheads?)Java 8,
278214210204 bajtówPort odpowiedzi Retina @Neil . Pobiera dane wejściowe jako
String
.Wypróbuj tutaj.
źródło
Python 2 ,
174125 bajtówWypróbuj online!
źródło
PowerShell ,
159135128118 bajtówAktualna odpowiedź: usunięto nazewnictwo zmiennych zewnętrznych
Wypróbuj online!
Muszę sprawdzić, czy uda mi się zdobyć jakieś sztuczki z innych odpowiedzi: P.
EDYTOWAĆ Usprawnienie dzięki wywołaniu mega ciągu
EDIT2 Przełączono na użycie ciągu liczb do indeksowania w
$a
celu zapisania 7 bajtów. Chociaż podobały mi się moje poprzednie wywołania nazw zmiennych dynamicznych w poniższym kodzie (135 bajtów)źródło
Węgiel drzewny ,
6138 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Uwaga: końcowe miejsce. Wyjaśnienie:
Podziel (skompresowany) ciąg na grupy po 5, weź ten pod indeksem podanym przez dane wejściowe i zamapuj znaki w grupie (które zawsze wynoszą 1, 4, 5 lub 7).
Przekształć znak z podstawy 10 na 3-cyfrową podstawę 2, używając znaku wejściowego i spacji jako cyfr. 5 wyników jest następnie domyślnie drukowanych na osobnych wierszach.
Ogólny port jest nieco nudny, więc oto bardziej idiomatyczna 61-bajtowa odpowiedź:
Wypróbuj online! Brak pełnej wersji, ponieważ deverbosifier nie rozumie list kierunków, a nawet wielokierunkowych wewnątrz zwykłych wielokątów. Wyjaśnienie:
Każda ścieżka jest określona za pomocą listy kierunków (
←↑→↓
). Cztery użyteczne skróty zapisują bajty:L
reprezentuje↑→
,¬
reprezentuje↓←
,T
reprezentuje→↓←
while+
reprezentuje→↓←↑
, chociaż przynajmniej jedna strzałka musi pozostać, aby lista została rozpoznana jako lista kierunkowa (więc na przykładTT
nie można jej użyć3
).źródło
Galaretka ,
3532 bajtówWypróbuj online! lub zobacz je wszystkie .
Taki sam jak metoda dzaima.
źródło
Perl 5
-Mbigint -pa
, 101 bajtówWypróbuj online!
źródło
Python 3 , 119 bajtów
Wypróbuj online!
Każdy „piksel” jest reprezentowany jako liczba całkowita, przy czym każda potęga dwóch wskazuje, czy piksel jest stały. Wykorzystuje to fakt, że trzy prawe rogi są zawsze cyfrą.
źródło
JavaScript (ES8), 87 bajtów
źródło