Buat array dengan angka berulang


19

Tantangan

Tugas Anda dalam pertanyaan ini adalah menulis program atau fungsi bernama yang mengambil bilangan bulat positif n(lebih besar dari 0) sebagai input melalui STDIN, ARGV atau argumen fungsi dan menghasilkan array melalui STDOUT atau nilai fungsi yang dikembalikan.

Kedengarannya cukup sederhana? Sekarang inilah aturannya

  • Array hanya akan berisi bilangan bulat dari 1hinggan
  • Setiap bilangan bulat dari 1ke nharus diulang xkali di mana xnilai dari setiap bilangan bulat.

Sebagai contoh:

Memasukkan:

5

Keluaran:

[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

Array mungkin atau mungkin tidak diurutkan.

Ini adalah sehingga pemenang adalah kode terpendek dalam byte.

Bonus

Lipat gandakan skor Anda dengan 0.5jika tidak ada dua bilangan bulat yang berdekatan di array output Anda sama.

Misalnya untuk n = 5, satu konfigurasi seperti itu

[5, 4, 5, 4, 3, 4, 5, 2, 5, 3, 1, 2, 3, 4, 5]

Jawaban:


6

APL, 4 karakter

/⍨⍳⎕

Bagaimana itu bekerja:

membaca input pengguna. Sedangkan untuk output, APL secara default mencetak hasil dari setiap baris.

⍳nadalah bilangan bulat dari 1 hingga n. Contoh:⍳3←→ 1 2 3

/berarti mereplikasi . Setiap elemen dari argumen kanan diulang sebanyak yang ditentukan oleh elemen yang sesuai dari argumen kiri. Contoh:2 0 3/'ABC'←→ 'AACCC'

adalah operator perjalanan . Ketika itu terjadi di sebelah kanan fungsi, ia memodifikasi perilakunya, sehingga ia bertukar argumen ( A f⍨ B ←→ B f A, karenanya "bepergian") atau memberikan argumen yang sama di kedua sisi ( f⍨ A ←→ A f A, "selfie"). Bentuk terakhir digunakan dalam solusi ini.


Bonus:

6-∊⌽⍳¨⍳⎕(8 karakter, terima kasih @ phil-h )

⍳5(iota lima) adalah 1 2 3 4 5.

⍳¨ ⍳5(Iota setiap iota lima) adalah (,1)(1 2)(1 2 3)(1 2 3 4)(1 2 3 4 5), vektor vektor. Setiap ( ¨) adalah operator, dibutuhkan fungsi di sebelah kiri dan menerapkannya ke setiap item dari array di sebelah kanan.

membalikkan array, jadi kita dapatkan (1 2 3 4 5)(1 2 3 4)(1 2 3)(1 2)(,1).

adalah Terdaftar (alias meratakan ). Secara rekursif melintasi argumen dan mengembalikan skalar sederhana dari itu sebagai vektor.


Bagaimana dengan ekspresi 4 karakter ? /⍨⍳n
ngn

Terserah Anda, tuan, saya sudah memperbarui teksnya. Tapi tentu saja keberatan Anda harus berlaku untuk solusi lain yang tidak dibungkus fungsi?
ngn

3
Dyalog APL hadir dalam dua rasa: "Klasik" dan "Unicode". Versi Classic telah ada selama beberapa dekade, sejak sebelum standar Unicode muncul, dan menggunakan pengkodean byte-per-karakter khusus untuk set karakter APL. Itu masih didukung, meskipun penggunaannya tidak disarankan. Jadi, saya ingin menggunakan ini sebagai alasan. Secara lebih luas, saya pikir dalam bermain golf kita harus menghitung karakter, bukan byte. Fakta bahwa titik kode terendah di Unicode ditempati oleh ASCII yang berpusat pada bahasa Inggris adalah kecelakaan historis yang seharusnya tidak menjadi masalah saat ini. Menariknya, APL dikandung sebelum ASCII keluar.
ngn

3
@ngn menghitung karakter bukan ide yang baik , karena jawaban umumnya akan menjadi decode alfabet sup Karakter APL dihitung sebagai byte karena penyandian itu ada; ini sudah mapan di situs ini. Ini berfungsi dengan pengodean byte apa pun yang ada sebelum pertanyaan diajukan.
FryAmTheEggman

1
@ ngn: Bisakah Anda menjelaskan jawaban bonus Anda? Karena dapat dilakukan melalui: 5 4 3 2 1 5 4 3 2 5 4 3 5 4 5 atau 6 masing-masing minus 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1, yang rasanya seperti tidak jauh dari jawaban awal Anda.
Phil H

11

Ruby (rekursif), 41 byte * 0,5 = 20,5

def n(n,i=1);i>n ?[]:n(n,i+1)+[*i..n];end

Atau menggunakan lambda (seperti yang direkomendasikan oleh histokrat dan Ventero): 34 byte * 0,5 = 17

r=->n,i=n{i>0?[*i..n]+r[n,i-1]:[]}

(panggil menggunakan r[argument])


2
Itu solusi yang sangat keren. Anda dapat menyimpan beberapa byte dengan menjadikannya lambda alih-alih metode ( n=->x,i=1{...n[x,i+1]...) dan beberapa lagi dengan [*i..n].
histokrat

1
Dengan membalik logika, Anda dapat menjatuhkan spasi putih di ternary:r=->n,i=n{i>0?[*i..n]+r[n,i-1]:[]}
Ventero

11

Pyth , 9 byte * 0,5 = 4,5

smrhQhdUQ

Dengan bantuan dari @FryAmTheEggman

Cobalah online.


Penjelasan

s             reduce + on list
 m            map
  rhQhd       lambda d: reversed(range(d+1, Q+1)), over
       UQ     range(Q)

dimana Qinputnya


5
Seharusnya tidak membantu Anda: D
FryAmTheEggman

8

Haskell, 31 karakter = skor 15,5

f n=[y|x<-[n,n-1..1],y<-[x..n]]

27 karakter tanpa bonus

f n=[x|x<-[1..n],_<-[1..x]]

Dipukuli oleh Proud Haskeller


solusi pertama Anda tidak benar. Perbaikan yang mungkin adalahg n = [y|x<-[n,n-1..1],y<-[x..n]]
karakfa

@karakfa oops: - / dan terima kasih atas perbaikannya
John Dvorak

Jawaban Haskell saya sedikit lebih rendah dari jawaban Anda
haskeller bangga

Haruskah saya menautkannya dari solusi saya, untuk mempromosikannya?
John Dvorak

@ JanDvorak Saya ingin, sebenarnya ...
haskeller bangga

7

C, 22 = 44 byte * 0,5

Fungsi ini hmengambil dua parameter. Yang pertama adalah intmenentukan n . Yang kedua adalah int*yang merupakan buffer output.

h(n,o)int*o;{for(n&&h(~-n,o+=n);*--o=n--;);}

Program uji

main(){
int wow[999],*i;
memset(wow,0,sizeof(wow));
h(6, wow);
for(i=wow;*i;i++)printf("%d ", *i);
}

Aku tidak mendapatkannya. Tolong jelaskan?
bacchusbeale

@ bacchusbeale Oke .. Secara rekursif menulis urutan menurun dari n ke 0. Urutan yang lebih pendek ditulis lebih cepat, pada tingkat rekursi yang lebih dalam. Jika argumen n adalah 0, maka n adalah falsey sehingga tidak ada rekursi, dan hanya 0 yang ditulis, yang berfungsi untuk menandai akhir array.
feersum

7

Pyth - 15 10 * .5 = 5

smr-QdhQUQ

Cobalah online.

Diharapkan input pada stdin. Algoritma yang ditemukan secara independen. Terima kasih @ Sp3000 untuk membantu saya menempel Q terakhir di sana: P Juga, ironi? XD

Penjelasan:

Q=eval(input())       : implicit
s                     : The sum of...
 m      UQ            : map(...,range(Q))
  r-QdhQ              : range(Q-d,Q+1)

2
Solusi yang bagus. Apakah pernah ada situasi di mana Pyth tidak akan memenangkan golf kode? :)
Alex A.

2
@Alex Tergantung pada sifat masalahnya, bahasa golf berbasis stack (Golfscript, CJam) dapat mengatasinya, juga dapat kalah dengan item perpustakaan ( cough bash cough );)
FryAmTheEggman

