Pokaż łańcuch małych gór z nieparzystą liczbą na górze!


19

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 >= 0i 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 :)


3
Czy możesz założyć, że wszystkie dane wejściowe będą mniejsze niż 11?
Niebieski,

Tak, wszystkie dane wejściowe będą mniejsze niż 11!
Sygmei,

8
Witamy na stronie! Naszym domyślnym kodowaniem jest liczenie w bajtach, a nie znakach. Jeśli chcesz to zmienić, to twój wybór. Polecam również Sandbox następnym razem :)
Erik the Outgolfer

Miałem na myśli bajty, masz rację! Czy w pobliżu jest dobry bajt?
Sygmei,

1
Jak konkretnie musimy obsługiwać białe znaki? Mówisz, że każdy element jest <space><odd-number><space>, ale przypadki testowe nie mają spacji po ostatniej nieparzystej liczbie. Czy to jest opcjonalne? Czy dane wyjściowe są dla n=0dwóch pustych wierszy?
xnor

Odpowiedzi:


12

05AB1E , 19 15 14 12 bajtów

05AB1E wykorzystuje kodowanie CP-1252 .
Zaoszczędzono 4 bajty dzięki Adnan .
Zaoszczędzono 2 bajty dzięki carusocomputing

ÅÉðìDg…/ \×»

Wypróbuj online!

Wyjaśnienie

ÅÉ               # list of uneven number up to input
  ðì             # prepend a space to each
    Dg           # get length of list
      …/ \       # push the string "/ \"
          ×      # repeat the string length-list times
           »     # join rows by spaces and columns by newlines

JAK DŁUGO ÏBYŁO ?! To wydaje się bardziej przydatne.
Magic Octopus Urn

2
@carusocomputing Długo: p
Adnan

2
LDÉÏjest taki sam jak ÅÉi „ ýðìmożna go zastąpić ðì)»:).
Adnan

2
Możesz usunąć ), prawda?
Magic Octopus Urn

3
ÅÉðìDg…/ \×»używa Dgzamiast ¹;îinnego bajtu zapisu.
Magic Octopus Urn

11

Pyke, 16 bajtów

S2%idm+dJil*"/ \

Wypróbuj tutaj!

17 bajtów i więcej

S2%i`~Bd.:il*"/ \

Wypróbuj tutaj!

Wykorzystuje IMHO algorytm NIESAMOWITY do upewnienia się, że pierwszy wiersz jest poprawnie wyrównany.

S                 - range(1, input+1)
 2%               -  ^[::2]
   i              -   i = ^
    `             -    str(^)
     ~Bd.:        -     ^.translate("><+-.,[]", " ") <-- awesome bit here
          il      -  len(i)
            *"/ \ - ^ * "/ \"

Zastępuje to wszystkie znaki na liście łańcuchowej spacjami. ~Bzawiera wszystkie znaki w języku Brain **** i po raz pierwszy użyłem tej zmiennej.

