Peragakan rantai pegunungan kecil dengan angka ganjil di atasnya!

19

Baris pertama dibuat dengan ceil(n/2)elemen di mana masing-masing elemen adalah:<space><odd-number><space>

Baris kedua dibuat dengan ceil(n/2)elemen, tetapi masing-masing elemen / \hanya.

Anda dapat berasumsi n >= 0dan n <= 10.

Contohnya

Input: 3

 1  3
/ \/ \

Input: 10

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

Contoh dalam Python 3, 103 byte:

lambda a:print("".join([" "+str(i)+" "for i in range(1,a+1,2)]+["\n"]+["/ \\"for i in range(1,a+1,2)]))

Kode terpendek dalam byte menang :)

Sygmei
sumber
3
Bisakah Anda menganggap semua input kurang dari 11?
Biru
Yup, semua input akan kurang dari 11!
Sygmei
8
Selamat datang di situs ini! Default kami untuk kode-golf adalah menghitung dalam byte, bukan karakter. Jika Anda ingin menimpanya, itu adalah pilihan Anda. Juga, saya akan merekomendasikan Sandbox waktu berikutnya :)
Erik the Outgolfer
Maksudku byte kamu benar! Apakah ada byte byte yang bagus?
Sygmei
1
Seberapa spesifik kita harus menangani spasi putih? Anda mengatakan setiap elemen adalah <space><odd-number><space>, tetapi kotak uji tidak memiliki spasi setelah angka ganjil terakhir. Apakah itu opsional? Juga, apakah output untuk n=0dua baris kosong?
xnor

Jawaban:

12

05AB1E , 19 15 14 12 byte

05AB1E menggunakan pengkodean CP-1252 .
Disimpan 4 byte berkat Adnan .
Disimpan 2 byte berkat carusocomputing

ÅÉðìDg…/ \×»

Cobalah online!

Penjelasan

ÅÉ               # 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
Emigna
sumber
BAGAIMANA PANJANG TELAH ÏADA ?! Tampaknya suuuper bermanfaat.
Magic Octopus Urn
2
@carusocomputing Waktu yang lama: p
Adnan
2
LDÉÏsama dengan ÅÉdan „ ýðìbisa digantikan oleh ðì)»:).
Adnan
2
Anda dapat menghapus ), bukan?
Magic Gurita Guci
3
ÅÉðìDg…/ \×»menggunakan Dgbukan ¹;îuntuk menyimpan byte lain juga.
Magic Gurita Guci
11

Pyke, 16 byte

S2%idm+dJil*"/ \

Coba di sini!

17 byte dan lebih dahsyat

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

Coba di sini!

Ini menggunakan IMHO suatu algoritma yang MENGAGUMKAN untuk memastikan baris pertama benar.

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

Ini menggantikan semua karakter dalam daftar yang diikat dengan spasi. ~Bberisi semua karakter dalam bahasa Brain **** dan ini adalah pertama kalinya saya menggunakan variabel ini.

Program `~Bd.:melakukan ini:

`~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 "]
Biru
sumber
... ini ... luar biasa? Anda tahu Anda baru saja mengalahkan 05AB1E dan semua orang, bukan?
Erik the Outgolfer
Saya sudah mencoba Jelly; itu pasti akan jauh lebih lama.
Erik the Outgolfer
"Saya menggunakan charset BF untuk meratakan deretan angka secara merata" Hal-hal yang Anda tidak pernah mengira Anda akan mengatakan ...
ETHproductions
Ini benar-benar pintar :) Bagus sekali
Sygmei
@ErikGolfer エ リ ッ ク ゴ ル フ ァ ー Not Tidak dapat mengalahkan 05AB1E lagi.
boboquack
6

Python 2, 63 byte

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

Trik kecil untuk baris pertama: tidak mencetak angka genap, tetapi menganggapnya sebagai string kosong, yang mengarah ke memulai ruang kosong (0 akan ada di sana), dan menggandakan ruang di antara angka-angka tanpa modifikasi pada kisaran, sisi negatifnya adalah ruang terdepan di nomor genap n

