Trójkątność to nowy esolang opracowany przez pana Xcodera, w którym struktura kodu musi być zgodna z bardzo specyficznym wzorem:
- W tym
n
wierszu kodu muszą znajdować się dokładnie2n-1
znaki programu. Powoduje to kształt trójkąta / piramidy, przy czym pierwsza linia ma tylko jeden znak, a reszta zwiększa się o 2. - Każda linia musi być uzupełniona
.
literami s po lewej i prawej stronie, tak aby znaki były wyśrodkowane na swoich liniach, a wszystkie linie były wypełnione na tej samej długości. Jeślil
jest zdefiniowany jako liczba linii w programie, każda linia w programie musi mieć długość2 * l - 1
Na przykład program po lewej stronie jest poprawny, ale program po prawej stronie nie jest:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
Po umieszczeniu w prawidłowej strukturze nazwa staje się oczywista.
Zadanie
Twoim zadaniem jest pobranie jednego ciągu wiersza jako danych wejściowych, reprezentujących kod trójkątności, i przesłanie go przekonwertowanego na prawidłowy kod, jak opisano powyżej.
Dane techniczne we / wy:
- Dane wejściowe będą zawierać tylko znaki z zakresu
0x20 - 0x7e
- Długość wejścia zawsze będzie liczbą kwadratową, a zatem będzie ładna do wypełnienia.
- Do wypełnienia wyjściowego należy użyć kropek, a nie czegoś innego.
Możesz wprowadzać i wyprowadzać dowolną akceptowalną metodą. To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach !
Przypadki testowe
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Dla tych, którzy znają Trójkątność, zauważysz z ostatniego przypadku testowego, że łańcuchy nie muszą być obsługiwane
code-golf
string
code-golf
combinatorics
code-golf
math
number
code-golf
matrix
code-golf
string
decision-problem
code-golf
internet
code-golf
number
number-theory
integer
expression-building
code-challenge
primes
cops-and-robbers
obfuscation
code-challenge
primes
cops-and-robbers
obfuscation
code-golf
string
balanced-string
code-golf
quine
code-generation
code-golf
matrix
code-golf
tips
c#
code-golf
ascii-art
code-golf
ascii-art
source-layout
code-golf
quine
source-layout
popularity-contest
language-design
code-golf
array-manipulation
subsequence
code-golf
matrix
math
code-challenge
game
graph-theory
atomic-code-golf
code-golf
number
integer
polynomials
equation
code-golf
array-manipulation
sorting
Cairney Coheringaahing
źródło
źródło
Odpowiedzi:
Trójkątność , 127 bajtów
Wypróbuj online!
Wyjaśnienie
Usuwając znaki, które składają się na wypełnienie, otrzymujemy następujący program:
... Która jest dość długa, prawda? Podzielmy to na kawałki.
Generowanie liczb całkowitych [0… √len (wejście))
Generowanie kropek
Przycinanie znaków z przodu
Przycinanie znaków na końcu
Kończąc pętlę i ładnie drukując
źródło
J
na końcu i wyprowadzić tablicę linii. Nie wiem jednak, czy to ci cokolwiek uratuje, jeśli koniec ostatniej linii wymaga.
wypełnienia pozostałym miejscem.f
jest potrzebny, ponieważ zakres nie może przyjmować argumentów zmiennoprzecinkowych (nawet z.0
) 2) Pozbycie sięJ
nie zapisuje żadnych bajtów z powodu wypełnienia, więc wybrałem ładniejszy format wyjściowy.Japt ,
151410 bajtówWysyła tablicę wierszy.
Wypróbuj | Sprawdź wszystkie przypadki testowe
Wyjaśnienie
Oryginalne rozwiązanie
Spróbuj
źródło
Łuska , 15 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
05AB1E ,
201918 bajtówOszczędność bajtu dzięki Magic Octopus Urn
Wypróbuj online!
Wyjaśnienie
źródło
ÅÉ
na szanse mogą pomóc?g;ÅÉ£Rvy'.N×.ø}r»
? Ale to nie dlatego, że to nie w porządku lol.ÅÉ
zdecydowanie pomogłoby, gdybyśmy mogli znaleźć długość dolnego rzędu w 2 bajtach. Nie wiem jednak, czy możemy. Może to być także inny sposób na włączenie go.)R
zamiast tegor
niePython 2 , 83 bajty
Wypróbuj online!
źródło
Galaretka ,
2219 bajtówMonadyczny link zwracający listę list znaków (wiersze)
Wypróbuj online!
W jaki sposób?
źródło
JavaScript (ES7),
8278 bajtówPrzypadki testowe
Pokaż fragment kodu
Skomentował
źródło
05AB1E , 25 bajtów
Wypróbuj online!
źródło
MATL , 21 bajtów
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
'DfJ0vCq7G'
jako przykład. Zawartość stosu jest oddzielona przecinkami, a górny element jest ostatni. Wiersze w tablicy 2D używają średnika jako separatora.źródło
Czysty ,
107948988 bajtówWypróbuj online! Przykładowe zastosowania:
@[]1 ['ABCDEF"$%& G8"F@']
.źródło
Haskell ,
8468 bajtówWypróbuj online!
Przykładowe użycie:
[]%1 $ "abcd"
zwraca listę linii[".a.","bcd"]
.źródło
Perl,
5652 bajtówObejmuje
+3
dla-p
Podaj dane wejściowe STDIN (w zasadzie bez końcowej nowej linii, ale to ma znaczenie tylko dla pustych danych wejściowych)
źródło
-p
kosztuje tylko 1 bajt'
. Ale ten kod działa, więc należy go umieścić w pliku (lub w#!
wierszu poleceń), który wymaga 3 dodatkowych znaków w porównaniu do normalnej linii. Więc w tym przypadku jest to+3
(dla normalnego kodu widać I rzeczywiście liczyć tylko+
nap
)Czerwony ,
227203 bajtówWypróbuj online!
Nie golfowany:
źródło
Retina ,
887271 bajtówWypróbuj online! Edycja: Zapisano
1213 bajtów dzięki @MartinEnder. Wyjaśnienie:Podziel pierwszą postać na własną linię, aby piłka się toczyła.
Posiekaj każdą linię dwa znaki dłuższą niż poprzednia.
Lewy pad pierwszej połowy każdej linii, skutecznie je centrując.
Prawym padem wszystkie linie.
źródło
Węgiel drzewny ,
2119 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 2 bajty, odkrywając
SquareRoot
. Wyjaśnienie:źródło
Python 2 , 84 bajtów
Wypróbuj online!
źródło
Czysty , 123 bajty
Wypróbuj online!
źródło
Rubinowy ,
7366 bajtówWypróbuj online!
-5 bajtów: zwraca tablicę ciągów zamiast je drukować
-2 bajty: Deklaracja
z
na miejscu zamiast z wyprzedzeniemNie golfowany:
Zadeklarowanie zmiennej,
r=q-1
dzięki której mogę wziąć,s[r*r...q*q]
zapisuje dokładnie zero bajtów.Używanie
.center
zamiast wypełniania ręcznie również oszczędza zero bajtów, ale bardziej mi się podoba.źródło
Stax , 19 bajtów
Uruchom i debuguj
Odpowiednik ASCII:
źródło