Program `~Bd.:robi to:

`~Bd.: - input = [1, 3, 5, 7]
`      - str(input)  # stack now ["[1, 3, 5, 7]"]
 ~B    - "><+-.,[]"  # stack now ["[1, 3, 5, 7]", "><+-.,[]"]
   d   - " "         # stack now ["[1, 3, 5, 7]", "><+-.,[]", " "]
    .: - translate() # stack now [" 1  3  5  7 "]

... to jest ... po prostu niesamowite? Wiesz, że właśnie pobiłeś 05AB1E i wszystkich, prawda?
Erik the Outgolfer

Próbowałem Galaretki; na pewno będzie znacznie dłużej.
Erik the Outgolfer

„Użyłem zestawu znaków BF, aby równomiernie
rozmieścić

To jest naprawdę sprytne :) Dobra robota
Sygmei

@ErikGolfer エ リ ッ ク ゴ ル フ ァ ー Nie bije 05AB1E.
Boboback

6

Python 2, 63 bajty

lambda n:' '.join(n%2*`n`for n in range(n+1))+'\n'+-~n/2*'/ \\'

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


6

Python 2 3, 67 65 63 60 bajtów

Nie 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/2będzie działać ceil.

lambda n:-~n//2*' %d '%(*range(1,n+1,2),)+'\n'+-~n//2*'/ \\'

Poniżej przedstawiono alternatywne rozwiązania 61 i 65 bajtowe w Pythonie 2:

lambda n:-~n/2*' %d '%tuple(range(1,n+1,2))+'\n'+-~n/2*'/ \\'
lambda n:' '+'  '.join(map(str,range(1,n+1,2)))+'\n'+-~n/2*'/ \\'

Dzięki Rod za zapisanie 2 bajtów i Artyer za zapisanie kolejnego bajtu przez zmianę wersji :)


Jeśli przeniesiesz do Python 3, można zastąpić %(tuple(...))z %[*...], ale trzeba by zrobić-~n//2
Artyer

@Artyer Próbowałem tego, ale generuje wiele błędów. Myślę , że musiałbym przerzucić rangena listę, ponieważ 3 rangejest jak Python 2 xrange.
Kade

możesz także upuścić nawiasy otaczającetuple()
Rod

Możesz zrobić (*<iterable>,)rzutowanie na krotkę w Pythonie 3. To oszczędza 1 bajt po przejściu n/2na n//2Python 3.
Artyer

@Rod i Artyer dziękują! :)
Kade

6

JavaScript (ES6), 55 bajtów

f=n=>n%2?f(n-1).replace(`
`,` ${n} 
/ \\`):n?f(n-1):`
`
<input type=number min=1 max=10 oninput=o.textContent=f(this.value)><pre id=o>

Zwróć uwagę na spację na końcu drugiej linii.


Cholera, myślałem, że .replacemoże być lepiej, ale nie zadałem sobie trudu, aby sprawdzić ...
ETHproductions

Pytanie mówi "ty może zakładać ..."
Solomon Ucko

1
@ SolomonUcko HTML nie jest częścią odpowiedzi, służy jedynie zademonstrowaniu jego działania. Jako taki może równie dobrze ograniczyć wartość do 1–10, ponieważ w przeciwnym razie wynik nie byłby prawidłowy.
Neil,

Widzę. W przeciwnym razie musisz określić prawidłowe odstępy
Solomon Ucko

5

Python 2, 53 bajty

lambda n:" 1  3  5  7  9"[:-~n/2*3]+'\n'+-~n/2*"/ \\"

Korzysta z ograniczenia, n <= 10aby wygenerować górną linię, odcinając kawałek z zakodowanego łańcucha.

Wyjścia od 1 do 10 to

 1 
/ \
 1 
/ \
 1  3 
/ \/ \
 1  3 
/ \/ \
 1  3  5 
/ \/ \/ \
 1  3  5 
/ \/ \/ \
 1  3  5  7 
/ \/ \/ \/ \
 1  3  5  7 
/ \/ \/ \/ \
 1  3  5  7  9
/ \/ \/ \/ \/ \
 1  3  5  7  9
/ \/ \/ \/ \/ \

Dane wyjściowe dla 0 to dwie puste linie.


5

Vim, 73 59 56 bajtów

Jest to naprawdę wysoki bajt IMO dla czegoś, co wydaje się prostym problemem. Czuję, że brakuje mi czegoś oczywistego.

caw="/2*2
caw1357911/"
DYp:s;.;/ \\;g
k:s// & /g

Wypróbuj online!

Materiały niedrukowalne:

^Acaw^R=^R"/2*2      # Transform a number into the next odd number (3->5,4>5)
^[^Acaw1357911^[/^R" # Insert 1357911, delete everything after the number above
DYp:s;.;/ \\;g       # Duplicate the line, replace numbers with / \
k:s// & /g           # On the line above, add spaces around numbers
<trailing newline>

Fajnie, zawsze głosuję vim! Jednak znaki niedrukowalne również liczą się jako bajty, więc to rozwiązanie naprawdę ma 73 bajty. Przepraszam za to!
DJMcMayhem

Mam jednak kilka wskazówek. 1) Jeśli użyjesz innego separatora do polecenia zastępczego, nie będziesz musiał uciekać przed ukośnikiem, więc możesz to zrobić :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 \0i jeden bajt krótszy. Więc dostajesz:s// & /g
DJMcMayhem

Dzięki! Miałem nadzieję, że zobaczę odpowiedź V, aby sprawdzić, czy zastosowałeś inne podejście do mniejszej liczby bajtów, ale to w porządku! Myślę, że pierwszy komentarz jest funkcją zapominania o aktualizacji linku Wypróbuj online. Drugi dostał 3 bajty, więc dziękuję!
nmjcman101

4

Mathematica, 65 bajtów

" "<>Range[1,#,2]~StringRiffle~"  "<>"
"<>"/ \\"~Table~⌈#/2⌉&

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].


4

WinDbg, 100 bajtów

.echo;.for(r$t1=1;@$t1<=2*@$t0+@$t0%2;r$t1=@$t1+2){j@$t1<=@$t0 .printf"\b %d \n",@$t1;.printf"/ \\"}

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:

.echo;                                            * Print a new line that'll be deleted
.for(r$t1=1; @$t1 <= 2*@$t0+@$t0%2; r$t1=@$t1+2)  * Enumerate 1 to 4*ceil($t0/2), count by 2
{
    j@$t1<=@$t0                                   * If $t1 <= $t0...
        .printf"\b %d \n",@$t1;                   * ...Print $t1 (and newline for last n)
        .printf"/ \\"                             * ...Else print the / \'s
}

Dane wyjściowe dla każdej wartości n:

0:000> .for(r$t0=0;b>@$t0;r$t0=@$t0+1){.printf"\n\nn=%d\n",@$t0; .echo;.for(r$t1=1;@$t1<=2*@$t0+@$t0%2;r$t1=@$t1+2){j@$t1<=@$t0 .printf"\b %d \n",@$t1;.printf"/ \\"}}


n=0



n=1
 1 
/ \

n=2
 1 
/ \

n=3
 1  3 
/ \/ \

n=4
 1  3 
/ \/ \

n=5
 1  3  5 
/ \/ \/ \

n=6
 1  3  5 
/ \/ \/ \

n=7
 1  3  5  7 
/ \/ \/ \/ \

n=8
 1  3  5  7 
/ \/ \/ \/ \

n=9
 1  3  5  7  9 
/ \/ \/ \/ \/ \

n=10
 1  3  5  7  9 
/ \/ \/ \/ \/ \

4

> <> (RYBY), 69 60 68 55 bajtów

5|v&+%1:,2
1->:?!v:
8~v!?l<on$o:*4
a&/o
1->:?!;"\ /"ooo

Wklej 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!


4

Java, 118 112 bajtów

Edycja: Zapisano 6 bajtów dzięki @peech

Gra w golfa:

String M(int n){String o=" ";int i=1;n+=1;for(;i<n;i+=2)o+=i+"  ";o+="\n";for(i=0;i<n/2;i++)o+="/ \\";return o;}

Nie golfowany:

public String M(int n)
{
    String o = " ";
    int i=1;
    n += 1;
    for (; i < n;i+=2)
        o += i + "  ";
    o += "\n";
    for (i = 0; i < n/2; i++)
        o += "/ \\";
    return o;  
}

Testowanie:

    OddMountains om = new OddMountains();
    System.out.println(om.M(1));
    System.out.println();
    System.out.println(om.M(3));
    System.out.println();
    System.out.println(om.M(5));
    System.out.println();
    System.out.println(om.M(7));
    System.out.println();
    System.out.println(om.M(10));

 1  
/ \

 1  3  
/ \/ \

 1  3  5  
/ \/ \/ \

 1  3  5  7  9  
/ \/ \/ \/ \/ \

Ahhhh, pobiłeś mnie do tego :) Chciałem również opublikować odpowiedź Java. tak czy inaczej, oto kilka sugestii, aby zagrać w golfa trochę więcej: nie musisz inicjować iw pierwszej pętli for, może to wyglądać tak for(; i < n; i++). Dzięki tej zmianie możesz pograć w golfa jeszcze bardziej: o += i + " ";zmiany o += 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 na i += 2 i usunąć całą instrukcję if, ale w takim przypadku moja druga propozycja nie ma zastosowania :) (ps:
nigdy

@peech Jeśli jest to jakaś pociecha, zwykle jest to wyścig dla mnie, aby uzyskać pierwszą odpowiedź w języku C #. Jeśli to zniknie, szukam odpowiedzi w Javie :) Dziękuję za wskazówki. Usunąłem iinicjalizację z forpętli, ale inne rzeczy utknęły w pętli. Być może będę musiał się z tym trochę pobawić :)
Pete Arden

Tak się cieszę, że w poprzednim komentarzu powiedziałem „nie testowałem tego” ... oczywiście to nie działa o += i++ + " ";:). Btw, masz mały błąd w kodzie :) od Java używa floor()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 o i += 2, nie potrzebujesz tego, jeśli instrukcja sprawdza parzystość. Oszczędza również kolejne 3 bajty :) spróbuj tutaj: ideone.com/ekaUUH
peech

@peech Jeśli ktoś jest na tyle pewny siebie, aby poprawić mój kod, zakładam, że musi być poprawny, więc kiedy to nie działa, próbuję raz za razem, myśląc „to musi być ja ...” :) Nie martw się! Dzięki za wskazówki - floorkilka dni temu odkryłem dziwactwo dywizji, grając z jakąś Javą :)
Pete Arden

3

C # 6, 95 bajtów

n=>{var o="";int i=1;for(;i<=n;i+=2)o+=$" {i} ";o+='\n';for(i=1;i<=n;i+=2)o+="/ \\";return o;};

Pełna lambda:

Func<int, string> a = n=>
{
    var o="";int i=1;
    for(;i<=n;i+=2)
        o+=$" {i} ";
    o+='\n';
    for(i=1;i<=n;i+=2)
        o+="/ \\";
    return o;
};

3

CJam, 26 23 bajtów

Sri,:)2%_S2**N@,"/ \\"*

Sprawdź to!

-3 dzięki 8478 (Martin Ender)


Możesz zaoszczędzić 3 bajty, unikając niektórych manipulacji na stosie:Sri,:)2%_S2**N@,"/ \\"*
Martin Ender,

@MartinEnder Och, dlatego nie mogłem tego usunąć +. I przysięgam, naprawdę wykorzystałem ed! ... krótszy niż Pyth.
Erik the Outgolfer

3

Game Maker Language (GM 8.0), 97 bajtów

m=ceil(argument0/2)e=""for(i=1;i<2*m;i+=2)e+=" "+string(i)+" "return e+"#"+string_repeat("/ \",m)

Biorąc pod uwagę, że dane wejściowe wynoszą co najwyżej 10, chr(48+i)będą działać zamiast string(i), chociaż liczba bajtów jest taka sama.

Czytelny:

m = ceil(argument0/2)
e = ""
for (i = 1; i < 2*m; i += 2 )
  e += " " + string(i) + " "
return e + "#" + string_repeat("/ \", m)


3

> <> (Ryby) 52 63 62 bajtów

<v!?:-1:!?-1%2:
 >~la}}" "72.
v!?-2lno<o"  "
o
>:?!;"\ /"ooo1-

Wypró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:

 1  3  5  7  9
/ \/ \/ \/ \/ \

Dzięki za wykrycie błędu w druku, edytuję teraz odpowiedź (dość trywialna dla mojej). Ciekawe jest, że odpowiedź podstawowa jest taka sama, ale zapisuje się wiele bajtów.
Teal pelikan

Nie ma problemu, z przyjemnością zobaczyłem zgłoszenie> <>! Ciekawie będzie zobaczyć, który z nich jest teraz mniejszy, ponieważ zmiany te bolą mnie bardzo źle haha.
redstarcoder

Wygląda na to, że jestem o 5 bajtów mniejszy: p.
redstarcoder

Jeszcze raz spojrzę na moje, aby zobaczyć, czy mogę wycisnąć kilka bajtów z aha.
Teal pelikan

1
Wróciłem do domu i wpadłem na pomysł, jak to zrobić. Moja nowa odpowiedź to 55 bajtów! : D - Dzięki, że kazałeś mi nad tym popracować, było fajnie.
Teal pelikan

2

C, 100 79 77 bajtów

#define P(s)for(i=0;i++<n;printf(s,i++));puts("");
i;f(n){P(" %d ")P("/ \\")}

2

R, 70 69 68 58 bajtów

cat(paste("",z<-seq(,scan(),2)),"\n");for(i in z)cat("/ \\")

3:
#>  1  3 
#> / \/ \

10:
#>  1  3  5  7  9 
#> / \/ \/ \/ \/ \

2

Grzmotnąć, 64, 59, 57, 51, 49, 48, 45 bajtów

EDYTOWAĆ:

  • minus 3 bajty (użyj 1 $ zamiast STDIN)
  • jeszcze jeden bajt, zastępując -s ""go-s\
  • minus 2 bajty zastępując printf z -f nast (dzięki!) @Adam
  • refaktoryzowane do skryptu zamiast funkcji (aby pokonać > <> )
  • usunięto zbędne przestrzenie
  • trochę zoptymalizowałem ekspres sed

Grał w golfa

Fragment (45 bajtów):

seq -f" %g " -s\  1 2 $1|sed 'p;s| . |/ \\|g'

Funkcja (wersja oryginalna) (57 bajtów):

M() { printf " %s %.0s" `seq 1 $1`|sed 'p;s| . |/ \\|g';}

Test

--- mountains.sh ----
#!/bin/bash
seq -f" %g " -s\  1 2 $1|sed 'p;s| . |/ \\|g'

>./mountains.sh 10
 1  3  5  7  9 
/ \/ \/ \/ \/ \

>M 10
 1  3  5  7  9 
/ \/ \/ \/ \/ \

2
To sedjest genialne. Nie używając funkcji ani printf, oszczędzasz 10 bajtów:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
Adam

To miła rada! Dziękuję Ci ! Nadal używam catdo odczytu danych wejściowych ze STDIN, ponieważ IMO nie jest uczciwe, aby używać wstępnie zdefiniowanej zmiennej do przekazywania danych.
zeppelin

1
$1to tylko pierwszy parametr przesłany do programu. Nie sądzę, że to oszustwo, zobacz meta.codegolf.stackexchange.com/questions/2447/…
Adam

Tak, masz rację. Dzięki jeszcze raz !
zeppelin


2

Rubinowy 82 60 bajtów

Szybkie i brudne rozwiązanie Ruby można zdecydowanie lepiej zoptymalizować, gdybym był lepszy z Ruby

puts "",1.step($*[0].to_i,2).map{|x|$><<" #{x} ";"/ \\"}*""

Zastosowanie: prog.rb 10
Wyjście:

 1  3  5  7  9
/ \/ \/ \/ \/ \

edycja: liczne zmiany i optymalizacje autorstwa @Manatwork!


print$><<i użyj interpolacji ciągów " #{x} ". Ale najlepiej byłoby, aby zmniejszyć liczbę .eachprzez 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 nawet puts"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*"".
manatwork

Numeric#stepakceptuje 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).
manatwork

@manatwork naprawdę dobre sugestie! Widzę, jak korzystam z wielu twoich rad w moich przyszłych postach z codegolf, więc bardzo doceniam wkład.
Ben Hili

1

JavaScript (ES6), 66 64 bajtów

n=>(f=n=>n?f(n-1)+(n%2?n+s:s):s=" ")(n)+`
`+"/ \\".repeat(++n/2)

Rekurencyjnie 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.


1

Python 2, 60 bajtów

Zaoszczędź 6 bajtów dzięki @Kade!

lambda s:" "+"  ".join(`range(s+1)`[4::6])+"\n"+-~s/2*"/ \\"

Nie musisz używać list()gipsu, usunięcie go spowoduje przejście do 60 :)
Kade

@Kade Backticks `` `sprawiają, że jest to ciąg znaków. Nie mogę tego zrobić, lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"ebo wtedy dałby listę ints i umiera
Oliver Ni


