Wyzwanie:
Dla wprowadzenia jednej litery X (wielka lub mała litera od A do Z) i jednej cyfry N (0-9) wydrukuj odpowiednią literę X wykonaną z N * X.
List musi pochodzić z tej listy:
AAA BBBB CCCC DDDD EEEEE FFFFF GGG H H
A A B B C D D E F G H H
AAAAA BBBB C D D EEEE FFFF G GG HHHHH
A A B B C D D E F G G H H
A A BBBB CCCC DDDD EEEEE F GGG H H
IIIII J K K L M M N N OOO
I J K K L MM MM NN N O O
I J KKK L M M M N N N O O
I J J K K L M M N NN O O
IIIII JJJ K K LLLLL M M N N OOO
PPPP QQQ RRRR SSSS TTTTT U U V V W W
P P Q Q R R S T U U V V W W
PPPP Q Q RRRR SSS T U U V V W W
P Q QQ R R S T U U V V W W W
P QQQQ R R SSSS T UUU V W W
X X Y Y ZZZZZ
X X Y Y Z
X Y Z
X X Y Z
X X Y ZZZZZ
Przykłady:
wejście: a 1
wynik:
AAA
A A
AAAAA
A A
A A
wejście: A 0
wynik: A
wejście: A 2
wynik:
AAA AAA AAA
A AA AA A
AAAAAAAAAAAAAAA
A AA AA A
A AA AA A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
AAA AAA AAA AAA AAA
A AA AA AA AA A
AAAAAAAAAAAAAAAAAAAAAAAAA
A AA AA AA AA A
A AA AA AA AA A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
wejście: A -1
wyjście: co kiedykolwiek: to nie ma znaczenia
Dodatkowe zasady:
- Parametry wejściowe można rozdzielić według dowolnych znaków.
- Każda litera musi użyć stolicy samej siebie jako znaku ascii, aby ją narysować.
- Dopuszczalne są spacje końcowe, nowe linie itp
- Zamiast programu możesz napisać funkcję, która przyjmuje ciąg cyfr jako argument. Dane wyjściowe powinny być drukowane normalnie.
- Stdout / Stderr nie ma znaczenia, po prostu wybierz jeden. Jeśli coś wydrukuje się na drugim, to też nie ma znaczenia.
- Możliwe formaty wyjściowe można wydrukować do STDOUT, zwrócić jako listę ciągów, zwrócić jako matrycę znaków itp., O ile wynik można po prostu wydrukować przy użyciu domyślnej metody drukowania w języku *.
*: podobnie jak funkcja f (a, 1) zwraca ciąg znaków i można po prostu powiedzieć, że print (f (a, 1)) nie powoduje, że wywołanie print () jest częścią odpowiedzi. (Wskazali na to Kevin Cruijssen i Arnauld).
Zwycięski:
To jest golf golfowy, najniższe wygrane bajtów. Baw się dobrze!
Edycja : to pytanie wydaje się bardzo identyczne z tym, ale powiedziałbym, że tak nie jest, ponieważ nie powinno działać tylko dla H, ale dla każdej litery z alfabetu. Chyba zdecydujesz, czy nie, jest to duplikat.
Odpowiedzi:
JavaScript (ES8), 281 bajtów
Pobiera dane wejściowe jako
(letter)(N)
. Zwraca ciąg.Wypróbuj online!
W jaki sposób?
Kodowanie czcionek
Zapisany wzór jest dublowany zarówno w poziomie, jak i w pionie.
Przykład dla „F”:
Główny algorytm
Funkcja zwraca spację natychmiast po wykryciu pustego piksela na pewnej głębokości lub znak odpowiadający literze wejściowej, jeśli wszystkie iteracje się powiodły.
źródło
R , 348 bajtów
Wypróbuj online!
Wykorzystuje kodowanie prawie identyczne jak Ouros ' ; jednak nie odwraca bitów, zamiast tego decyduje się na ich bezpośrednie użycie.
Następnie tworzy macierz 5x5 bitów i buduje macierz Mocy Kronecker , aby wygenerować potrzebny wzorzec, zapisując wyniki na standardowe wyjście.
źródło
Czysty ,
436372 bajtówZnacząco krótszy dzięki nowemu formatowi IO.
Wypróbuj online!
Kompresuje wzory liter do bitów literałów całkowitych, aby zaoszczędzić ~ 700 bajtów. Na przykład
A
:[[' AAA '],['A A'],['AAAAA'],['A A'],['A A']]
[' AAA A AAAAAAA AA A']
['A AA AAAAAAA A AAA ']
w binarne ('A' = 1, ' ' = 0
)0b1000110001111111000101110
na dziesiętny18415150
źródło
R , 259 bajtów
Wypróbuj online!
Pomysł jest następujący:
Biorąc pod uwagę tę
5 x 26*5
macierz0/1
:każda kolumna jest traktowana jako liczba binarna i konwertowana na liczbę całkowitą. Te liczby całkowite są następnie konwertowane na niedrukowalne ASCII w zakresie 1 ... 31:
np. dla kolumn
"B"
końcowego ciągu będą"\017\021\017\021\017"
(znaki niedrukowalne zapisane w postaci ósemkowej):W związku z tym, biorąc pod uwagę końcowy ciąg
5*26 = 130
znaków, przekształcamy ten ciąg z powrotem do macierzy0/1
przy użyciu:następnie po prostu dzielimy macierz, wybierając tylko pierwsze 5 wierszy (intToBits zwraca 32 bity) i tylko kolumny odpowiadające literze są przekazywane jako dane wejściowe, a na koniec stosujemy kronecker, jak wyjaśniono w odpowiedzi @ Giuseppe .
źródło
-48
kawałek i użyć!
zamiastU
: spróbuj online