Wkład:
- Liczba całkowita , której gwarantowanie wynosi .
- Liczbą całkowitą , która jest jedną z .
Wydajność:
Droga o rozmiarze , która będzie w kierunku północno-zachodnim, jeżeli ; kierunek północny, jeśli ; lub w kierunku północno-wschodnim, jeżeli . Droga zawsze będzie miała trzy pola szerokości (lub ogólnie pięć, jeśli uwzględnimy granice zewnętrzne). Ponadto na dolnym odcinku będzie znajdować się linia oddzielająca drogę, a następnie naprzemiennie podczas jazdy w górę.
Kilka przykładów:
Dane wejściowe:
wyjściowe:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Dane wejściowe: wyjściowe:
\ \
\ \ \
\ \
\ \ \
Zasady konkursu:
- Dopuszczalna jest dowolna liczba wiodących / końcowych spacji i / lub nowych linii, o ile drukuje wymaganą drogę gdzieś na ekranie.
- Zamiast opcji możesz również użyć opcji lub . Możesz także wybrać, która z trzech opcji mapuje na który z trzech kierunków. (Upewnij się, wspominając, które opcje już stosowane, jeżeli różni się ono od o
[north-west, north, north-east]
! Odpowiednio, który jest używany w tym opisie prowokacji) - Dopuszczalny jest każdy rozsądny format wyjściowy. Najczęstszym jest oczywiście wydrukowanie go do STDOUT, ale zwracanie go jako łańcucha lub listy znaków 2D jest również w porządku.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Dwa powyższe przykłady oraz:
Wejście:
Wyjście:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Odpowiedzi:
Płótno ,
2322 bajtówWypróbuj tutaj!
Wykorzystuje wejścia kierunkowe 0, 1 i 2.
Wyjaśnienie:
źródło
Python 2 ,
79787372 bajtyWypróbuj online!
trwa
[1,0,-1]
do[north-west, north, north-east]
-1 bajt, dzięki Neilowi
źródło
i%2*c or' '
zapisuje bajt.Python 2 , 66 bajtów
Wypróbuj online!
Używa
d=-1
NE,d=0
N id=1
NW. Wykorzystuje dozwolone wiodące miejsca. Zasada, że dolny odcinek drogi ma separator, utrudniała wyrównanie parzystości; osiąga się to poprzez krojenie(s*n)[n:]
w drugiej połowie2n
naprzemiennie przestrzeni i charakteru drogi.źródło
1. Python 3.5,
122120 bajtówSkrypt ma dwa parametry: n, d.
d: 0, 1, 2 -> \ | /
tio.run
wydajność:
Wyjaśnienie
edycja: -2 bajty dzięki Kevin Cruijssen
źródło
n-1-i
może byćn+~i
( odpowiednia wskazówka ) ij%2==0
może byćj%2<1
. Jeśli jeszcze ich nie widziałeś, zarówno Porady dotyczące gry w golfa w Pythonie, jak i Porady dotyczące gry w golfa w <wszystkich językach> mogą być interesujące.n+~i
nie widziałem , ale wygląda na pomocny. Dziękujemy również za wyróżnienie kodu.j%2*" "or c
oszczędza kolejną parę bajtów.PowerShell ,
8882807471 bajtów-8 bajtów dzięki Mazzy
-6 bajtów dzięki AdmBorkBork i Mazzy
-3 bajtów dzięki AdmBorkBork
Wypróbuj online!
Używa [0,1,2] dla NW, NE, N. Używa
d
dwukrotnie jako indeksu listy, aby najpierw uzyskać metodę odstępów (usuwa listę z listy przy użyciu 2, która zwraca 0), a następnie znak, którego należy użyć podczas rysowania linii. Dołącza listę do ciągu spacji (który wewnętrznie ma spacje między elementami, gdy jest dołączany jako taki), który tworzy drogę. Również zamiana między otwartą linią lub kreską w oparciu o matematykę modulo.źródło
C (gcc) ,
10090 bajtówWypróbuj online!
Dobrze napisana wersja
źródło
Węgiel drzewny ,
332923 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Teraz, gdy wszystkie podstawowe błędy Charcoala wydają się naprawione, mogę reklamować optymalny kod. Wyjaśnienie:
Obróć kursor w kierunku przeciwnym do ruchu wskazówek zegara zgodnie z pierwszym wejściem, tak aby 1 zmienił się na północny wschód, 2 na północ i 3 na północny zachód.
Podaj długość drogi.
Wydrukuj połowę drogi, a następnie rozciągnij ją, dając separator drogi.
Wydrukuj boki drogi.
@KevinCruijssen przesłał następnie trudniejszą wersję tego pytania, która została usunięta, ale użytkownicy z wystarczającą liczbą przedstawicieli mogą to zobaczyć tutaj: (Trudna) droga do kodu Trik rozciągający, którego użyłem w tej odpowiedzi, nie ma zastosowania do tego pytania, więc zamiast tego napisał następujący
4745-bajtowy program:Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Pętla po bokach i separator.
Przejdź na początek boku.
Stwórz tablicę zawierającą a
1
i spację, ale usuń spację ponownie, jeśli rysujemy boki zamiast separatora.Pętlę nad każdym odcinkiem drogi.
Obróć odpowiednio kursor.
Pętla jest mniejsza o jeden odcinek niż długość odcinka drogi ...
... i drukuj naprzemienne elementy tablicy. Przemianę uzyskuje się poprzez cykliczne indeksowanie do tablicy za pomocą współrzędnej Y kursora.
Wydrukuj ostatni rząd tego odcinka drogi, ale bez przesuwania kursora ...
... aby kursor mógł zostać przesunięty w górę, gotowy do następnej sekcji.
Obróć kierunek kursora z powrotem gotowy do następnej sekcji.
źródło
Kotlin ,
9692 bajtówAkceptuje [0, 1, 2] zamiast [-1, 0, 1]
Działa podobnie do rozwiązań w innych językach, ale niestety Kotlin tak naprawdę nie błyszczy w tym.
val c=“\\|/“;
pobiera char do wykorzystania w budowaniu dróg, wykorzystując fakt, że Kotlin traktuje struny jak tablicę znaków (tak jak powinno, patrząc na ciebie Java)Wypróbuj online!
źródło
4
z moim przykładem,4
aby zobaczyć różnicę, którą mam na myśli. Nie znam tak dobrze Kotlina, ale myślę, że możesz go rozwiązać (i jednocześnie grać w 4 bajty), zmieniając[(it+1)%2]
na[it%2]
. :) Poza tym to fajna odpowiedź, więc +1 ode mnie.Kod TSQL,
171117 bajtówUświadomiłem sobie, że można to napisać znacznie krócej jako kod.
Zapytanie TSQL, 137 bajtów
USE master nie jest konieczne, jeśli baza danych jest już masterem. Niektórzy użytkownicy mają jednak inną domyślną bazę danych.
Skrypt podczas wypróbowywania jest nieco inny. Musiałem zastąpić spację ascii-32 ascii-160, spacje nie zostały pokazane.
Wypróbuj to
Dokonałem kilku poprawek i zdałem sobie sprawę, że mogę go wymienić
z
źródło
order by 1/0
to nie powoduje błędu dzielenia przez zero?JavaScript (ES8),
90 8785 bajtów(direction)(length)
Wypróbuj online!
JavaScript (ES6), 90 bajtów
Ten rysuje postać wyjściową znak po znaku z nieco większą ilością matematyki zamiast
.padStart()
metody.(direction)(length)
Wypróbuj online!
źródło
Galaretka ,
3130 bajtówDyadyczny link akceptujący długość po lewej stronie i negowany kierunek * po prawej stronie, który daje tablicę 2d znaków.
*
[north-west, north, north-east]=[1, 0, -1]
Wypróbuj online! (stopka wywołuje łącze, łączy się ze znakami nowej linii i drukuje wynik)
W jaki sposób?
źródło
Python 2, 127 bajtów
Wypróbuj online!
Pierwsze dwie linie zaczerpnięte z @TFeld.
źródło
D,N=input()
(i użyć Python 2 zamiast 3), aby to naprawić. Możesz też zmienić go na funkcję lambda, biorąc te dwa parametry." ".join(..)
raczej ran.format
i%2*c or' '
oszczędza jeszcze kilka bajtów, chociaż zauważyłem, że separator jest zły dla dróg o nieparzystej długości.Python 2 , 93 bajty
Wypróbuj online!
źródło
+' %s '+
na,'%s',
oszczędność 2 bajtów'%s'%
całkowicie.J , 64 bajty
Wypróbuj online!
Spróbuje później zagrać w golfa
źródło
C # (Visual C # Interactive Compiler) ,
12910710393 bajtów-1 dla północnego wschodu, 1 dla północnego zachodu, 0 dla północy
Wypróbuj online!
źródło
Czerwony , 157 bajtów
Wypróbuj online!
źródło
Japt, 53 bajty
Wypróbuj online!
źródło
Swift 4.2 ,
112108 bajtów-4 bajty dzięki Sriotchilism O'Zaic
[0,1,2] zamiast [-1,0,1].
Wypróbuj online!
Wyjaśnienie
Określa znak drogowy, którego należy użyć. (Założę się, że można to jakoś skrócić)
Iteruje na całej długości ulicy.
Dodaje spacje przed ulicą.
Dodaje środkowy znak do każdej innej linii.
Mój pierwszy ☝️, cieszę się z wszelkich porad dotyczących optymalizacji. Nauczyłem się głównie z tego wątku: Wskazówki dotyczące gry w golfa w Swift .
źródło
in
i" "
w kodzie, mimo że usunąłeś go w swoich przykładach.\(c)
w obu przypadkach). Zaoszczędziłbyś bajty, łączącc
łańcuch z ciągiem znaków. Wypróbuj online!Perl 6 , 66 bajtów
Wypróbuj online!
Zwraca listę linii.
Wyjaśnienie
źródło
Rubinowy , 90 bajtów
Wypróbuj online!
AKTUALIZACJA: Dziękuję, Kevin, za zwrócenie uwagi na to, że w moim pierwotnym zgłoszeniu brakowało spacji między krawędziami drogi a znacznikami (tj. Drogi o szerokości 3 zamiast 5 szerokości). To powiedziawszy, może być krótsza poprawka niż
c+' '+...+' '+c
.Informacje kierunkowe:
-1, 0, 1
odwzorowuje na{ north-west, north, north-east }
Argumenty: odczytuje argumenty wiersza poleceń, takie jak
4 -1
(czterorzędowa droga, nachylona w kierunku północno-zachodnim).Dodatkowa uwaga: Zostało to przetestowane lokalnie za pomocą Ruby v2.6.1 i wygląda na to, że Try It Online używa Ruby v2.5.3. Nie mam powodu sądzić, że nie zadziała ze wszystkimi innymi wersjami Rubiego.
źródło
|||
lub|<sp>|
, ale powinna być|<sp>|<sp>|
lub|<sp><sp><sp>|
(gdzie<sp>
jest spacja). Nie znam Ruby, ale wygląda na to, że możesz go rozwiązać, zmieniającc+[' ',c][i%2]+c
nac+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 bajtów
Wypróbuj online!
Staje
d
jako jeden0
,1
lub2
.źródło
Japt
-R
, 40 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Stax , 23 bajty
Uruchom i debuguj
Dane wejściowe to dwie liczby całkowite oddzielone spacją.
Pierwszy to
d
. -1 określa północno-wschodni. 0 dla północy. 1 dla północnego zachodu. Drugi parametr ton
. Te dwie wartości zostaną domyślnie przeanalizowane z danych wejściowych i umieszczone na stosie wejściowym zn
na górze. Dodatkowod
będą dostępne zx
rejestru stax, ponieważ jest to pierwsza wartość domyślnie przeanalizowana.Na przykład wpisz „1 7”
Uruchom ten
źródło
perl -M5.010 -Mfeature = podpisy, 97 bajtów
źródło