Wszystkie podziękowania dla Adnana za wymyślenie tego wyzwania.
Moje ostatnie wyzwanie, zanim pójdę na przerwę .
Zadanie
Biorąc pod uwagę dodatnią liczbę całkowitą n
, jeśli n
jest nieparzysta, powtórz /
to wiele razy; jeśli n
jest parzysty, powtórz \
to wiele razy.
(Poważnie, przypadki testowe byłyby o wiele jaśniejsze niż ten opis, więc spójrz tylko na przypadki testowe.)
Okular
- Dowolny rozsądny format wejścia / wyjścia.
- Obowiązują standardowe luki .
Przypadki testowe
n output
1 /
2 \\
3 ///
4 \\\\
5 /////
6 \\\\\\
f=n=>...
, można bezpośrednio nazwać:(n=>...)(5)
. (Lub jeśli używasz REPL Node.js, możesz użyćthis._
, co oznacza ostatnią wprowadzoną rzecz)Python, 20 bajtów
źródło
05AB1E / 2sable ,
151198 bajtów-2 bajty dzięki Leaky Nun
-1 bajt dzięki Emignie
Wypróbuj online! w 05AB1E
lub w 2sable
źródło
sè×
😮"/\"
może być „/ \Perl, 20 bajtów
Obejmuje +1 dla
-p
Uruchom z wejściem na STDIN:
squigly.pl
źródło
-p
opcji? Używam;
w transliteracji właśnie dlatego, że-p
ma niejawne miejsce;
na końcu kodu, dzięki czemu mogę zapisać jeszcze 1 bajt.-p
;
dodanym przez-p
jest dość świetna, dobrze zrobiona.Retina , 21 lat
Wypróbuj online (dodano pierwszą linię, aby umożliwić uruchomienie wielu przypadków testowych).
źródło
C #, 42 bajty
Wybiera poprawny znak, a następnie tworzy nowy ciąg znaków składający się z tego znaku powtarzanego
n
razy.źródło
PHP, 38 bajtów
(wariant 38 bajtów)
(wariant 38 bajtów)
(wariant 40 bajtów)
źródło
C, 40 bajtów
Wypróbuj na Ideone
źródło
putchar(92-n%2*45)
jest tej samej długości.Galaretka , 5 bajtów
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe.
źródło
Ø^
jest to bajt krótszy niż⁾/\
.J, 10 bajtów
Jest to czasownik składający się z sześciu pociągów, składający się z:
To jest haczyk pomiędzy
#
i('\/' {~ 2 | ])
; hak(f g) y
rozszerza się doy f (g y)
, więc to rozwija się doy # (... y)
, co dla pojedynczych znaków daje listęy
znaków.Druga część to 5-pociąg składający się z:
To ocenia na dwa widelce:
Wewnętrzny widelec
2 | ]
ma moduł drugi. Zewnętrzny widelec jest zatem:Który pobiera (
{~
) indeks mod2 (mod2
) z ciągu/
.Następnie za pomocą haka z góry:
Daje to, co chcemy i gotowe.
źródło
Haskell, 25 bajtów
-1 bajt dzięki Damienowi z
cycle
.źródło
f n=cycle"\\/"!!n<$[1..n]
Mathematica,
343228 bajtówFunkcja anonimowa. Bierze liczbę całkowitą jako dane wejściowe i zwraca listę znaków jako dane wyjściowe.
źródło
~Table~#
.<>""
i zwrócić listę znaków.~Do~Infinity
i tak w 10.2+, a także ...PowerShell,
3027 bajtówAktualizacja:
Przejście na
param
, dzięki timmyd .lub nieco bardziej czytelny
Test:
źródło
param($n)
zamiast$args
, na przykład dla 27 bajtów -param($n)('\','/')[$n%2]*$n
Mathematica, 29 bajtów
Okrutnie wykorzystuje fakt, że
[[1]]
zwraca pierwszy argument funkcji, podczas gdy[[0]]
zwraca samą funkcję (head), zastosowaną do dziwnie poprawnej funkcji o nazwie, dla"\\"
której jest „oceniany”"/"
.źródło
a[b]
jest po prostu wyrażeniem ogólnym z głowąa
(indeks0
) i elementemb
(indeks1
), a funkcje są tylko szczególnymi rodzajami wyrażeń (w rzeczywistości bardziej poprawne byłoby stwierdzenie, że funkcje nie są ' t wyrażeń w ogóle, ale są to po prostu reguły przekształcania wyrażeń, które zwykle mają formęf[x...]
). :)Rubin, 15 bajtów
Zobacz na eval.in: https://eval.in/632030
źródło
Fouriera, 27 bajtów
Wypróbuj online!
źródło
Brachylog , 15 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
CJam , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
> <> (Ryba), 30 bajtów
Pierwszy raz używam tego języka, ale myślę, że przynajmniej zaoszczędziłem trochę miejsca, warunkowo używając / jako części danych wyjściowych lub lustra do przekierowania przepływu. Prawdopodobnie wciąż okropnie nieefektywna, ale wydaje mi się, że można by to przynajmniej trochę zmniejszyć.
Dane wejściowe to stos początkowy, dane wyjściowe to
stdout
Wypróbuj online!
źródło
Dyalog APL , 11 bajtów
Wymaga
⎕IO←0
ustawienia domyślnego w wielu systemach.⊢
argument⍴
przekształca (powtarza)'\/'⊃⍨
ciąg „/” wybrany przez2|⊢
pozostała część podziału, gdy argument jest podzielony na dwaWypróbuj APL online!
źródło
Java 7,
6865 bajtów3 bajty zapisane dzięki @ user902383 i @SeanBean .
Podobnie jak w przypadku tej odpowiedzi , najkrótszy kod-golf wydaje się zapętlać i drukować. Zarówno rekurencyjne, jak i
void c(int i){System.out.print(new String(new char[i]).replace("\0",i%2<1?"\\":"/"));}
wydaje się być dłuższe.
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wydajność:
źródło
x=-1;++x<i
sięx=0;x++<i
można zmniejszyć o jeden bajt"\\" : "/"
z92:'/'
;)R,
4746 bajtówW R musisz uciec przed ukośnikiem. argument
sep
również musi zostać w pełni sprecyzowany, ponieważ jest późniejszy...
. Zatem irytująco mało okazji do zapisywania znaków :(Dzięki bouncyball za grę w golfa w bajt.
źródło
n=scan();cat(rep(c('\\','/')[n%%2+1],n),sep='')
T-SQL 50 bajtów
Oczywiście, że nie
STDIN
tutaj, więc załóżmy taką zakodowanąINT
zmienną jak ta:DECLARE @ INT
wtedy rozwiązaniem jest:źródło
Pip , 8 bajtów
Bezpośredni. Używa indeksowania modułowego, aby wybrać powtarzanie znaku i łańcucha, aby je pomnożyć. Wypróbuj online!
To pytanie przedstawia interesujące porównanie między Pip, Pyth i Jelly , przy czym dwa ostatnie mają po 5 bajtów. Wszystkie trzy języki mają dorozumiane dane wyjściowe, z operatorami jednokolumnowymi do indeksowania modułowego i powtarzania ciągów, i nie wymagają ucieczki odwrotnych ukośników w ciągach. Istnieją jednak dwie kluczowe różnice:
Żadna z tych funkcji prawdopodobnie nie pojawi się w Pip 1 (nie podoba mi się estetyka niezrównoważonych separatorów, a bezcelowa składnia lub ukryte argumenty wydają się być zbyt obce mojemu parserowi wyrażeń infiksowych), ale „ w porządku z graniem na trzecim skrzypcach. Chociaż „czytelność” jest niezwykle względna podczas gry w golfa, twierdzę, że te trzy dodatkowe bajty sprawiają, że program Pip jest znacznie łatwiejszy do zrozumienia na pierwszy rzut oka - i w mojej książce jest to opłacalny kompromis.
1 Chociaż ciągi
'
jednoznakowe w Pip używają pojedynczego separatora, zainspirowanego przez CJam i cytowanie w Lisp.źródło
code golf
:! =golflang design
. Teraz możesz argumentować, że ta sama zasada (krótsza jest zawsze lepsza) dotyczy również projektowania języka. Mówię tylko, że dla mnie użyteczność, a nawet estetyka są rozważaniami.Pyth , 5 bajtów
Zestaw testowy.
Indeksowanie modułowe w ciągu,
\/
a następnie powtórzenie.źródło
Perl 6 , 16 bajtów
Stosowanie:
źródło
Julia, 20 bajtów
źródło
SpecBAS - 28 bajtów
ODD
zwraca 1, jeśli liczba jest nieparzysta, a następnie używa tego jako indeksu do wydrukowania poprawnego znaku n razy. Muszę dodać 1, ponieważ ciągi SpecBAS zaczynają się od znaku 1.źródło
Java 8, 56 bajtów
Chciałbym podziękować @Kevin Cruijssen w zaawansowanym trybie za dalszą grę w golfa.
Program testów bez golfa
źródło
Właściwie 10 bajtów
Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Jak to działa
źródło