tongkat
sumber
6

Python 2 3, 67 65 63 60 Bytes

Tidak ada yang terlalu gila di sini, saya pikir bagian pertama mungkin bisa dilakukan lebih pendek tapi saya tidak yakin bagaimana caranya . Saya menggunakan fakta bahwa dalam hal ini -~n/2akan berhasil ceil.

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

Berikut adalah alternatif solusi 61 dan 65 byte dalam Python 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*'/ \\'

Terima kasih kepada Rod untuk menyimpan 2 byte dan Artyer karena telah menyimpan byte lain dengan beralih versi :)

Kade
sumber
Jika Anda pindah ke Python 3, Anda dapat menggantinya %(tuple(...))dengan %[*...], tetapi Anda harus melakukannya-~n//2
Artyer
@Artyer Mencoba ini, tetapi melempar banyak kesalahan. Saya pikir saya perlu rangememasukkan ke daftar karena 3 rangeadalah seperti Python 2 xrange.
Kade
Anda juga dapat menjatuhkan tanda kurung yang mengelilingituple()
Rod
Anda dapat melakukannya (*<iterable>,)untuk melakukan tuple di Python 3. Ini menghemat 1 byte meskipun setelah Anda beralih n/2ke n//2Python 3.
Artyer
@Rod dan Artyer terima kasih banyak! :)
Kade
6

JavaScript (ES6), 55 byte

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>

Perhatikan spasi di akhir baris kedua.

Neil
sumber
Dangit, saya pikir .replacemungkin lebih baik tetapi saya tidak repot-repot memeriksa ...
ETHproduksi
Pertanyaannya mengatakan "Anda boleh berasumsi ..."
Solomon Ucko
1
@SolomonUcko HTML bukan bagian dari jawabannya, ia hanya berfungsi untuk menunjukkan operasinya. Dengan demikian, mungkin juga membatasi nilainya antara 1 dan 10, karena hasilnya tidak akan valid jika tidak.
Neil
Saya melihat. Anda harus menentukan jarak yang benar jika tidak
Solomon Ucko
5

Python 2, 53 byte

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

Mengambil keuntungan dari pembatasan n <= 10untuk menghasilkan baris teratas dengan memotong sepotong dari string hardcoded.

Output untuk 1 hingga 10 adalah

 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
/ \/ \/ \/ \/ \

Output untuk 0 adalah dua baris kosong.

Tidak
sumber
5

Vim, 73 59 56 byte

Ini adalah IMO jumlah byte sangat tinggi untuk apa yang tampaknya seperti masalah sederhana. Saya merasa seperti kehilangan sesuatu yang jelas.

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

Cobalah online!

Tidak dapat dicetak:

^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>
nmjcman101
sumber
Bagus, saya selalu mendukung vim! Namun, karakter yang tidak patut juga dihitung sebagai byte, jadi solusi ini sebenarnya adalah 73 byte. Maaf soal itu!
DJMcMayhem
Saya punya beberapa tips. 1) Jika Anda menggunakan pemisah yang berbeda pada perintah pengganti Anda, Anda tidak perlu keluar dari garis miring, sehingga Anda bisa melakukannya :s;.;/ \\;g. 2) pada perintah pengganti kedua Anda, Anda dapat membiarkan pencarian kosong dan akan menggunakan pencarian terakhir Anda (yang kebetulan sama). Juga, &setara dengan \0dan satu byte lebih pendek. Jadi, Anda dapat:s// & /g
DJMcMayhem
Terima kasih! Saya berharap untuk melihat jawaban V dari Anda untuk melihat apakah Anda menggunakan pendekatan yang berbeda untuk byte lebih sedikit, tapi tidak apa-apa! Komentar pertama, saya pikir, adalah fungsi saya lupa memperbarui tautan Try it Online. Yang kedua membuat saya 3 byte, jadi terima kasih!
nmjcman101
4

Mathematica, 65 byte

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