@Kade Huh. Nie działa online ... Nieważne, nie wiem, dlaczego myślałem, że to nie działa ...
Oliver Ni

1

Partia, 107 bajtów

@set s=
@set t=
@for /l %%i in (1,2,%1)do @call set s=%%s%%  %%i&call set t=%%t%%/ \
@echo%s%
@echo %t%

1

Scala, 99 95 bajtów

(? :Int)=>for(i<-0 to 1)println(1 to ?filter(c=>c%2>0)map(c=>if(i<1)s" $c "else"/ \\")mkString)

Nie golfił

(? :Int) => 
    for (i<-0 to 1)
        println(
            1 to ?filter(c=>c%2>0)
                  map(c=>if(i<1)s" $c "else"/ \\")
                  mkString
        )

1

Rubinowy, 48 bajtów

->x{" 1  3  5  7  9 "[0..3*x-=x/2]+?\n+"/ \\"*x}

1

Oktawa, 45 bajtów

f=@(n)reshape(sprintf(' /%d \',1:2:n),2,[]);

Test:
f (8)

 1  3  5  7
/ \/ \/ \/ \

Gdy input = 0, pozostaje a / left :)
Sygmei

Nie powiedziałem, że twoja odpowiedź jest nieprawidłowa! Właśnie zauważyłem tę małą zabawną usterkę :)
Sygmei

