Kula armatnia jest wystrzeliwana, tak że w pierwszym łączniku swojego lotu unosi się N
w koronach drzew, podczas drugiego łącznika przezN-1
drzew itp., Aż osiągnie najwyższy punkt swojej trajektorii. Następnie zaczyna spadać o 1, 2 itd. Koron drzew na linkę oczną, aż uderzy o ziemię. W tym samym czasie kula armatnia porusza się poziomo ze stałą prędkością 1 wierzchołka / linkę oczną.
Twoim zadaniem jest narysowanie trajektorii kolejnymi literami z alfabetu angielskiego. Jeśli zabraknie Ci liter, zacznij od nowa 'A'
. Napisz funkcję lub program. Dane wejściowe to liczba całkowita N
( 1≤N≤15
). Wynikiem może być macierz znaków w dowolnej rozsądnej formie, na przykład ciąg oddzielony znakiem nowej linii lub lista ciągów. Litery mogą być pisane małymi lub wielkimi literami. Dodatkowe spacje wiodące i końcowe są dozwolone. Standardowe luki są zabronione. Krótszy kod jest lepszy.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
iP
tyknięcie idzie 1 w prawo, ale 0 totemów w górę lub w dół.Odpowiedzi:
05AB1E ,
33322928 bajtówWypróbuj online!
Wyjaśnienie
źródło
Nú»
coś takiego można wykorzystać do drukowania zamiast tego])~.c
Stax ,
2924 bajtówUruchom i debuguj online
Odpowiada to reprezentacji ascii tego samego programu.
źródło
R,
169163161153150110109 bajtówTo podejście wypełnia matrycę, a następnie drukuje matrycę.
Grał w golfa
Dzięki @Giuseppe za 153.
Dzięki @JDL za 150.
Zobacz komentarz @ Giuseppe dla 112, a niektóre zmiany dla 110 teraz 109. Zgrywanie oryginalnego kodu.
Jeśli drukujesz prawidłowe dane wyjściowe, to 73 bajty
źródło
Map
zamiastmapply
?lapply
zamiastmapply
. Dzięki za 150row,column
pary bezpośrednio,[
zamiast konieczności przechodzenia przezmapply
(lubMap
), więc znalazłem sposób, aby to zrobić. Pamiętałem też, żewrite
istnieje i może zastąpićcat
do 112 bajtów !Python 2 ,
140135133 bajtówWypróbuj online!
źródło
MATL , 29 bajtów
Wypróbuj online!
Jak to działa
źródło
Java (OpenJDK 8) , 121 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C 184 bajty
Wypróbuj online!
Rozwinięty:
źródło
main
aby ją skompilować. W TIOmain
znajduje się w sekcji stopki.Clojure,
417319 bajtówW pewnym momencie zaplątałem się
reverse
rozmowach telefonicznych i zrezygnowałem z pomysłu, żeby było jak najkrótsze. Chciałem tylko mieć działające rozwiązanie. Proszę bardzo...W pewnym sensie nie golfa
Aktualizacja
Zmotywowany komentarzem Oliviera, udało mi się wyciąć wiele
reverse
połączeń i zastosować kilka ogólnych sztuczek golfowych, aby wyciąć postacie. Stworzyłem również dla aliasówreverse
,map-indexed
,concat
,repeat
istr
dlatego, że korzystali z nich wiele razy każdy.Bez golfa
Tworzy funkcję,
c
która akceptuje wartość n i zwraca listę wierszy.źródło
Węgiel drzewny ,
3331 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 2 bajty dzięki tylko @ ASCII. Wyjaśnienie:
Zainicjuj bieżącą literę jako indeks wielkimi literami na 0.
Zrób pętlę od negacji wejścia do wejścia włącznie.
Zwykle każda kolumna znajduje się na prawo od poprzedniej. Jednak nie ma kolumny dla zera. Zamiast tego konieczna jest korekta, aby zapewnić wyrównanie lewej i prawej strony.
Pętla dla każdej litery w kolumnie.
Wydrukuj bieżący list.
Zwiększ indeks literowy.
Poruszaj się w górę lub w dół w zależności od tego, po której stronie trajektorii jesteśmy.
źródło
Perl 5 , -n
112929088 bajtówChoć raz strasznie długo
printf
wygrywa.Wypróbuj online!
źródło
(A..Z)x9
do pracy, ale było to po prostu za mało! Miałem to tylko dla 91 osób. :)Python3 + numpy,
124115Tworzy to odpowiednio dopasowaną tablicę, wyszukuje wskaźniki trajektorii i przypisuje im odpowiedni znak.
Najbardziej złożoną częścią jest generowanie znaków AZ, które opierają się na bardzo hackerskiej obsadzie liczb na ciąg znaków.Zwrócony obiekt jest tablicą Unicode.Edycja : Zapisano 9 bajtów zastępując kod numpy, który wygenerował znaki AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
)map
, zgodnie z sugestią tutaj .źródło
Python 3 ,
139136 bajtówWypróbuj online!
Generuje rekurencyjnie każdą warstwę, biorąc pod uwagę rozmiar i przesunięcie.
-3 bajty dzięki Jo King
źródło
~
operatorze!n and ... or''
sięn*' 'and ...
na inną bajtJ ,
7875 bajtówWypróbuj online!
-3 dzięki ngn
źródło
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 bajty
Wypróbuj online!
Zwraca listę list znaków. Prymitywna weryfikacja tutaj
źródło
Galaretka , 35 bajtów
Wypróbuj online!
źródło
Yabasic , 125 bajtów
Podstawowe rozwiązanie, które wykorzystuje tryb graficzny drukować znaki na odpowiedniej kolumnie i wierszu ekranu.
Ponieważ to rozwiązanie wykorzystuje tryb graficzny, nie można go uruchomić w TIO.
Wydajność
Poniżej przedstawiono dane wejściowe
7
źródło
Rubin ,
106103 bajtówWypróbuj online!
źródło
QBasic 1.1 , 124 bajty
Pobiera dane i strzela z armaty. Z powodu ograniczeń rozmiaru ekranun musi być ≤ 6 .
źródło
Python 3 , 190 bajtów
Wypróbuj online!
Starałem się jak mogłem. Daj mi znać, jeśli możliwe są jakiekolwiek optymalizacje.
źródło
k4,
7671 bajtówniektóre zmiany układu + przypisania w celu zaoszczędzenia 5 bajtów
półgodzinny wysiłek z pewnym wysiłkiem, aby ogolić kilka bajtów, ale prawdopodobnie jest tutaj o wiele więcej. wróci do tego. fajne wyzwanie!
źródło