Fungsi anonim. Mengambil angka sebagai input dan mengembalikan string sebagai output. Karakter Unicode, masing-masing, adalah U + 2308 LEFT CEILING untuk \[LeftCeiling]dan U + 2309 RIGHT CEILING untuk \[RightCeiling].

LegionMammal978
sumber
4

WinDbg, 100 byte

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

Input dilakukan dengan menetapkan nilai dalam register semu $t0.

Sepertinya ini terpendek di sini hanya untuk mencetak string karena sedang dibangun daripada mencoba membangunnya terlebih dahulu dan menampilkan semuanya. Saya akan memiliki solusi yang lebih pendek jika WinDbg akan membiarkan saya menulis ke alamat 0.

Bagaimana itu bekerja:

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

Output untuk setiap nilai 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 
/ \/ \/ \/ \/ \
susu
sumber
4

> <> (IKAN), 69 60 68 55 byte

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

Rekatkan ke penerjemah online ini!

Angka 5 pada baris pertama adalah nilai input Anda (dikodekan sebagai 5, diganti dengan 0-a atau i untuk input pengguna).

Sunting 1: Memindahkan penempatan baris baru ke dalam ruang baris pertama (kosong) untuk menghemat 9 byte secara keseluruhan pada ruang dari baris baru.

Sunting 2: Sebagaimana dicatat oleh user7150406 hasilnya salah (tidak ada spasi pencetakan) ini telah diperbaiki dengan kehilangan 8 byte.

Sunting 3: benar-benar mengubah logikanya, tidak ada gunanya memeriksa apakah nomornya ganjil - alih-alih letakkan semua angka di tumpukan dan hapus setiap detik. Byte disimpan 13!

Pelican teal
sumber
4

Java, 118 112 Bytes

Sunting: Disimpan 6 Bytes berkat @peech

Golf:

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;}

Tidak Disatukan:

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;  
}

Pengujian:

    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  
/ \/ \/ \/ \/ \
Pete Arden
sumber
Ahhhh, Anda telah mengalahkan saya untuk itu :) saya juga ingin memposting jawaban Java. Bagaimanapun, berikut adalah beberapa saran untuk membuatnya sedikit lebih baik: Anda tidak perlu menginisialisasi ipertama Anda untuk loop, ini bisa terlihat seperti ini for(; i < n; i++). Anda dapat bermain golf lebih jauh dengan perubahan ini: o += i + " ";perubahan menjadi o += i++ + " ";dan untuk loop menjadi for(; i < n; ). Itu jika Anda ingin menyimpan pernyataan if. Anda dapat mengubah kenaikan i menjadi i += 2 dan menghapus seluruh pernyataan if, tetapi dalam kasus itu proposisi kedua saya tidak berlaku :) (ps: i havent menguji ini :))
peech
@ teknis Jika ini adalah penghiburan, biasanya perlombaan bagi saya untuk mendapatkan jawaban C # pertama. Jika itu hilang, saya mencari jalan keluar melalui jawaban Java :) Terima kasih atas tipsnya. Saya telah menghapus iinisialisasi dari forloop, tetapi hal-hal lain terjebak dalam satu loop. Saya mungkin perlu bermain-main dengannya sedikit lebih banyak :)
Pete Arden
Huh, saya sangat senang bahwa dalam komentar saya sebelumnya saya berkata "Saya belum menguji ini" ... tentu saja tidak bekerja dengan o += i++ + " ";:). Btw, Anda memiliki bug kecil dalam kode Anda :) karena Jawa menggunakan floor()pada pembagian integer (4/3 = 1), Anda harus melakukannya seperti ini: int i = 1; n += 1; for (; i < n; i += 2) { ... jada jada ... }. jika Anda menambah i oleh i += 2, Anda tidak perlu itu jika pernyataan memeriksa paritas. Hal ini juga menghemat lain 3 byte :) mencobanya di sini: ideone.com/ekaUUH
Peech
@ teknis Jika seseorang cukup percaya diri untuk memperbaiki kode saya, saya menganggap itu pasti benar, jadi ketika itu tidak berhasil, saya coba lagi dan lagi, berpikir "itu pasti aku ..." :) Jangan khawatir! Terima kasih atas tipsnya - Saya menemukan floordivisi itu membuat diri saya aneh ketika bermain dengan beberapa Java beberapa hari yang lalu :)
Pete Arden
3

