Prostokąty mają tę przyjemną właściwość - prostokąt składa się z dokładnie znaków!
Ciekawszą właściwością jest to, że prostokąty można ładnie wyrównać w tabliczce mnożenia - na przykład w tabeli :
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
Twoim wyzwaniem jest uzyskanie sformatowanej tabeli mnożenia , biorąc pod uwagę liczbę ( ) .
Zasady
- Możesz wziąć jeden wejściowy powyżej lub poniżej
- Obowiązują domyślne reguły we / wy
- Możesz wybrać dowolny znak inny niż biały, który będzie reprezentował bloki; każda inna postać (choć znaki nowej linii są specjalne) jest uważana za spację. Wybrany znak może być różny dla różnych danych wejściowych, ale musi być taki sam dla danych wejściowych
- Rezultat może mieć niepotrzebne znaki, o ile tabela wyrównuje się i nie ma żadnych wystąpień wybranego znaku, które nie są częścią wymaganego wyniku
- Separatory muszą mieć 1 znak szerokości / wysokość, a prostokąty muszą być spakowane (tzn. Bez separatorów między ich znakami)
- Puste linie mogą być puste, wypełnienie nie jest wymagane
- Wynikiem może być ciąg, macierz, wektor linii, tablica tablic znaków lub cokolwiek 2Dish
- Możesz alternatywnie wyprowadzać macierz / wektor wektorów / cokolwiek 2Dish liczb, ale tło i pierwszy plan muszą być 2 różnymi liczbami (które mogą zmieniać wejście na wejście, ale nie na wyjściu) i żadne inne liczby nie mogą być obecne. Dodatkowe znaki otaczające są również dozwolone w tym formacie (chociaż muszą pasować do numeru tła)
- To jest golf golfowy , najkrótsza odpowiedź w bajtach, na język, wygrywa!
Przykłady
Dla danych wejściowych 2
poprawnym wyjściem ascii-art, ze znakiem ∙
, jest:
∙ ∙∙
Result: ∙ ∙∙.
∙ ∙∙
tak, kropka jest po to, aby Cię pomylić
Kolejna ważna odpowiedź jako matryca liczbowa, gdzie 2 to numer tła, a 9 pierwszy plan:
[[9,2,9,9,2,2],
[2,2,2,2,2,2],
[9,2,9,9,2,2],
[9,2,9,9,2,2]]
Przykładem może być niepoprawny wynik
# # #
# # #
# # #
ponieważ prostokąty mają między sobą separatory.
Przykładowe dane wyjściowe dla :
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
Odpowiedzi:
Haskell , 43 bajty
Wypróbuj online!
Sprytne podejście Ørjana Johansena generujące zera i jedynki, generujące każdą
10...00
część jako ciąg znaków reprezentujący potęgę 10.Haskell , 49 bajtów
Wypróbuj online!
Generuje wzór podobny
[1,0,1,0,0,1,0,0,0,...]
, a następnie tworzy 2D, biorącmin
pary. Bezcelowa dziwność oszczędza 2 bajty na bardziej czytelnym:Wypróbuj online!
źródło
flip(map.max)=mapM max
.(->) b
Następnie ustaw monadę namapM :: (a -> b -> c) -> [a] -> b -> [c]
.flip(map.max)
namapM max
R ,
5654433630 bajtówWypróbuj online!
Pobiera dane wejściowe powyżej (więc zwraca macierz 3x3 dla ). Zwraca macierz (pierwszy plan) i (tło) z dodatkowym wierszem / kolumną zer z przodu.n n = 4 1 s 0 s
Dzięki digEmAll dla -7 bajtów.
źródło
JavaScript (ES6),
73 7269 bajtówZwraca ciąg znaków złożony z 1, spacji i linii.
Wypróbuj online!
JavaScript (ES7),
87 8382 bajtówZaoszczędź 3 bajty dzięki @dzaima
Zwraca macierz binarną, która jest budowana komórka po komórce.
Wypróbuj online!
W jaki sposób?
Szerokość matrycy jest dana przez:w
(NB: Zgodnie z regułami wyzwania, zamiast tego wyprowadzamy macierz szerokości ).w+1
Podobnie, komórka znajdująca się w jest pusta, jeśli poniższy kwadrat potwierdzi liczbę całkowitą dla lub :(X,Y) k=X k=Y
których wyznacznikiem jest:
źródło
MATL,
1410 bajtówTa odpowiedź używa
1
bloków i0
tłaWypróbuj w MATL Online
Wyjaśnienie
źródło
Galaretka , 8 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
121012 bajtów SBCSWypróbuj online!
Edycja: -2 bajty z ngn. +2 bajty, ponieważ poprzednie odpowiedzi były nieprawidłowe (pomysł dzięki ngn i dzaima).
Wyjaśnienie
Dane wyjściowe powinny wyglądać następująco:
źródło
⎕
aby uniknąć{
}
Galaretka , 7 bajtów
Wypróbuj online!
Wysyła macierz cyfr, używając dla prostokątów i dla wypełnienia między nimi. Łącze TIO zawiera stopkę, która formatuje matrycę cyfrową w sposób czytelny dla człowieka przez wyrównanie wierszy i kolumn.0 1
Wyjaśnienie
Liczba w komórce wynikowej tabeli będzie wynosić jeśli lub jest liczbą trójkątną, lub przeciwnym razie (ponieważ bitowe OR działa jak logiczne OR na 0 i 1). (Używamy , zakres od 1, ponieważ Jelly używa indeksowania opartego na 1, więc nie musimy się martwić, że kolumna 0 będzie niepoprawnie wypełniona zerami; musimy dodać 1 do danych wejściowych, ponieważ tablica utworzona przez(x,y) 1 x y 0
R
Ṭ
zatrzymuje się na największym elemencie podanym na wejściu, dlatego musimy narysować linię po prawej stronie iu dołu). Przerwy między liczbami trójkątnymi to kolejne liczby całkowite, więc prostokątne bloki utworzone przez przerwy między liniami kończą się w górę o rozmiary wymagane przez pytanie; a użycie operacji OR (w tym przypadku bitowej) pozwala na prawidłowe skrzyżowanie linii.źródło
05AB1E , 9 bajtów
Definiuje program .f: Nat→List[List[Nat]]
Kod:
Wykorzystuje kodowanie 05AB1E . Wypróbuj online! lub użyj ładnej wersji drukowanej .
Wyjaśnienie:
źródło
C # (interaktywny kompilator Visual C #) ,
9695 bajtów-1 bajt dzięki Embodiment of Ignorance
Wypróbuj online!
źródło
n--
wnew string
sekcji?Python 2 , 67 bajtów
Wypróbuj online!
Drukuje puste linie dla pustych linii, na co pozwala wyzwanie.
Ta sama długość (z wejściem powyżej
n
):Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 41 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
C # (.NET Core) ,
208155 bajtówWypróbuj online!
Znacznie zmieniona wersja dzięki różnym pomocnym osobom (patrz komentarze).
źródło
PowerShell ,
4240 bajtów-2 bajty dzięki mazzy .
Wypróbuj online!
źródło
Java 11, 109 bajtów
Port odpowiedzi C # .NET tylko @ ASCII .
Wypróbuj online.
źródło
repeat
metody.APL + WIN, 29 bajtów
Wyjaśnienie:
Przykład:
źródło
J , 17 bajtów
Wypróbuj online!
źródło
I.
sztuczce!Mouse-2002 , 79 bajtów
Wykorzystywanie makr myszy do powtarzania funkcji.
Wypróbuj online!
źródło
Rubinowy , 55 bajtów
Wypróbuj online!
W jaki sposób?
Najpierw utwórz pierwszy wiersz, a następnie iteruj jego znaki. Wydrukuj całą linię, jeśli znak to „#”, w przeciwnym razie wydrukuj pojedynczy znak (który jest spacją)
źródło
Brain-Flak , 170 bajtów
Wypróbuj online!
źródło
Perl 6 ,
3533 bajtówWypróbuj online!
Anonimowy wywoływalny, który pobiera liczbę i drukuje tabliczkę mnożenia zs ze
*
znakiem nowej linii.Wyjaśnienie:
źródło
Haskell,
6968 bajtówZwraca macierz liczb.
Wypróbuj online!
Warianty o
f
tej samej liczbie bajtów:źródło
Stax , 7 bajtów
Uruchom i debuguj
Wybrana postać jest odwrócona. (W jaki sposób kodujesz to w markdown?)
Oznacza to
a
ib
są uważane za obce białe znaki.źródło
MathGolf , 20 bajtów
Wypróbuj online!
MathGolf naprawdę potrzebuje więcej funkcji do dzielenia list i tworzenia list 2D.
Wyjaśnienie
źródło
Atrament ,
151152151 bajtówWypróbuj online!
Dobrze, że zasady dopuszczają nadmiar postaci.
Edycja: +1: Naprawiono odstępy. Wyświetlaj także za pomocą @ (który nie wymaga zmiany znaczenia) zamiast # (co robi)
Edycja: -1: Najwyraźniej ta poprawka oznaczała również, że nie potrzebowałem już kropki, aby wymusić nowy wiersz na niepustych liniach. Schludny.
źródło
C ++,
170156 bajtówDzięki dzaima
źródło
SmileBASIC,
8377 bajtówWyjście graficzne. Dane wejściowe to
N-1
źródło
Python 3 ,
8883 bajtów-5 bajtów od Jo King
Wypróbuj online!
źródło
l
poza pętlą. Wypróbuj online!Perl 6, 63 bajtów
źródło
.join(' ')
nic nie robi,'#'
może być\*
zamiast tego, ciągi nowego wiersza mogą używać dosłownych znaków nowego wiersza, obal.map(str x*)
mogą być(str Xx l)
zamiast tego. 38 bajtówC (gcc) ,
108104 bajtów-4 bajty dzięki pułapkowi cat
Wypróbuj online!
źródło