Zadanie
Biorąc pod uwagę niepusty ciąg małych liter ASCII a
- z
weź jego pierwszy znak i:
- Otocz go kwadratem kopii drugiej postaci,
- Otocz to diamentem kopii trzeciej postaci,
- Otocz to kwadratem czwartej postaci…
… Na przemian między kwadratowymi i diamentowymi granicami do końca sznurka. Puste miejsce między granicami powinno być reprezentowane przez spacje ASCII ( ).
Aby dodać kwadratową ramkę, narysuj kwadrat dokładnie wokół całego obecnego „roboczego układu”:
sssssssssss
t s t s
t t s t t s
t t s t t s
t aaa t s t aaa t s
t aca t => st aca ts
t aaa t s t aaa t s
t t s t t s
t t s t t s
t s t s
sssssssssss
Aby dodać obramowanie diamentowe , narysuj wyśrodkowany kształt rombu, który dotyka najbardziej zewnętrznego kwadratu po przekątnej , ale nie prostopadle :
s
s s
s s
s s
s s
s s
s s
wwwwwwwwwww s wwwwwwwwwww s
w o w s w o w s
w o o w s w o o w s
w o o w s w o o w s
w o eee o w s w o eee o w s
wo eme ow => s wo eme ow s
w o eee o w s w o eee o w s
w o o w s w o o w s
w o o w s w o o w s
w o w s w o w s
wwwwwwwwwww s wwwwwwwwwww s
s s
s s
s s
s s
s s
s s
s
Twój program musi wypisać końcową tablicę.
- Każda linia może zawierać dowolną liczbę końcowych spacji.
- Możesz wypisać listę ciągów znaków reprezentujących linie lub pojedynczy ciąg znaków oddzielony znakiem nowej linii z opcjonalnym końcowym znakiem nowego wiersza.
- Wiodące / końcowe puste linie są niedozwolone.
- Wiodące kolumny przestrzeni są również niedozwolone.
To jest golf golfowy . Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Powyższe przykłady są spodziewane produkty o cat
, cats
, meow
i meows
, w celu przeczytania. Kilka innych spraw wartych załatwienia:
Jako dane wejściowe
a
twój program powinien wypisać:a
Jako dane wejściowe
ab
twój program powinien wypisać:bbb bab bbb
Jako dane wejściowe
codegolf
twój program powinien wypisać:fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l ooooooooooooooooooooooooooo l f f l o g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g eeeeeeeeeee g o l f f l o g e d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d ooo d e g o l f fl og ed oco de go lf f l o g e d ooo d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d e g o l f f l o g eeeeeeeeeee g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g o l f f l ooooooooooooooooooooooooooo l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l f fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Realizacja referencyjna
Napisałem kod Julii, że wyjście twojego programu powinno pasować (przynajmniej wizualnie). Wypróbuj online!
\r\n
) zamiast jednego (\n
)?prompt
iconsole.log
. Możesz także użyć ciągów szablonów, które oszczędzają 2 bajty na wywołanie funkcji na ciągach (jakfill(' ')
staje sięfill` `
)S-i-1
doS+~i
ii%2||o--
doo-=~i&1
.a=Array(D*2+1).fill
.map((_,$,a)=>[...a])
oszczędza ci 10 bajtów.Haskell,
138137136 bajtówDefiniuje funkcję,
f
która zwraca wynik jako listę linii-1 bajt dzięki @Lynn
źródło
C ++ -
373 366 362359 bajtów-1 przez @TuukkaX, -6 przez @Kevin Cruijssen, -4 przez import, -3 przez @Baum mit Augen
http://ideone.com/5y54mx
Uwaga: W tym rozwiązaniu kropka („.”) Jest znakiem „spacji”, dzięki czemu puste spacje są bardziej widoczne. Aby zamiast tego użyć spacji, należy zmienić
S(s,46)
naS(s,32)
. Wynik pozostaje taki sam.Nie golfowany:
Spróbuj bez golfa online
Jak używać:
Wynik:
źródło
std::vector<S> V
ma bezużyteczne białe znaki.if(A(i)<=R(k)&&A(j)<=R(k)&&k%2?A(i)==R(k)||A(j)==R(k)
&&
||
&
|
int r=R(w.size()-1),...
int l=w.size(),r=R(l-1),...
for(k=0;k<w.size();++k)
for(k=0;k<l;++k)
using S=std::string;
do zabezpieczenia dwóch bajtów natypedef
.Mathematica, 167 bajtów
Dane wejściowe muszą być listą znaków.
na przykład
źródło
JavaScript (ES6), 252 bajty
Gdzie
\n
reprezentuje dosłowny znak nowej linii.źródło
JavaScript (ES6), 204
229 238Anonimowa funkcja zwracająca tablicę ciągów
Mniej golfa
Test
źródło
Java -
429417 bajtówPodziękowania należą się @Anedar, ponieważ miało to wpływ na strukturę tej odpowiedzi
Nie golfowany:
źródło
JavaScript (ES6), 322 bajty
Niekonkurencyjny
Mniej Golphed
Przetestuj za pomocą
Łatwe zyski poprzez pominięcie wiodącej
var L=
i.join("\n")
zwrotnej instrukcji dla -17 bajtów, ale wpisz je ponownie, aby przetestować kod : DJest to odpowiedź dwuprzebiegowa, oceniająca szerokość (
w
) wymaganą do wykreślenia wykresu kwadratowego lub diamentowego, przed wykreśleniem punktówP
w drugim przejściu przy użyciu obrotu i translacji.d
to wymiar (wysokość lub szerokość) nieobróconego kwadratu przed przesunięciem lub obrotem.Obracanie i skalowanie według √2 szczegółów z odpowiedzi Mathematica . Zastosowanie szablonu oznaczonego ciągu od pierwszej odpowiedzi w tym wątku . Dzięki obu za naukę. Głosy na pytanie i odpowiedzi.
źródło
PowerShell,
269245238 bajtówSkryte niepoznane, wyjaśnione i przetestowane:
źródło