Pierwszy wiersz składa się z ceil(n/2)
elementów, w których każdy element to:<space><odd-number><space>
Druga linia składa się z ceil(n/2)
elementów, ale każdy element jest / \
tylko.
Możesz założyć n >= 0
i n <= 10
.
Przykłady
Wejście: 3
1 3
/ \/ \
Wejście: 10
1 3 5 7 9
/ \/ \/ \/ \/ \
Przykład w Pythonie 3, 103 bajty:
lambda a:print("".join([" "+str(i)+" "for i in range(1,a+1,2)]+["\n"]+["/ \\"for i in range(1,a+1,2)]))
Najkrótszy kod w bajtach wygrywa :)
<space><odd-number><space>
, ale przypadki testowe nie mają spacji po ostatniej nieparzystej liczbie. Czy to jest opcjonalne? Czy dane wyjściowe są dlan=0
dwóch pustych wierszy?Odpowiedzi:
05AB1E ,
19151412 bajtów05AB1E wykorzystuje kodowanie CP-1252 .
Zaoszczędzono 4 bajty dzięki Adnan .
Zaoszczędzono 2 bajty dzięki carusocomputing
Wypróbuj online!
Wyjaśnienie
źródło
Ï
BYŁO ?! To wydaje się bardziej przydatne.LDÉÏ
jest taki sam jakÅÉ
i„ ýðì
można go zastąpićðì)»
:).)
, prawda?ÅÉðìDg…/ \×»
używaDg
zamiast¹;î
innego bajtu zapisu.Pyke, 16 bajtów
Wypróbuj tutaj!
17 bajtów i więcej
Wypróbuj tutaj!
Wykorzystuje IMHO algorytm NIESAMOWITY do upewnienia się, że pierwszy wiersz jest poprawnie wyrównany.
Zastępuje to wszystkie znaki na liście łańcuchowej spacjami.
~B
zawiera wszystkie znaki w języku Brain **** i po raz pierwszy użyłem tej zmiennej.Program
`~Bd.:
robi to:źródło
Python 2, 63 bajty
Mała sztuczka dla pierwszego wiersza: nie wypisuje liczb parzystych, ale bierze je jako pusty ciąg znaków, co prowadzi do rozpoczęcia pustej spacji (byłoby tam 0) i podwójnych spacji między liczbami bez żadnych modyfikacji zakresu, minusem jest wiodąca przestrzeń w parzystej liczbie
n
źródło
Python
23,67656360 bajtówNie ma tu nic szalonego,
myślę, że pierwszą część można prawdopodobnie zrobić krócej, ale nie jestem pewien, jak to zrobić. Korzystam z faktu, że w tym przypadku-~n/2
będzie działaćceil
.Poniżej przedstawiono alternatywne rozwiązania 61 i 65 bajtowe w Pythonie 2:
Dzięki Rod za zapisanie 2 bajtów i Artyer za zapisanie kolejnego bajtu przez zmianę wersji :)
źródło
%(tuple(...))
z%[*...]
, ale trzeba by zrobić-~n//2
range
na listę, ponieważ 3range
jest jak Python 2xrange
.tuple()
(*<iterable>,)
rzutowanie na krotkę w Pythonie 3. To oszczędza 1 bajt po przejściun/2
nan//2
Python 3.JavaScript (ES6), 55 bajtów
Zwróć uwagę na spację na końcu drugiej linii.
źródło
.replace
może być lepiej, ale nie zadałem sobie trudu, aby sprawdzić ...Python 2, 53 bajty
Korzysta z ograniczenia,
n <= 10
aby wygenerować górną linię, odcinając kawałek z zakodowanego łańcucha.Wyjścia od 1 do 10 to
Dane wyjściowe dla 0 to dwie puste linie.
źródło
Vim,
735956 bajtówJest to naprawdę wysoki bajt IMO dla czegoś, co wydaje się prostym problemem. Czuję, że brakuje mi czegoś oczywistego.
Wypróbuj online!
Materiały niedrukowalne:
źródło
:s;.;/ \\;g
. 2) przy drugim poleceniu zastępowania możesz pozostawić wyszukiwanie puste, a ono użyje ostatniego wyszukiwania (tak się składa, że jest takie samo). Ponadto&
jest równy\0
i jeden bajt krótszy. Więc dostajesz:s// & /g
Mathematica, 65 bajtów
Funkcja anonimowa. Pobiera liczbę jako dane wejściowe i zwraca ciąg znaków jako dane wyjściowe. Znaki Unicode, odpowiednio, to U + 2308 LEWY SUFIT dla
\[LeftCeiling]
i U + 2309 PRAWY SUFIT dla\[RightCeiling]
.źródło
WinDbg, 100 bajtów
Wprowadzanie odbywa się poprzez ustawienie wartości w pseudorejestru
$t0
.Wygląda na to, że najkrótszy jest tutaj wydrukować ciąg znaków podczas budowania, zamiast próbować go najpierw zbudować i wyświetlić całość. Miałbym krótsze rozwiązanie, gdyby WinDbg pozwolił mi pisać na adres
0
.Jak to działa:
Dane wyjściowe dla każdej wartości
n
:źródło
> <> (RYBY),
69606855 bajtówWklej go do tego internetowego tłumacza!
Liczba 5 w pierwszym wierszu to wartość wejściowa (zakodowana na stałe jako 5, zastąpiona przez 0-a lub i dla danych wprowadzanych przez użytkownika).
Edycja 1: Przeniesiono umieszczenie nowego wiersza do pierwszego wiersza (było puste), aby zaoszczędzić ogółem 9 bajtów na nowym wierszu.
Edycja 2: Jak zauważył użytkownik 7150406, dane wyjściowe były niepoprawne (brak drukowania spacji), co zostało naprawione przez utratę 8 bajtów.
Edycja 3: całkowicie zmieniłem logikę, nie ma sensu sprawdzanie, czy liczba jest nieparzysta - raczej umieszczaj wszystkie liczby na stosie i usuwaj co drugi. Zapisano bajt 13!
źródło
Java,
118112 bajtówEdycja: Zapisano 6 bajtów dzięki @peech
Gra w golfa:
Nie golfowany:
Testowanie:
źródło
i
w pierwszej pętli for, może to wyglądać takfor(; i < n; i++)
. Dzięki tej zmianie możesz pograć w golfa jeszcze bardziej:o += i + " ";
zmianyo += i++ + " ";
w pętli for i stają sięfor(; i < n; )
. To jest, jeśli chcesz zachować instrukcję if. Mógłbyś zmienić swój przyrost i nai += 2
i usunąć całą instrukcję if, ale w takim przypadku moja druga propozycja nie ma zastosowania :) (ps:i
inicjalizację zfor
pętli, ale inne rzeczy utknęły w pętli. Być może będę musiał się z tym trochę pobawić :)o += i++ + " ";
:). Btw, masz mały błąd w kodzie :) od Java używafloor()
sprawie podziału Integer (4/3 = 1), należy zrobić to tak:int i = 1; n += 1; for (; i < n; i += 2) { ... jada jada ... }
. jeśli zwiększasz oi += 2
, nie potrzebujesz tego, jeśli instrukcja sprawdza parzystość. Oszczędza również kolejne 3 bajty :) spróbuj tutaj: ideone.com/ekaUUHfloor
kilka dni temu odkryłem dziwactwo dywizji, grając z jakąś Javą :)C # 6, 95 bajtów
Pełna lambda:
źródło
CJam,
2623 bajtówSprawdź to!
-3 dzięki 8478 (Martin Ender)
źródło
Sri,:)2%_S2**N@,"/ \\"*
+
. I przysięgam, naprawdę wykorzystałemed
! ... krótszy niż Pyth.Game Maker Language (GM 8.0), 97 bajtów
Biorąc pod uwagę, że dane wejściowe wynoszą co najwyżej 10,
chr(48+i)
będą działać zamiaststring(i)
, chociaż liczba bajtów jest taka sama.Czytelny:
źródło
Pyth,
2422 bajtówDzięki 42545 (ETHprodukcje) za -1 bajt
Tłumacz online
11 przypadków testowych
źródło
*lK"/ \\
\
zamiast\\
:)> <> (Ryby)
526362 bajtówWypróbuj online!
Aby użyć po prostu miejsce
n
na stosie i gotowe!Wiele z tego pochodzi z odpowiedzi @ Teal-Pelican :).
Edycja: Dane wyjściowe nie są właściwie wyrównane w>> <> przesyłaniu! Ustalenie...
Edycja2: Musiałem poświęcić niektóre bajty, ale dane wyjściowe są teraz poprawne.
Edycja3: Nigdy więcej zabawy z
\
/
lustrami i oszczędzam 1 bajt.Wynik:
źródło
C,
1007977 bajtówźródło
R,
70696858 bajtówźródło
Grzmotnąć,
64,59,57,51,49,48, 45 bajtówEDYTOWAĆ:
-s ""
go-s\
Grał w golfa
Fragment (45 bajtów):
Funkcja (wersja oryginalna) (57 bajtów):
Test
źródło
sed
jest genialne. Nie używając funkcji ani printf, oszczędzasz 10 bajtów:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
cat
do odczytu danych wejściowych ze STDIN, ponieważ IMO nie jest uczciwe, aby używać wstępnie zdefiniowanej zmiennej do przekazywania danych.$1
to tylko pierwszy parametr przesłany do programu. Nie sądzę, że to oszustwo, zobacz meta.codegolf.stackexchange.com/questions/2447/…Befunge 93 , 64 bajty
Wypróbuj online!
źródło
Rubinowy
8260 bajtówSzybkie i brudne rozwiązanie Ruby można zdecydowanie lepiej zoptymalizować, gdybym był lepszy z Ruby
Zastosowanie: prog.rb 10
Wyjście:
edycja: liczne zmiany i optymalizacje autorstwa @Manatwork!
źródło
print
→$><<
i użyj interpolacji ciągów" #{x} "
. Ale najlepiej byłoby, aby zmniejszyć liczbę.each
przez wyprowadzenie 1. linia bezpośrednio z zwrotnego i budowania 2 linia w zmiennej:s="";(1..$*[0].to_i).step(2){|x|$><<" #{x} ";s+="/ \\"};puts"",s
. Lub nawetputs"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*""
.Numeric#step
akceptuje 2 parametry, więc można uniknąć składni długiego zakresu, która wymaga nawiasów wokół:(1..$*[0].to_i).step(2)
→1.step($*[0].to_i,2)
.JavaScript (ES6),
6664 bajtówRekurencyjnie buduje pierwszą linię, a następnie dołącza drugą. Pierwszy wiersz jest zbudowany z obserwacji, że jest to po prostu zakres [0 ... n], przy czym każdy element n przekształca się w spację, jeśli jest parzysta, lub n łączy się ze spacją, jeśli jest nieparzysta.
źródło
Python 2, 60 bajtów
Zaoszczędź 6 bajtów dzięki @Kade!
źródło
list()
gipsu, usunięcie go spowoduje przejście do 60 :)lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"e
bo wtedy dałby listę ints i umieraPartia, 107 bajtów
źródło
Scala,
9995 bajtówNie golfił
źródło
Rubinowy, 48 bajtów
źródło
Oktawa, 45 bajtów
f=@(n)reshape(sprintf(' /%d \',1:2:n),2,[]);
Test:
f (8)
źródło
QBIC , 35 bajtów
Wyjaśnienie:
źródło
Kitanai , 140 bajtów
źródło
Perl, 46 + 2 (
-pl
flaga) = 48 bajtówZa pomocą:
Lub 52 bajty:
Za pomocą:
źródło