Napisz nazwaną funkcję lub program, który akceptuje pojedynczą liczbę całkowitą N i wypisuje (do STDOUT) lub zwraca (jako ciąg) pierwsze N słupków spirali poniżej, zaczynając od pionowego paska w środku i spiralnie zgodnie z ruchem wskazówek zegara na zewnątrz.
_______________
/ _____________ \
/ / ___________ \ \
/ / / _________ \ \ \
/ / / / _______ \ \ \ \
/ / / / / _____ \ \ \ \ \
/ / / / / / ___ \ \ \ \ \ \
/ / / / / / / _ \ \ \ \ \ \ \
/ / / / / / / / \ \ \ \ \ \ \ \
| | | | | | | | | | | | | | | |
\ \ \ \ \ \ \___/ / / / / / / /
\ \ \ \ \ \_____/ / / / / / /
\ \ \ \ \_______/ / / / / /
\ \ \ \_________/ / / / /
\ \ \___________/ / / /
\ \_____________/ / /
\_______________/ /
Możesz założyć, że 0 <N <= 278. Twoje dane wyjściowe nie mogą zawierać żadnych spacji przed skrajnym lewym znakiem spirali. Możesz opcjonalnie wydrukować jedną końcową linię nowego wiersza.
Dla wejścia 10 poprawne wyjście to
_
/ \
| |
\___/
Dla wejścia 2 prawidłowe wyjście to
/
|
Dla wejścia 20 poprawne wyjście to
___
/ _ \
/ / \ \
| | | |
\___/ /
Dane wyjściowe, które byłyby niepoprawne, ponieważ lewy znak jest poprzedzony spacją, to
___
/ _ \
/ / \ \
| | | |
\___/ /
Zwycięzca jest najkrótszym przesłaniem, w bajtach.
|
) są tylko najbliższymi znakami, które mogą reprezentować spotkanie a/
i\
.Odpowiedzi:
CJam - 156/147
Wypróbuj online
Działa z wejściami od 1 do 378 włącznie (100 więcej niż wymagane)
Korzystając z najnowszego zatwierdzonego (publicznie dostępnego w hg), ale niepublikowanego kodu CJam w momencie opublikowania tego wyzwania, rozwiązanie można skrócić do 147 znaków:
Wyjaśnienie:
Program iteracyjnie konstruuje wszystkie spirale jako tablice [xy znaków] zaczynając od
[0 0 '|]
, pobiera żądaną spiralę, dostosowuje współrzędne tak, aby minimalne xiy wynosiły 0, tworzy macierz odstępów (z prawidłową liczbą wierszy i 50 kolumn ) ustawia znaki ze spirali i łączy wiersze z nowymi wierszami.źródło
Python 2,
290289Prawdopodobnie jest naprawdę źle, ale próbowałem: D
Dane wyjściowe zawierają końcowe spacje, ale nie jest to zabronione w specyfikacji.
Aktualizacja: zapisano 1 bajt ze zmianą
\n
na;
.źródło
JavaScript (ES6) 257
288 321Scalono edycję kroków.
Edytuj kodowanie gry w golfa, aby wyciąć więcej znaków
Wbuduj wynik iteracyjnie w tablicę r, śledząc bieżącą pozycję xiy oraz kierunek prądu. Gdy pozycja x lub y wynosi <0, cała tablica r jest ponownie dostosowywana.
Główne zmienne:
Nie golfił
Test w konsoli Firefox / FireBug (lub JSFiddle thx @Rainbolt)
Wynik
źródło
Pyth
166165Właśnie przetłumaczyłem moją odpowiedź na Pythona na Pyth, używając moich niezbyt dobrych umiejętności w Pythonie. Powstałe wymioty są poniżej.
źródło