W zeszły czwartek użytkownik @SpookyGengar zachwycił nas swoim pierwszym wyzwaniem dotyczącym tworzenia słów w kwadraty . Co jeśli podwoimy liczbę stron?
Wyzwanie
Weź ciąg jako dane wejściowe w dowolnym rozsądnym formacie, którego potrzebujesz ( string
, char
tablica ...) i wypisz ośmioboczną reprezentację danych wejściowych (także w dowolnym rozsądnym formacie: string
lista string
s, char
macierz ...) jak w poniższych przykładach:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Notatki
- Dane wejściowe będą składały się wyłącznie z drukowalnych znaków ASCII.
- Dozwolone i / lub końcowe białe spacje i znaki nowej linii są dozwolone, o ile zachowany jest kształt ośmiokątny.
- To jest golf golfowy , więc niech wygra najmilszy program / funkcja dla każdego języka!
code golf
<Space>
uważany za drukowalny?Odpowiedzi:
Węgiel drzewny , 16 bajtów (10 bajtów niekonkurujących)
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Alternatywna długość 1 poprawka, również 16 bajtów: Wersja pełna.
Poprawka błędu Charcoal oznacza, że działa teraz następujący 10-bajtowy kod: Pełna wersja.
źródło
⟲
wydaje się, że powinno to po prostu zrobić. Lolcode golf
działa, prawda?θθθ
zθθ»θ
).code golf
? Myślę, że ma to związek ze sposobem, w jaki Charcoal bierze wkład, co niestety całkowicie go wyklucza z tego wyzwania, ponieważ nie można go obejść.JavaScript (ES6), 156 bajtów
Zwraca tablicę znaków.
źródło
?:
!Mathematica, 247 bajtów
źródło
Alignment
i oszczędzasz bajty, korzystając z opcji delayedset (:=
), aby zmniejszyć liczbę powtórzeńs[[i]]
is[[-i]]
, z tymi pomysłami spadasz do 224 bajtów: (T = Tabela; q: = s [[i]]; r: = s [[- i]]; k = Długość [s = Znaki @ #]; Jeśli [k == 1, #, Kolumna [Spłaszcz @ {#, T ["" <> {q, T ["", k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, Center] ]) Oraz mam alternatywne rozwiązanie, które w momencie komentarza ma tylko 145 bajtów.Pyth ,
796965 bajtówZestaw testowy .
źródło
Japt ,
8479 bajtów-5 bajtów dzięki @ETHproductions.
Wiodąca nowa linia jest częścią programu. Bierze ciąg jako dane wejściowe i zwraca tablicę ciągów.
Wypróbuj online! z
-R
flagą, aby połączyć wynikową tablicę z nowymi liniami.Nie moja największa praca, ale zmniejszyłem ją przynajmniej z ~ 100 bajtów. Moim pomysłem było stworzenie górnej i środkowej części, a następnie dołączenie górnej części, obróconej o 180 °.
źródło
Ul É
sięUÅl
, a przełącznik V i W, aby zaoszczędzić jeszcze 2 bajty: codepen.io/justinm53/full/...AnV ?
->V-A?
iUq £
->U£
¬
.Python 2 ,
220213 bajtówWypróbuj online!
źródło
PHP 7.1,
230 156155 bajtówUruchom jako potok z
-nR
lub spróbuj online .awaria
źródło
Mathematica,
168166147127 bajtówPobiera listę ciągów jednoznakowych i wyświetla macierz ciągów jednoznakowych.
Uratowałem 18 bajtów przez wykorzystanie symetrii w użyciu
-l
iCross/@l
który bierze coś w przekroju produktu z każdej z dwóch pojedynczych wektorów 2D do podjęcia{x,y}
się{-y,x}
. Zasadniczo dwa początkowe kierunki to wschód (górna krawędź) i południowy zachód (górna prawa krawędź). Następnie dodajemy ich obrót o 90 stopni w kierunku przeciwnym do ruchu wskazówek zegara zCross
: Północ dla lewej krawędzi i południowy wschód dla lewej dolnej krawędzi. Następnie dodajemy pozostałe cztery elementy za pomocą-l
do odwrócenia czterech, które omówiliśmy.Możesz to przetestować na piaskownicy za pomocą czegoś takiego:
źródło