6

CJam, 12 15 byte * 0,5 = 7,5

li_,f{),f-W%~}`

Ini adalah program STDIN-ke-STDOUT lengkap. Ini menggabungkan akhiran peningkatan 1 ... njangkauan, yang memastikan bahwa tidak ada dua angka yang berdekatan yang identik.

Uji di sini.


6

Python 2, 53 byte * 0,5 = 26,5

i=n=input()
x=[]
while i:x+=range(i,n+1);i-=1
print x

Tanpa malu-malu meminjam ide @ VisualMelon


6

Haskell, 34 byte * 0,5 = 17

0%n=[]
i%n=[i..n]++(i-1)%n
g n=n%n

Itulah pertama kalinya saya menggunakan Haskell untuk bermain golf. Panggil dengan g <number>.



5

GolfScript (14 byte * 0,5 = skor 7)

 ~:x,{~x),>~}%`

Demo online

Saya pikir ini mungkin mirip dengan beberapa jawaban yang ada dalam membangun array concat( [n], [n-1, n], [n-2, n-1, n], ..., [1, 2, ..., n] )

Sedihnya saya tidak bisa bermain golf lebih jauh yang bisa dibilang lebih elegan:

~:x]{{,{x\-}/}%}2*`

yang menempatkan input xke dalam array dan kemudian berlaku dua kali {,{x\-}/}%, yang memetakan setiap elemen dalam array untuk menghitung mundur dari banyak elemen dari x.


5

C # - 81 (161bytes * 0,5)

Pekerjaan sederhana di C #, semoga mendapat bonus no-neibouring-number. Membaca int dari stdin, menulis array seperti contoh ke stdout.

class P{static void Main(){int n=int.Parse(System.Console.ReadLine()),m=n-1,i;var R="["+n;for(;m-->0;)for(i=m;i++<n;)R+=", "+i;System.Console.WriteLine(R+"]");}}

Lebih mudah dibaca:

class P
{
    static void Main()
    {
        int n=int.Parse(System.Console.ReadLine()),m=n-1,i;
        var R="["+n;
        for(;m-->0;)
            for(i=m;i++<n;)
                R+=", "+i;
        System.Console.WriteLine(R+"]");
    }
}

Contoh output:

n = 5
[5, 4, 5, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5]

Saya benar-benar mencoba mencari solusi C # yang lebih pendek tapi saya sepertinya tidak bisa mendapatkannya ... bagus sekali
Brandon

1
@ MarkKnol System.Consoleadalah statis, Anda tidak dapat menetapkannya ke variabel, tetapi dalam C # 6 atau apa pun yang berikutnya, Anda akan dapat melakukan using System.Console;( using System;tidak membayar dalam hal ini), tidak yakin bagaimana perasaan saya tentang fitur ini, apakah memengaruhi banyak pertanyaan golf lama karena alasan ini tepatnya;)
VisualMelon

1
@IchabodClay semakin buruk, using C=System.Consolemenghemat 3 byte, dan mungkin itulah yang dimaksud @MarkKnol (maaf!), Kelalaian memalukan di pihak saya.
VisualMelon

1
Juga, sesuai aturan, Anda bisa saja memiliki metode itu sendiri alih-alih membuat program yang lengkap. Sesuatu seperti ... ini . (114 byte dengan spasi putih dan semacamnya dihapus. 57 byte dengan bonus.)
Ichabod Clay

1
@IchabodClay memang; Saya lebih suka mengirimkan program lengkap ke fungsi, tidak ada alasan bagus, IO sepertinya merupakan bagian dari kesenangan (saya juga tidak cenderung menggunakan argv). Jangan ragu untuk mengirim jawaban skor yang lebih baik tanpa kendala gila ini!
VisualMelon

4

JavaScript, ES6, 41 byte

f=i=>[...Array(i).fill(i),...i?f(--i):[]]

Ini menciptakan fungsi fyang bisa disebut seperti f(6)dan mengembalikan array yang diperlukan.

Ini menggunakan pendekatan rekursif, di mana setiap iterasi menciptakan array ielemen yang semuanya dihargai idan menggabungkan array yang dikembalikan oleh f(i-1)dengan kondisi berhentii==0 .

Bekerja pada Firefox terbaru.


4

Haskell, 14 = 28 byte / 2

f n=n:[1..n-1]>>= \r->[r..n]

contoh output:

>f 5
[5,1,2,3,4,5,2,3,4,5,3,4,5,4,5]

24 byte tanpa bonus:

f n=[1..n]>>= \r->[r..n]

dapat =<<membantu menghindari spasi? Saya merasa seperti itu bisa, tetapi saya akan terkejut jika Anda belum mempertimbangkan itu.
John Dvorak

@ JanDvorak Jika saya akan menggunakan =<<saya akan membutuhkan tanda kurung untuk lambda
bangga haskeller

Saya bingung kapan tepatnya lambdas membutuhkan tanda kurung. Apakah header lambda memiliki fixity yang sama >>=?
John Dvorak

@ JanDvorak Mereka tidak memiliki fixity; Saya tidak yakin seberapa akurat aturan ini, tapi lambdas hanya dapat muncul di mana operator tidak dapat (mengabaikan bagian): setelah (, [, =, ,, setelah setiap operator, dan sejenisnya
bangga haskeller

Saya kira lambda atau operator tidak dapat muncul sebagai pola? let \x->y = (2+) in (x,y)sepertinya agak mustahil.
John Dvorak


3

vba, 76 * 0,5 = 38

Sub i(q)
For Z=1 To q:For x=q To Z Step -1:Debug.?x;",";:Next:Next
End Sub

Anda bisa kehilangan 1 (0,5, secara teknis) byte dengan mengkondensasi For Z=1 TokeFor Z=1To
Taylor Scott

Anda juga dapat mengembun Next:NextkeNext x,Z
Taylor Scott

2

R, 44 * .5 = 22

f=function(n){r=0;for(i in 1:n)r=c(r,n:i);r}

Tes cepat

> f(1)
[1] 1
> f(2)
[1] 2 1 2
> f(3)
[1] 3 2 1 3 2 3
> f(4)
 [1] 4 3 2 1 4 3 2 4 3 4

Apa ? Tidak ada TSQL?
Pengoptimal

@Optimizer mungkin nanti :)
MickyT

2

JavaScript, ES6, 66 byte * 0,5 = 33

f=i=>(g=n=>[...Array(n).fill().map((v,x)=>i-x),...n?g(n-1):[]])(i)

Membangun berdasarkan pendekatan rekursif Pengoptimal , kita dapat membangun penurunan yang menurun dengan panjang, seperti [4,3,2,1, 4,3,2, 4,3, 4].

Alih-alih Array(i).fill(i)membuat undefinedsub -nilai dengan nilai yang sama , kami membuat- sub-bidang dengan panjang yang sesuai dengan Array(n).fill()dan kemudian mengubah nilai-nilai ke run menurun menggunakan .map((v,x)=>i-x). Selain itu, kami mendefinisikan dan mengulangi tentang fungsi batin g; fungsi luar fhanya ada untuk menyimpan nilai isaat gberulang.


2

T-SQL, 176 * 0,5 = 88

Karena Anda sepertinya melewatkan T-SQL @Optimizer, ini dia semua itu sangat menyenangkan :).

Beberapa opsi fungsi, fungsi skalar, dan nilai tabel sebaris. Fungsi Skalar menggunakan while untuk mengulang dan mengembalikan string angka, di mana fungsi Inline Table Valued menggunakan CTE rekursif untuk urutan dan mengembalikan tabel. Tentu saja ini tidak akan pernah kompetitif, jadi saya belum menghabiskan banyak waktu bermain golf.

Fungsi Tabel Bernilai Inline, 176 * .5

CREATE FUNCTION F(@ INT)RETURNS TABLE RETURN WITH R AS(SELECT @ N UNION ALL SELECT N-1FROM R WHERE N>0)SELECT B.N FROM R CROSS APPLY(SELECT TOP(R.N)N FROM R A ORDER BY N DESC)B

Disebut sebagai berikut

SELECT * FROM dbo.F(5)

Contoh SQLFiddle

Fungsi Skalar, 220 * .5

CREATE FUNCTION G(@ INT)RETURNS VARCHAR(MAX)AS BEGIN DECLARE @S VARCHAR(MAX),@N INT=1,@I INT,@C INT WHILE @N<=@ BEGIN SELECT @I=@N,@C=@ WHILE @C>=@I BEGIN SELECT @S=CONCAT(@S+',',@C),@C-=1 END SET @N+=1 END RETURN @S END

Disebut sebagai berikut

SELECT dbo.G(5)

Contoh SQLFiddle



2

perl, 26 byte

for(1..$n){print"$_ "x$_;}

1
Silakan kirim skor Anda. Juga, karena ini adalah kode golf, Anda dapat menyimpan byte dengan menghapus spasi tambahan dan definisi $n.
Alex A.

Ini tidak berjalan untuk saya di bawah Perl 6.
Alex A.

@Alex, apa kesalahannya, bekerja di bawah 5.10
michael501

Unable to parse postcircumfix:sym<{ }>, couldn't find final '}' at line 3. Mencobanya di ideone.com.
Alex A.

@Alex, coba ini: C: \ Windows \ system32> perl -e "$ n = 5; untuk (1 .. $ n) {print qq ($ _) x $ _;};" 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
michael501

2

JavaScript (dapat dibaca), 131 byte

Saya baru mengenal Code Golf jadi ini bukan yang terbaik

function f(n) {
    var arr = [];
    for(var i = 1; i <= n; i++) {
        for(var j = 0; j < i; j++) {
            arr.push(i);
        }
    }
    return arr;
}

JavaScript (kurang dapat dibaca), 87 byte

Diminimalkan menggunakan jscompress.com

function f(e){var t=[];for(var n=1;n<=e;n++){for(var r=0;r<n;r++){t.push(n)}}return t}

2

TECO, 25 byte * 0,5 = 12,5

a\+1%a%b<qauc-1%b<-1%c=>>

Di atas nyaris mengalahkan versi non-bonus pada 13 byte:

a\%a<%b<qb=>>

2

C #, 114 99 * 0,5 = 49,5 byte

(Dengan sedikit bantuan dari jawaban VisualMelon) Edit: dan komentar James Webster

int[]A(int n){int m=n,i,c=0;var a=new int[n*(n+1)/2];while(m-->0)for(i=m;i++<n;)a[c++]=i;return a;}

Tidak Disatukan:

int[] FooBar(int n)
{
    int altCounter = n, i, arrayCounter = 0;
    var returnArray = new int[n * (n + 1) / 2];
    while(m-->0)
        for(i = altCounter; i++ < n; )
            returnArray[arrayCounter++]=i;
    return returnArray;
}

Ada versi yang tidak aman yang saya ambil tanpa malu-malu dari jawaban C feersum, tapi saya tidak 100% yakin cocok dengan aturan karena Anda harus mengalokasikan memori sebelum memanggil metode.

C # (tidak aman), 82 * 0,5 = 41 byte

unsafe void A(int n,int*p){int*z=p;int m=n,i;while(m-->0)for(i=m;i++<n;)z++[0]=i;}

Disebut sebagai berikut:

int n = 5, length = (int)((n / 2f) * (n + 1));
int* stuff = stackalloc int[length];
int[] stuffArray = new int[length];
A(n, stuff);
System.Runtime.InteropServices.Marshal.Copy(new IntPtr(stuffArray), stuffArray, 0, stuffArray.Length);
//stuffArray == { 5, 4, 5, 3, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5 }

Sesuai saran VisualMelon (terima kasih!), Kode tidak aman dapat dibuat kembali dengan kode aman yang mengurangi ukuran lebih jauh! Masih menimbulkan pertanyaan jika pembuatan array hasil akhir diizinkan dilakukan di luar metode.

C #, 72 * 0,5 = 36 byte

void A(int n,int[]p){int z=0,m=n,i;while(m-->0)for(i=m;i++<n;)p[z++]=i;}

Kerja bagus! Untuk versi per-alokasi, jauh lebih murah untuk pergi aman dan lulus int[]langsung void A(int n,int[]p){int z=0,m=n,i;while(m-->0)for(i=m;i++<n;)p[z++]=i;}- Saya setuju itu mungkin sedikit rapuh, mengenai aturan;)
VisualMelon

Anda tidak perlu membuat pointer lokal untuk versi yang tidak aman, yang memotong 8bytes dengan baik. Juga, saya mungkin kehilangan intinya, tetapi haruskah baris terakhir dari kode panggilan tidak aman itu System.Runtime.InteropServices.Marshal.Copy(new IntPtr(stuff), stuffArray, 0, length);?
VisualMelon

@VisualMelon Itulah yang saya dapatkan karena tidak memeriksa ulang nama variabel setelah saya menamainya kembali. Terima kasih atas kepala: D. Mengedit jawaban untuk akun untuk versi yang lebih pendek dalam komentar Anda.
Ichabod Clay

Anda dapat memotong sedikit versi yang aman dengan menyinggung panjangnya yang var a=new int[(int)((n/2f)*(n+1))];saya pikir membawanya ke 109
James Webster

Satu lagi dengan menulis ulang calc sebagai:(n*(n+1)/2)
James Webster


1

C #, 116 115 + 33 = 148 byte

Bukan kode terpendek, tapi ... tetap berfungsi: P

int[]l(int m){List<int>i=new List<int>();for(int j=1;j<=m;j++){for(int x=0;x<j;x++){i.Add(j);}}return i.ToArray();}

Membutuhkan ini di bagian atas file (33 byte):

using System.Collections.Generic;

Versi tidak golf:

int[] RepatedNumberList(int m)
{
    List<int> intList = new List<int>();
    for (int j = 1; j <= m; j++)
    {
        for (int x = 0; x < j; x++)
        {
            intList.Add(j);
        }
    }
    return initList.ToArray();
}

1

J, 23 * 0,5 = 11,5

   f=.-;@(<@|.@i."0@>:@i.)
   f 5
5 4 5 3 4 5 2 3 4 5 1 2 3 4 5

J, 11

   f=.#~@i.@>:
   f 5
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

1
23 * 0.5adalah 11.5, tidak 10.5.
ProgramFOX

@ProgramFOX tangkapan yang bagus. Apakah Anda akan mengedit, atau haruskah saya? Bukan alasan bagus untuk downvote IMO.
John Dvorak

@ JanDvorak Baru saja mengeditnya. Dan saya tidak mengundurkan diri, saya menaikkannya bahkan sebelum saya melihat kesalahan.
ProgramFOX

Sekarang kesalahan telah diperbaiki, haruskah solusi bonus dipindahkan ke bawah?
John Dvorak

-1Byte:, f=.-[:;<@|.@i."0@>:@i.membuat skor sama!
Bolce Bussiere

1

JavaScript (ES6) 29 (58 * 0,5)

Edit hapus; thx @Optimizer

Q=o=>(m=>{for(n=o,r=[];n>m||++m<(n=o);)r.push(n--)})(0)||r

Tes di konsol FireFox / FireBug

Q(9)

Keluaran

[9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 9, 8, 7, 6, 5, 4, 9, 8, 7, 6, 5, 9, 8, 7, 6, 9, 8, 7, 9, 8, 9]

Tidak disatukan

Q=o=>{
  for(m=0,r=[];m<o;++m)
    for(n=o;n>m;)
      r.push(n--);
  return r
}

1

ECMAScript6, 67 * 0,5 = 33,5 byte

f=n=>{a=[],b=0;while(c=n+b,n--){while(c-b)a.push(c--);b++}return a}

Cukup senang dengan yang ini ... Ini sekitar seperempat ukuran aslinya.

f(4) pengembalian:

[ 4, 3, 2, 1, 4, 3, 2, 4, 3, 4 ]

Jawaban lama:

f=i=>{a=b=Array;while(i)a=a.concat(b.apply(null,b(i)).map(e=>i)),i--;return a}

Ini adalah pukulan pertama saya di kode golf ... Saya masih ingin mendapatkan bonus 0,5x itu. Ada saran yang disambut!

Disebut dengan f (n).


Anda harus cukup baru dalam JavaScript itu sendiri :). (1) Hapus tanda kurung di sekitar argumen d, (2) a=b=c=[]di untuk bagian deklarasi, (3) c[a].map(e=>a)(4)b.push(...c)
Pengoptimal

Saya membuat versi yang lebih pendek sebelum membaca komentar Anda, yang akan saya masukkan dalam posting saya. Pengalaman saya dengan JS sebagian besar terbatas pada manipulasi DOM / style untuk aplikasi web sederhana ... dan saya belum pernah menggunakan salah satu fitur ES6 baru sampai hari ini.
binormal

1

C #, 108 byte * 0,5 = 54

List<int> f(int n){var r=new List<int>();int m=n-1,i;r.Add(n);for(;m-->0;)for(i=m;i++<n;)r.Add(i);return r;}

Terima kasih kepada VisualMelon untuk melakukan kerja kerasnya! Saya pikir saya akan mencoba menekannya sebanyak mungkin.

(114 byte * 0,5 = 57, jika Anda bersikeras menggunakan .ToArray () untuk mengembalikan int [])

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.