Zadanie
Biorąc pod uwagę dwie dodatnie liczby całkowite:
- Narysuj prostokąt o wymiarach określonych przez dwie liczby całkowite.
- Powtarzaj krok 3, aż nie będzie już miejsca.
- Narysuj i wypełnij największy kwadrat, dotykając trzech boków (pozostałego) prostokąta.
- Wyjmij wynikowy prostokąt.
Przykład
Na przykład nasz wkład to 6
i 10
.
Rysujemy pusty prostokąt o wymiarach 6 x 10:
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
Po wielokrotnym wypełnianiu kwadratów otrzymalibyśmy:
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd
Istnieją 4 kwadraty o ( a
, b
, c
, d
), każda o długości boku 6
, 4
, 2
, 2
odpowiednio.
Zasady i wolność
- Musisz użyć innej litery dla każdego kwadratu.
- Możesz wybrać, które litery mają być obsługiwane, o ile obsługiwane są wszystkie litery do wydrukowania i
10
obsługiwane są co najmniej znaki. - W każdej iteracji kroku 3 powyżej masz dwie możliwości (z wyjątkiem ostatniej iteracji, w której masz tylko jeden wybór). Obie opcje są prawidłowe.
- Wymagana liczba kwadratów nie przekroczy liczby obsługiwanych liter.
- Możesz wypełnić kwadraty literami, które wspierasz w dowolnej kolejności .
Przypadki testowe
Wejście: 6, 10
Wynik:
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd
lub
aaaaaaccdd
aaaaaaccdd
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
lub
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
ccddaaaaaa
ccddaaaaaa
lub
ccddaaaaaa
ccddaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
lub
ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddbbcc
ddddddbbcc
Wejście: 1,1
Wynik:
a
Wejście: 1,10
Wynik:
abcdefghij
Wejście: 10,1
Wynik:
a
b
c
d
e
f
g
h
i
j
Zauważ, że jest więcej możliwości, niż mogę uwzględnić dla powyższych przypadków testowych.
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
code-golf
ascii-art
arithmetic
Leaky Nun
źródło
źródło
Odpowiedzi:
Węgiel drzewny , 30 bajtów
Wypróbuj online! Wyjaśnienie:
Irytujące polecenie Podłużne węgla drzewnego nie przyjmuje
0
wymiaru, który kosztuje mnie 4 bajty. Innym podejściem byłoby zapętlenieg * d
, ale wtedy nie mogłem wymyślić, jak wykonać iteracjęb
(która jest predefiniowana dla małych liter).źródło
W×γδ
, jak za każdym razem wydrukować inny list?)Pyth , 34 bajty
Wypróbuj online!
źródło
Haskell , 90 bajtów
Wypróbuj online!
źródło
Galaretka , 32 bajty
Wypróbuj online!
Ṁ,ạ/y
chcesz wyjaśnienia? Oto jest.Prawdopodobnie mogę trochę bardziej grać w golfa, używając domyślnych argumentów zamiast
³,⁴
.źródło
Haskell , 181 bajtów
Wypróbuj online!
Za
10
bajty więcej dostajesz ładną spiralę :)Wypróbuj online!
Nie golfił
W
(#)
puts operator dwie macierze obok siebie, ale transponuje tę właściwą, na przykład:Jest to w zasadzie rekurencyjna wersja algorytmu Euclida, ale zamiast zapominać o dzielnikach i resztkach i zwracać
gcd
, buduje z niego kwadraty i kumuluje je(#)
.s
Zmienne są pozostałe znaki, które możemy użyć:Rzeczywista funkcja po prostu wywołuje funkcję z góry z ciągiem wszystkich drukowalnych znaków:
źródło
import Data.List
aby użyćtranspose
.164