Podany ciąg wejściowy o długości 2
lub większej, składający się wyłącznie ze znaków alfabetu [A-Z]
lub[a-z]
(do wyboru, jeśli wszystkie są wielkie lub wszystkie małe litery), wypisz ciąg ciąg znaków tworzących podwójny wzór rombu.
Łańcuch wejściowy zaczyna się w środkowej linii i rozciąga się w dół i w prawo po przekątnej, aż do osiągnięcia końca łańcucha wejściowego. Następnie wzór będzie kontynuowany w górę i w prawo po przekątnej, aż znajdziesz się tak daleko powyżej linii środkowej, jak długość ciągu wejściowego minus 1. Kontynuuj w dół i w prawo z powrotem do linii środkowej, a następnie w dół i- w lewo, potem w górę i w lewo (idąc „za” środkową postacią), a na koniec w dół i w lewo do postaci początkowej.
To trochę nieporadne i lepiej to pokazują przykłady:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Zobacz, jak YOU
zaczyna się od linii środkowej i podąża w dół i w prawo, a następnie w górę i w prawo itd., Dopóki nie zapętli się z powrotem na początek. Zwróć uwagę zwłaszcza Y
na to, że górna i lewa część znajduje się „za” O
i dlatego nie jest pokazana.
Kilka dalszych przykładów:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dane wejściowe mają co najmniej dwie litery (tzn. Nigdy nie otrzymasz
""
jako danych wejściowych). - Możesz wydrukować go do STDOUT lub zwrócić jako wynik funkcji.
- Dopuszczalny jest pełny program lub funkcja.
- Dopuszczalna jest dowolna ilość obcych białych znaków, pod warunkiem, że znaki odpowiednio ustawią się w linii (np. Nie krępuj się padać jak prostokąt).
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Odpowiedzi:
Węgiel drzewny , 17 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Narysuj ścieżkę.
Narysuj w kierunkach ↘↗↗↘↙↖↖↙ (
<
i>
są skrótami dla tych dwóch par, ale pozostałe pary nie mają skrótów).Każdy segment ścieżki ma tę samą długość, łącznie z końcami, długości wejścia.
Użyj danych wejściowych jako tekstu, który zostanie napisany wzdłuż ścieżki.
Wydrukuj ponownie pierwsze dwie części ścieżki, aby środkowy znak był poprawny.
źródło
05AB1E , 12 bajtów
Wypróbuj online!
źródło
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157 155154 bajtówZwraca macierz znaków.
Wypróbuj online!
W jaki sposób?
Bazujący na 0 indeks środkowego znaku, który należy pominąć w kształcie rombu:
Skomentował
źródło
JavaScript (ES6), 136 bajtów
Zwraca tablicę dwuwymiarową. Działa poprzez narysowanie łańcucha do tablicy bezpośrednio obliczając współrzędne docelowe działające wstecz od końca, dzięki czemu komórka środkowa jest automatycznie nadpisywana. Wyjaśnienie:
Ciąg wejściowy
Odległość między „odbiciami”, również połowa indeksu ostatniego rzędu i jeden mniej niż długość.
Indeks ostatniej kolumny, również połowa długości tekstu do narysowania.
Tablica przestrzeni.
Odliczanie od ostatniej komórki do pierwszej.
Wywołanie rekurencyjne w celu przetworzenia pozostałych komórek.
Oblicz wiersz tej komórki.
Oblicz kolumnę tej komórki i znak, który do niej należy.
Zakończ, zwracając tablicę.
Zacznij od końca tekstu.
źródło
J ,
797775 bajtówWypróbuj online!
źródło
C (clang) ,
201196188 bajtówWypróbuj online!
-13 @ sugestie @ceilingcat
źródło
Python 2 , 137 bajtów
Wypróbuj online!
Pełny program, który pobiera ciąg jako dane wejściowe podczas drukowania wersji diamentowej.
źródło