Diberikan daftar terbatas, kembalikan daftar semua awalannya, termasuk daftar kosong, dalam urutan panjangnya.
(Pada dasarnya menerapkan fungsi Haskell inits
.)
Detail
- Daftar input berisi angka (atau tipe lain jika lebih nyaman).
- Output harus berupa daftar daftar .
- Pengajuan dapat, tetapi tidak harus berupa fungsi, I / O standar apa pun dapat digunakan.
- Ada jawaban CW untuk semua solusi sepele .
Contoh
[] -> [[]]
[42] -> [[],[42]]
[1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]]
[4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]
Jawaban:
Haskell , 20 byte
Sunting: Namun satu byte lebih pendek dengan pemindaian yang sama sekali berbeda.
Fungsi anonim sedikit mengalahkan impor sepele.
Cobalah online!
=<<
untuk singkatan(scanr(\_->init)=<<id) l = scanr(\_->init) l l
.l
dari kanan ke kiri, mengumpulkan hasil antara dengan fungsi\_->init
.init
ke nilai awal pemindaian, yang jugal
.sumber
brainfuck ,
2112 byte-9 byte terima kasih kepada Arnauld yang menyarankan pemisah,
ÿ
bukan baris baruCobalah online!
Membawa byte melalui STDIN tanpa byte nol dan mencetak serangkaian awalan yang dipisahkan oleh
ÿ
karakter denganÿ
karakter utama . Misalnya, untuk inputPrefixes
, outputnya adalahÿÿPÿPrÿPreÿPrefÿPrefiÿPrefixÿPrefixeÿPrefixes
.Untuk keterbacaan, inilah versi dengan baris baru .
Penjelasan:
sumber
JavaScript (ES6), 33 byte
Cobalah online!
Bagaimana?
sumber
CW untuk semua entri sepele
Bersih , 19 byte
Versi Haskell juga berfungsi di Bersihkan.
Cobalah online!
Haskell , 22 byte
Cobalah online!
Prolog (SWI) , 6 byte
Cobalah online!
sumber
Jelly , 3 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Japt , 4 byte
Cobalah online!
Penjelasan:
sumber
Perl 6 , 13 byte
Cobalah online!
Untuk menjelaskan:
Dalam Perl 6 Anda dapat membungkus operator dalam tanda kurung siku sebagai cara alternatif untuk menulis pengurangan daftar.
[+] @array
mengembalikan jumlah elemen dalam@array
,[*] @array
mengembalikan produk, dll. Anda juga dapat mendahului operator dengan garis miring terbalik untuk membuat pengurangan "segitiga", yang oleh beberapa bahasa disebut "pemindaian." Jadi[\+] @array
mengembalikan daftar yang terdiri dari elemen pertama@array
, lalu jumlah dari dua elemen pertama, lalu jumlah dari tiga elemen pertama, dll.Berikut
[\,] @_
ini adalah pengurangan segitiga atas array input@_
menggunakan operator daftar konstruksi,
. Jadi itu mengevaluasi ke daftar daftar: elemen pertama@_
, dua elemen pertama@_
, dll. Itu hampir apa yang dibutuhkan, tetapi masalahnya memerlukan satu daftar kosong terlebih dahulu. Jadi elemen pertama dari daftar kembali adalah daftar kosong literal(),
, kemudian pengurangan atas daftar input diratakan ke dalam sisa daftar kembali dengan|
.sumber
Python 2 , 32 byte
Cobalah online!
sumber
R ,
4039 byteCobalah online!
-1 byte terima kasih untuk digEmAll
Output dari
list
tipe R agak aneh; ia menggunakan pengindeksan berurutan, jadi misalnya, output untuklist(1,2)
aku sMengambil input sebagai vektor sebagai gantinya memberikan format output yang lebih rapi, meskipun kemudian inputnya tidak secara teknis
list
.sumber
JavaScript, 36 byte
Cobalah online!
sumber
Mathematica,
2221 byte-1 byte terima kasih kepada Misha Lavrov !
Fungsi murni. Mengambil daftar sebagai input dan mengembalikan daftar daftar sebagai output. Saya percaya ini adalah solusi sesingkat mungkin.
sumber
{}~FoldList@Append~#&
.Sekam , 2 byte
Dapatkan semua
ḣ
eads dan kemudian tambahkanΘ
(dalam hal ini[]
):Cobalah online!
(perlu mengetik anotasi untuk daftar kosong: Coba online! )
sumber
J , 5 byte
Cobalah online!
sumber
PowerShell , 65 byte
Cobalah online!
PowerShell sangat membantu membuka daftar-daftar ketika standar
Write-Output
terjadi pada penyelesaian program, sehingga Anda mendapatkan satu item per baris. Taktik a-join','
untuk melihat daftar daftar yang lebih baik, dengan mengubah daftar dalam menjadi string.(Ab) menggunakan fakta bahwa mencoba untuk mengeluarkan array kosong (misalnya,
@()
) menghasilkan tidak ada output, sehingga input array kosong hanya memiliki''
sebagai output, karena$a[0..$_]
akan menghasilkan apa-apa. Ini juga akan membuang beberapa pesan kesalahan yang spektakuler.sumber
K (ngn / k) , 8 byte
Cobalah online!
sumber
,\(,()),
di K4. Bergabung dengan daftar nol di sepanjang masukan dari daftar? bagaimana bekerja?()
adalah daftar kosong.(,()),x
menambahkannya kex
. akhirnya,\
melakukan pemindaian bersama. yangx
dihilangkan untuk membentuk komposisi. perhatikan bahwa trailing,
adalah diad, jadi "concat", bukan "enlist".1_',\0,
tapi parser saya tidak cukup pintar untuk menangani ini ...Gangguan Umum , 39 byte
Cobalah online!
Penjelasan
sumber
F #, 53 byte
Saya sebenarnya punya dua jawaban yang hampir mirip untuk ini, keduanya sama panjangnya. Keduanya mengambil urutan generik
s
sebagai parameter.Solusi pertama:
Cobalah online!
Seq.take
mengambiln
elemen pertama dari urutan.Seq.init
membuat urutan baru dengan hitungan (dalam hal ini) dari panjang urutans
ditambah 1, dan untuk setiap elemen dalam urutan mengambiln
elemen pertamas
.Solusi kedua:
Mirip dengan sebelumnya, kecuali ia menciptakan urutan dari 0 hingga panjang
s
. Kemudian ambil sejumlah elemen daris
.Coba ini juga online!
sumber
fun s->Seq.map(fun n->Seq.take n s){0..Seq.length s}
menghemat 1 byteMATL,
1512 byte3 byte disimpan berkat @Giuseppe
Cobalah di MATL Online .
Karena cara MATL menampilkan output, Anda tidak bisa secara eksplisit melihat array kosong dalam array sel. Berikut adalah versi yang menunjukkan output sedikit lebih eksplisit.
Penjelasan
sumber
v
sebagai ganti[]
. Dan tidak:
digunakan1
sebagai argumen pertama default? Jadi ini bisavin:"G@:)]Xh
untuk 12 byte.PROLOG SWI 22 byte
i(X,Y):-append(X,_,Y).
sumber
Arang , 6 byte
Cobalah online!Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Mungkin dengan biaya 1 byte untuk meminta Charcoal untuk mencetak
n+1
array-elemen yang memasukkan input sebagai elemen terakhir, tetapi outputnya sama, walaupun posisi kursor akan berbeda jika Anda kemudian mencetak sesuatu yang lain.sumber
05AB1E , 3 byte
Penjelasan:
Cobalah online!
sumber
RAD , 7 byte
Cobalah online!
Ini juga berfungsi di Dyalog APL sebagai fungsi.
Bagaimana?
Ini berfungsi sama untuk APL dan RAD, mengingat hubungan dekatnya.
(⊂⍬)
array kosong,
ditambahkan ke,\
awalan (yang mengecualikan array kosong.)sumber
Groovy , 37 byte
Cobalah online!
sumber
{it.inits().reverse()}
akan bekerja setelah kami mendapatkan groovy 2.5 di TIOJapt , 5 byte
Cobalah online!
sumber
brainfuck , 43 byte
Ambil daftar karakter yang bukan nol sebagai input dan kembalikan semua awalan yang dipisahkan oleh baris baru. Membutuhkan pita tak terbatas atau pembungkus ganda.
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 39 byte
Cobalah online!
sumber
System.Linq;
dalam bytecount Anda. Dan tampaknya beberapa logika output Anda dalam keluaran array Anda. Karena array kosong hanya mengembalikan array kosong.System.Linq
, saya tidak harus memasukkan ini dalam jumlah byte. Kiriman saya akan dianggap bahasa yang berbeda dari ucapan.NET Core
. github.com/dotnet/roslyn/wiki/C%23-Interactive-Walkthrough - Anda menyebutkan pencetakan yang merupakan masalah terpisah, saya ingin mendapatkan kejelasan tentang ini terlebih dahulu.Array
vsIList
vsIEnumerable
.F # (Mono) , 45 byte
Cobalah online!
Saya tidak sepenuhnya yakin apakah ini valid, tetapi sepertinya ini mengikuti sintaksis "lambda anonim" yang sama yang sepertinya saya gunakan dalam beberapa bahasa lain.
sumber
Java 8+ ,
8677 byte-9 byte terima kasih kepada Kevin Cruijssen (singkirkan impor)!
Cobalah online!
Alternatif, 65 byte
Berikut ini akan mencetak hasilnya ke stdout (karena Olivier Grégoire ):
Cobalah online
sumber
java.util.stream.IntStream
langsung dan menjatuhkan impor.x->{for(int i=0;i<=x.size();)System.out.println(x.subList(0,i++));}
( 67 byte ) Ini mencetak daripada menggunakan stream. Pencetakan biasanya merupakan cara terpendek untuk menghasilkan struktur yang kompleks.System.out.print
karena output masih tidak ambigu.Brachylog , 9 byte
Cobalah online!
Penjelasan
sumber
Ruby ,
3129 byteCobalah online!
Penjelasan:
sumber