Nie mogę założyć n == 0 :(
rahnema1

1

QBIC , 35 bajtów

:[1,a,2|X=X+!b$+@ | Y=Y+@/ \|]?X ?Y

Wyjaśnienie:

:           gets a CMD line param as INT 'a'
[1,a,2|     FOR b = 1 to a STEP 2
X=X+!b$+@ | Add to X$ the counter of our FOR loop and a trailing space
            Leading space is provided by the cast-to-string function.
Y=Y+@/ \|   Add to Y$ the mountain.
]           Close the first possible language construct (IF, DO or FOR). In this case: NEXT
?X ?Y       Print X$, Print Y$. The space adds a newline in the resulting QBASIC.

0

Kitanai , 140 bajtów

$0[0]$1[int(input":")]$2[""]$3[""]$0#?(mod@2)($2[add(add(@" ")(string($0@)))"  "]
$3[add@"/ \"])?(neq@($1@))([add@1]&1)print($2@)print($3@)%

0

Perl, 46 + 2 ( -plflaga) = 48 bajtów

@_=map$_%2?$_:"",0..$_;$_="@_$/"."/ \\"x(@_/2)

Za pomocą:

perl -ple '@_=map$_%2?$_:"",0..$_;$_="@_$/"."/ \\"x(@_/2)' <<< 7    

Lub 52 bajty:

@_=map$_%2?$_:"",0..pop;print"@_$/","/ \\"x(@_/2),$/

Za pomocą:

perl -e '@_=map$_%2?$_:"",0..pop;print"@_$/","/ \\"x(@_/2),$/' 7
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.