Biorąc pod uwagę ciąg, którego długość dzieli się przez 4, utwórz trójkąt, jak pokazano poniżej.
Jeśli ciąg jest abcdefghijkl
, to trójkąt będzie:
a
b l
c k
defghij
Jeśli ciąg jest iamastringwithalengthdivisiblebyfour
, to trójkąt będzie:
i
a r
m u
a o
s f
t y
r b
i e
n l
gwithalengthdivisib
Jeśli ciąg jest thisrepresentationisnotatriangle
, to trójkąt będzie:
t
h e
i l
s g
r n
e a
p i
r r
esentationisnotat
Notatki
- Ciąg będzie składał się wyłącznie ze znaków od
a
doz
. - Doprowadzające / końcowe białe spacje i znaki nowej linii są dozwolone, o ile kształt nie jest uszkodzony.
- Lista ciągów jako danych wyjściowych jest dozwolona.
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .
✂
s?GH↙→→↖⊕÷Lθ⁴θ
zadziała następnym razem, gdy popchnę węgiel drzewny05AB1E , 23 bajty
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
119117108105 bajtówSformatowane i skomentowane
Przypadki testowe
Pokaż fragment kodu
źródło
C #, 260 bajtów
Naprawdę chciałem użyć
SetCursorPosition
.Nie golfowany:
źródło
Mathematica, 164 bajty
wkład
źródło
[[1]]
można to zastąpić#&@@
.@(...)
, po prostu zrób to[...]
. I nie testowałem, ale prawdopodobnie możesz zapisać kolejny bajt, podającColumn
nazwę (a może nawet, abyColumn[#,Alignment->Center]&
tego uniknąćq
), a następnie umieszczając wszystkie pozostałe zmienne w pierwszym argumencie zewnętrznymColumn
(aby zapisać otaczające nawiasy).Python 3 , 120 bajtów
Po pierwsze golf, pomyślałem, że równie dobrze mogę nauczyć się Pythona po drodze.
Wypróbuj online!
Wyjaśnienie:
Pierwszy znak jest drukowany sam po
len(a)//4
spacji, a następniei
drukowane są pierwsze i ostatnie znaki zaczynające się od drugiego, oddzielone2*i - 1
spacjami.Na koniec drukowany jest pozostały podciąg.
źródło
p=print
, a następnie po prostu skorzystaniep
z trzechprint
używanych kart.//
(podział podłogi) można zastąpić/
.GNU sed ,
178158132 + 1 = 133 bajty+1 bajt dla
-r
flagi.Wypróbuj online!
Wyjaśnienie
W poprzednich wersjach używałem wielu bajtów zajmujących się matematyką, specjalnymi przypadkami i porządkami, chociaż intuicyjnie byłem pewien, że można ich uniknąć. Od tego czasu głównie to zrobiłem.
Załóżmy, że mamy dane wejściowe
abcdEFGHIJKLMnop
. LiteryEFGHIJKLM
będą na dole trójkąta, więc wykorzystałem je jako pomoc wizualną.Najpierw przygotowujemy dane wejściowe, umieszczając pierwszy znak we własnej linii (poprzedzonej spacją) i wstawiając kursor (
;
) przed ostatnim znakiem:Teraz mamy:
Teraz, w pętli, zrobimy kilka rzeczy do ostatniego wiersza: 1. Skopiuj spacje z poprzedniego wiersza i wstaw je po pierwszym znaku plus dwa; 2. Przenieś ostatni znak w prawo za spacjami, a następnie nowy wiersz; i 3. Przesuń kursor o trzy znaki w lewo.
Oto wynik każdej iteracji:
Możesz zobaczyć, jak piramida zaczyna nabierać kształtu. Możesz także zobaczyć, do czego służył kursor: w każdej iteracji przesuwał się w lewo o trzy znaki, a gdy nie ma już trzech znaków po jego lewej stronie, przerywa pętlę, co zdarza się, gdy osiągamy „dół” piramidy.
Teraz zrobimy podobną operację, ale w odwrotnej kolejności. W pętli skopiujemy spacje od początku linii kursorem do początku poprzedniej linii plus jeden, w trakcie przesuwania kursora do tej linii.
Oto kilka iteracji i wynik końcowy:
Skończyliśmy teraz, z wyjątkiem kilku dodatkowych znaków: A
;
i dodatkowe spacje w pierwszej linii oraz dwa spacje w „środku” piramidy w następnych trzech liniach. Pozbywa się ich prosta zamiana:Wszystko gotowe!
źródło
Rubinowy , 106 bajtów
Wypróbuj online!
źródło
Python 2 ,
100 9796 bajtówWypróbuj online!
Wyjaśnienie:
Jedną sprytną rzeczą, którą tutaj zrobiłem, jest wypełnienie wejścia spacją na końcu, tak aby pierwszy znak sparował się z nim i można go wepchnąć do pętli (i ponieważ dozwolone są końcowe białe znaki)
Liczba pętli do naśladowania jest związana
len(word)//4
. W ostatnim kroku drukowany jest cały pozostały ciąg (stanowi to podstawę trójkąta). Przestrzenie są zgodne z prostym wzorem; pierwszy zestaw spacji zmniejsza się o 1, zaś drugi zestaw spacji rośnie o 2.źródło
a
zawsze będzie wielokrotność 4.//
->/
C 225 bajtów
wyjaśnił
źródło
C #, 172 bajty
Wypróbuj online!
źródło
Oktawa, 87 bajtów
* W maszynie z systemem Windows powyższy kod daje poprawny wynik, jednak w tio dodałem trochę kodu, aby go poprawić.
Wyjaśnienie:
Wypróbuj online!
źródło
Haskell , 136 bajtów
Wypróbuj online!
źródło
PHP> = 7,1, 122 bajtów
PHP Sandbox Online
PHP> = 7,1, 124 bajtów
PHP Sandbox Online
źródło
AWK , 129 bajtów
Wypróbuj online!
Powinienem pomyśleć, że można to trochę pograć w golfa, po prostu go nie widząc.
źródło
Siatkówka , 99 bajtów
Wypróbuj online! Objaśnienie: Pierwsze dwa etapy generują pierwsze dwa wiersze, ale potem nie jest wymagana specjalna obudowa i każda kolejna linia może być generowana automatycznie:
źródło
Java 8, 213 bajtów
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Perl 5 , 76 bajtów
74 bajty kodu +2 dla
-F
Wypróbuj online!
źródło