C # 6, 95 byte

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;};

Lambda penuh:

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;
};
Yodle
sumber
3

CJam, 26 23 byte

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

Menguji!

-3 Terima kasih kepada 8478 (Martin Ender)

Erik the Outgolfer
sumber
Anda dapat menyimpan 3 byte dengan menghindari beberapa manipulasi stack:Sri,:)2%_S2**N@,"/ \\"*
Martin Ender
@ MartinEnder Oh, jadi itu sebabnya saya tidak bisa menghapusnya +. Dan aku bersumpah, aku benar-benar menggunakan ed! ... lebih pendek dari Pyth.
Erik the Outgolfer
3

Bahasa Game Maker (GM 8.0), 97 byte

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

Mengingat bahwa input paling banyak 10, chr(48+i)akan bekerja di tempatstring(i) , meskipun jumlah byte sama.

Dapat dibaca:

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

Pyth, 24 22 byte

K-SQyMS5+dj*2dK*lK"/ \

Berkat 42545 (ETHproductions) untuk -1 byte

Penerjemah online

11 kasus uji

Erik the Outgolfer
sumber
Simpan penawaran dengan*lK"/ \\
ETHproduk
@ ETHproductions Anda kemudian dapat menggunakan \sebagai gantinya \\:)
Erik the Outgolfer
3

> <> (Ikan) 52 63 62 byte

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

Cobalah online!

Untuk menggunakan tempat sederhana n di tumpukan dan pergi Anda pergi!

Banyak dari ini diambil dari jawaban @ Teal-Pelican :).

Sunting: Output sebenarnya tidak disejajarkan dengan benar di salah satu>> <> pengiriman! Pemasangan...

Sunting2: Saya harus mengorbankan beberapa byte, tetapi hasilnya sebenarnya benar sekarang.

Sunting3: Tidak ada lagi kesenangan dengan \ /mirror dan saya menghemat 1 byte.

Keluaran:

 1  3  5  7  9
/ \/ \/ \/ \/ \
redstarcoder
sumber
Terima kasih telah menemukan kesalahan dalam pencetakan, saya mengedit jawaban saya sekarang (cukup sepele untuk saya) sangat menarik melihat jawaban dasar yang sama tetapi menghemat banyak byte.
Teal pelican
Tidak masalah, saya senang melihat kiriman> <>! Ini akan menarik untuk melihat mana yang akhirnya menjadi lebih kecil sekarang karena perubahan ini menyakiti haha ​​saya yang sangat buruk.
redstarcoder
Sepertinya saya juuuust 5 byte lebih kecil: p.
redstarcoder
Saya akan melihat saya lagi sekarang untuk melihat apakah saya dapat memeras lebih banyak byte keluar aha.
Teal pelican
1
Saya sampai di rumah dan punya ide untuk mencari cara baru. Jawaban baru saya adalah 55 byte! : D - Terima kasih telah membuat saya mengerjakan ini, sudah menyenangkan.
Teal pelican
2

C, 100 79 77 byte

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

R, 70 69 68 58 byte

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

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

10:
#>  1  3  5  7  9 
#> / \/ \/ \/ \/ \
Jonathan Carroll
sumber
2

Pesta, 64, 59, 57, 51, 49, 48, 45 byte

EDIT:

  • minus 3 byte (gunakan $ 1 sebagai ganti STDIN)
  • satu byte lagi dengan mengganti -s ""dengan-s\
  • minus 2 byte dengan mengganti printf dengan seq -f (Terima kasih @Adam!)
  • refactored ke skrip alih-alih fungsi (untuk mengalahkan > <> )
  • menghapus ruang berlebihan
  • dioptimalkan ekspresi sed sedikit

Golf

Potongan (45 byte):

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

