Biorąc pod uwagę kwadratową strunę, produkuj całą moc wyjściową struny na każdym etapie rozwijania.
Sznurek musi się rozwijać w kierunku zgodnym z ruchem wskazówek zegara o ćwierć obrotu na raz.
Przykłady
Wejście :
A
Wyjście :
A
Uwaga : Akceptuję również dane wejściowe zduplikowane dla tego konkretnego przypadku testowego, tylko jeśli pomoże to zmniejszyć liczbę bajtów.
Wejście :
DC
AB
Wyjście :
DC
AB
D
ABC
ABCD
Wejście :
GFE
HID
ABC
Wyjście :
GFE
HID
ABC
HG
IF
ABCDE
IH
ABCDEFG
I
ABCDEFGH
ABCDEFGHI
Wejście :
JIHG
KPOF
LMNE
ABCD
Wyjście :
JIHG
KPOF
LMNE
ABCD
LKJ
MPI
NOH
ABCDEFG
NML
OPK
ABCDEFGHIJ
ON
PM
ABCDEFGHIJKL
PO
ABCDEFGHIJKLMN
P
ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
Zasady
To jest code-golf, więc wygrywa najkrótszy kod w bajtach.
- Do we / wy można zastosować dowolny rozsądny format, zakładając, że jest spójny.
- Spacje muszą być użyte do wypełnienia górnych linii wyniku.
- Musi być w stanie obsłużyć wprowadzanie wszystkich znaków do wydruku (w tym spacji:
\x20
-\x7e
):
! "# $% & '() * +, -. / 0123456789:;? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefghijklmnopqrstuvwxyz {|} ~
- Wiodące / końcowe białe znaki są dozwolone.
- Możesz założyć, że ciąg zawsze będzie kwadratem.
- Wszystkie standardowe luki są zabronione.
Inspiracja: Napisz kwadratowy program, który wyświetli liczbę „rozwinięć” .
["A","A"]
dla"A"
, jak mój program działa (zamiast["A"]
)? Wydaje mi się to rozsądne, ponieważ są to pozycje początkowa i końcowa, a ty próbujesz rozwinąć je tylko raz.Odpowiedzi:
SOGL V0.12 ,
2120191817 bajtówWypróbuj tutaj! (
→
dodano, ponieważ oczekuje to danych wejściowych na stosie)Wyjaśnienie:
źródło
Python 2 ,
209 207 205 203 202 201 200196 bajtów-4 bajty dzięki @Quelklef !
Wypróbuj online!
Python 2 ,
219 217 215 213 212 211207 bajtówWypróbuj online!
Pierwszy wyprowadza jako listę ciągów, drugi wyprowadza jako ASCII-art.
źródło
[::-1][1:]
może być[-2::-1]
, jak w odpowiedzi Lynn.Węgiel drzewny ,
4235 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 7 bajtów, głównie poprzez zamianę tablic znaków na ciągi znaków. Wyjaśnienie:
Odczytaj kwadrat wejściowy jako tablicę ciągów do zmiennej
q
.Podczas gdy ostatni ciąg w tablicy nie jest pusty, usuń go.
Wydrukuj resztę tablicy.
Obróć resztę tablicy, zapętlając każdy znak ostatniego ciągu i łącząc
l
znak th każdego pozostałego ciągu w odwróconej tablicy.Dołącz poprzednio usunięty ostatni ciąg do
u
, który zawiera rozwiniętą wartość, i wydrukuj go.Wyjmij wynik, a następnie wyczyść płótno gotowe do następnej iteracji.
Zauważ, że ta wersja wyświetla końcowe rozwinięcie w osobnym wierszu, jeśli jest to niepożądane, to dla 38 bajtów:
Wypróbuj online! Link jest do pełnej wersji kodu. Objaśnienie:
←E⁺⟦⪫υω⟧⮌θ⮌κ
odwraca bieżącą tablicę, wstawia rozwiniętą linię, następnie odwraca znaki w każdej linii, a następnie drukuje wszystko do góry nogami, uzyskując w ten sposób pożądany wynik.źródło
Rotate
iTrim
opuszczają kursor ...Haskell ,
127120 bajtówWypróbuj online!
Wejście znajduje się lista linii, na przykład
["DC","AB"]
dla drugiego przypadku testowego, wyjście jest lista wykazów linii:[["DC","AB"],[" D","ABC"],["ABCD"]]
. SłużymapM (putStrLn . unlines)
do ładnego wydrukowania wyniku.Edycja: Zapisano 7 bajtów, zauważając, że im krótszy
transpose
znalazłem, podczas gdy przydaje się, ponieważ można go zmodyfikować, aby odwrócić każdy transponowany bezpośrednio.źródło
05AB1E , 18 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
J, 62 bajty
Wypróbuj online!
Jestem pewien, że można w to dużo grać w golfa. Powoduje to wydrukowanie dodatkowych białych znaków, ale tylko ze względu na sposób, w jaki J formatuje tablice zawarte w tablicy wyjściowej, aby uzyskać ten sam kształt.
Myślę, że kiedy już wejdę i skomentuję dokładnie to, co robię, mogę uzyskać lepszy pomysł na grę w golfa (po zrobieniu tego teraz tak naprawdę nie wiem ...). Warto zauważyć, że na potrzeby gry w golfa
Wyjaśnienie
Odhaczając to, podzielę główną funkcję na trzy.
Będziemy pracować z drugim przypadkiem testowym.
unfurl_reversed
Daje to jeden ciąg rozwinięty raz, ale w odwrotnej kolejności. Wszystko to odbywa się w odwrotnej kolejności i w określonej kolejności, dzięki czemu sposób, w jaki J automatycznie wypełnia ciągi spacjami w celu dopasowania do kształtu tablicy, w której się znajdują, zapewni odpowiednie odstępy.
|:@}:
jest transpozycją ograniczenia wejścia|.@{:
jest odwrotnością ogona wejściaMyślę, że możesz zobaczyć, co chcemy zrobić: chcemy dołączyć odwrotną stronę ogona do ostatniej części transpozycji ograniczenia (to kęs, ale w zasadzie przywiązanie
CBA
do końcaED
). To da nam jeden krok rozwinięcia, odwrócony.(}:@],{:@],[)
robi tylko to.Dołącza
CBA
doED
, a następnie łączy się to z resztą tablicy. Dlatego nasza produkcja jestbiały filtr
Zasadniczo ten test sprawdza, czy którykolwiek wiersz jest całkowicie spacjami, i usuwa go, jeśli tak jest. Nie robi nic dla pierwszej iteracji przypadku testowego.
Jest to konieczne (przynajmniej dopóki nie znajdę alternatywy), ponieważ w przeciwnym razie ostatecznie rozwiniemy białe znaki w naszym ciągu wyjściowym.
rozpostrzeć
Unfurl zasadniczo łączy pozostałe funkcje i specjalne przypadki wprowadzania pojedynczych znaków.
Gdy potęga czasownika (
^:
) jest podana w pustym polu (a:
), stosuje ona funkcję na wejściu, dopóki nie zbiega się i nie gromadzi wyników w tablicy.(1 < #)
sprawdza, czy wiersze są zawsze większe niż 1 (w przypadkach specjalnych 1 wiersz).|."1
odwraca każdy wiersz, więc odwraca wynikiwhitespace_filter @: unfurl
.źródło
Python 2 ,
143132 bajtyWypróbuj online!
W każdej iteracji
b
znajduje się „głowa” sznurka (pierwsze n − 1 rzędy), obrócona o 90 stopni: jeślia
jest,[" NML", " OPK", "ABCDEFGHIJ"]
tob
jest["ON", "PM", "KL"]
.Aby raz rozwinąć ciąg, dołączamy ostatni wiersz
b
doa[-1]
(dając"ABCDEFGHIJKL"
), a następnie przeliczamya[:-1]
, dodając spacje do pozostałych ciągów wb
.Kończymy, próbując wyskoczyć,
b
gdy jest pusty.Python 2 , 132 bajty
Wypróbuj online!
Ten sam pomysł, napisany inaczej. Kończymy,
a.pop(-2)
gdya
mamy tylko jeden element.źródło
Perl 5 , 155 bajtów
Wypróbuj online!
Zapisano kilka bajtów bez zmiany logiki. Przepływ poniżej jest nadal w zasadzie poprawny.
# Perl 5 , 163 bajtówWypróbuj online!
W jaki sposób?
źródło