Fungsi (versi asli) (57 byte):

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

Uji

--- 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 
/ \/ \/ \/ \/ \
zeppelin
sumber
2
Ini sedbrilian. Dengan tidak menggunakan fungsi atau printf, Anda menghemat 10 byte:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
Adam
Itu saran yang bagus! Terima kasih ! Saya masih menggunakan catuntuk membaca input dari STDIN, karena IMO tidak benar-benar adil untuk menggunakan variabel yang sudah ditentukan sebelumnya untuk meneruskan data.
zeppelin
1
$1hanya parameter pertama yang dikirimkan ke program. Saya tidak berpikir itu curang, lihat meta.codegolf.stackexchange.com/questions/2447/…
Adam
Ya, Anda benar. Terima kasih lagi !
zeppelin
2

Ruby 82 60 Bytes

Solusi Ruby cepat dan kotor pasti bisa lebih baik dioptimalkan jika saya lebih baik dengan Ruby

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

Penggunaan: prog.rb 10
Output:

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

edit: banyak suntingan dan optimisasi oleh @Manatwork!

Ben Hili
sumber
print$><<dan gunakan interpolasi string " #{x} ". Tapi yang terbaik akan mengurangi jumlah .eacholeh keluaran baris 1 langsung dari callback dan membangun 2 baris dalam variabel: s="";(1..$*[0].to_i).step(2){|x|$><<" #{x} ";s+="/ \\"};puts"",s. Atau bahkan puts"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*"".
manatwork
Numeric#stepmenerima 2 parameter, sehingga dapat menghindari sintaks rentang panjang yang membutuhkan tanda kurung sekitar: (1..$*[0].to_i).step(2)1.step($*[0].to_i,2).
manatwork
@manatwork saran yang sangat bagus! Saya bisa melihat diri saya menggunakan banyak saran Anda di posting codegolf masa depan saya jadi saya sangat menghargai masukannya.
Ben Hili
1

JavaScript (ES6), 66 64 byte

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

Secara rekursif membangun baris pertama, lalu menambahkan baris kedua. Baris pertama dibangun dengan pengamatan bahwa itu hanya kisaran [0 ... n] dengan setiap item n ditransformasikan menjadi spasi jika genap, atau n digabungkan dengan spasi jika ganjil.

Produksi ETH
sumber
1

Python 2, 60 byte

Disimpan 6 byte berkat @Kade!

lambda s:" "+"  ".join(`range(s+1)`[4::6])+"\n"+-~s/2*"/ \\"
Oliver Ni
sumber
Anda tidak perlu menggunakan list()gips, menghapusnya membuat Anda menjadi 60 :)
Kade
@Kade The backticks `` `` membuatnya menjadi string. Saya tidak bisa melakukannya lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"ekarena karena itu akan memberikan daftar int dan mati
Oliver Ni
@Kade Huh. Ini tidak berfungsi secara online ... Sudahlah, saya tidak tahu mengapa saya pikir itu tidak berhasil ...
Oliver Ni
1

Batch, 107 byte

@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%
Neil
sumber
1

Scala, 99 95 Bytes

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

Tidak disatukan

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

Ruby, 48 byte

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

Oktaf, 45 byte

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

Uji:
f (8)

 1  3  5  7
/ \/ \/ \/ \
rahnema1
sumber
Ketika input = 0, ada a / kiri :)
Sygmei
Tidak mengatakan jawaban Anda tidak benar! Hanya memperhatikan kesalahan kecil yang lucu :)
Sygmei
Saya tidak dapat mengasumsikan n == 0 :(
rahnema1
1

QBIC , 35 byte

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

Penjelasan:

:           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.
steenbergh
sumber
0

Kitanai , 140 byte

$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@)%
Sygmei
sumber
0

Perl, 46 + 2 ( -plbendera) = 48 byte

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

Menggunakan:

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

Atau 52 byte:

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

Menggunakan:

perl -e '@_=map$_%2?$_:"",0..pop;print"@_$/","/ \\"x(@_/2),$/' 7
Denis Ibaev
sumber