pengantar
Mari kita amati array berikut:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Sebuah kelompok terdiri dari angka yang sama di samping satu sama lain. Dalam array di atas, ada 5 grup berbeda:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
1, 1, 1
2, 2
1, 1, 1, 1
2, 2, 2
1, 1, 1
Kelompok terkecil ini [2, 2]
, jadi kami mengeluarkan [2, 2]
.
Mari kita ambil contoh lain:
[3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]
3, 3, 3
4, 4, 4, 4
5, 5
4, 4
3, 3
4, 4
Anda dapat melihat bahwa ada beberapa grup dengan panjang yang sama. Kelompok terkecil adalah:
[3, 3], [4, 4], [4, 4] and [5, 5].
Jadi kami hanya menampilkan [3, 3], [4, 4], [4, 4], [5, 5]
dalam format yang masuk akal. Anda dapat menampilkan ini dalam urutan apa pun.
Tugas
Diberikan array yang hanya terdiri dari bilangan bulat positif, mengeluarkan grup terkecil dari array. Anda dapat mengasumsikan bahwa array akan mengandung setidaknya 1 integer.
Uji kasus
Input: [1, 1, 2, 2, 3, 3, 4]
Output: [4]
Input: [1]
Output: [1]
Input: [1, 1, 10, 10, 10, 100, 100]
Output: [1, 1], [100, 100]
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
11101010100100
sepertinya tidak benar untuk input: p.Jawaban:
Pyth,
141211Test Suite
2 byte berkat Jakube! Dan 1 byte terima kasih kepada isaacg!
Sayangnya, run length decoding tidak cukup melakukan apa yang kita inginkan, tetapi itu akan bekerja dengan solusi kecil, tetapi itu membuatnya sedikit lebih lama daripada implementasi manual:
Kredit ke Jakube untuk mengetahui hal ini.
sumber
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 byte
Ini adalah komposisi dua fungsi yang dapat diterapkan ke daftar.
Split
mengambil semua grup angka berurutan, danMinimalBy[Length]
memilih mereka dengan panjang minimal.sumber
Haskell, 38 byte
Contoh penggunaan:
argmins length.group $ [3,3,3,4,4,4,4,5,5,4,4,3,3,4,4]
->[[4,4],[3,3],[4,4],[5,5]]
.Bangun grup dengan elemen yang sama dan temukan yang memiliki panjang minimal.
sumber
Data.Lists
?argmins
misalnya dari Data.List.Extras.Agrmax .Python 2, 120 byte
Mengambil input sebagai string bilangan bulat yang dipisahkan spasi dengan spasi tambahan, dan menampilkan daftar daftar string. Strateginya adalah untuk menemukan grup menggunakan regex
(\d+ )\1*
(yang cocok dengan satu atau lebih bilangan bulat yang dipisahkan ruang, dengan spasi tambahan), kemudian membaginya dalam ruang menjadi daftar bilangan bulat, dan mencetak grup tersebut yang panjangnya sama dengan panjang grup minimum.Cobalah online
sumber
C #, 204 byte
Saya tidak tahu apakah menggunakan string itu wajar mengingat semua esolang golf mendapatkan input mereka dengan cara yang sama tetapi ia meminta input array.
ungolfed:
Saya perlu cara untuk mendapatkan kecocokan terkecil untuk array pertandingan, sebagian besar byte saya terbuang di sana, membantu dihargai. Saya mencoba untuk masuk ke hal-hal LINQ dan lambda.
sumber
Python 2.x, 303 byte
Paling buruk. Kode. Pernah.
Input: Array dalam format
r'\[(\d,)*(\d,?)?\]'
Dengan kata lain, array python angka
Output: Array array (grup terkecil), dalam urutan yang mereka muncul di array input
Fitur Kebetulan Tambahan (Fitur yang tidak ingin saya buat):
min
kemax
, itu akan mengembalikan array grup terbesar.print r
, itu akan mencetak semua grup secara berurutan.sumber
MATL, 15 byte
Cobalah online
Input adalah vektor, seperti
[1 2 3 4]
, dan output adalah matriks di mana setiap kolom adalah salah satu kelompok terkecil, misalnya:untuk kasus uji ketiga.
Penjelasan:
sumber
Jelly,
221716 byteCobalah online!
sumber
JavaScript (ES6), 106
Uji
sumber
h.map(length)
bekerjalength
harus fungsi dengan string sebagai argumen, bukan metode stringJavaScript (ES6), 113 byte
sumber
Retina,
9185807977767574 byteCobalah online!
Penjelasan
Inputnya adalah
1,1,10,10,10,100,100
.Baris pertama cocok dengan grup dengan istilah yang sama:
Masukan menjadi:
Dua baris berikut menambahkan jumlah koma ke baris:
Masukan menjadi:
Kemudian mereka diurutkan berdasarkan baris ini, yang mencari angka pertama sebagai indeks:
Masukan menjadi:
Kemudian kedua garis ini menemukan tempat di mana panjangnya berbeda, dan menghapus semuanya ke depan:
Masukan menjadi:
Kemudian angkanya dihapus oleh dua baris ini:
Di mana input menjadi:
sumber
APL, 25 karakter
Dalam Bahasa Inggris:
sumber
⍵⊂⍨1,2≠/⍵
J , 31 byte
Input adalah array nilai. Output adalah array array kotak.
Pemakaian
Penjelasan
sumber
Clojure, 65 byte
Gunakan
+
sebagaiidentity
fungsi seperti(+ 5)
5 :) Sisanya harus jelas,G
adalah peta-hash yang digunakan sebagai fungsi dan diberi kunci itu mengembalikan nilai yang sesuai.sumber
Brachylog , 6 byte
Cobalah online!
Input melalui variabel input dan output melalui variabel output.
Meskipun, tidak seperti
ḅ
,ᵍ
kelompok elemen yang tidak berurutan sama,lᵒ
masih diperlukan untuk menemukan grup dengan panjang terpendek, dan itu berfungsi karena urutan kelompok dalam output dariᵍ
ditentukan oleh posisi elemen pertama dari setiap kelompok, sehingga yangᵍhᵐ
dapat berfungsi sebagai semacam deduplicate oleh pseudo-metapredicate.sumber
Perl 5
-MList::Util=pairkeys,min -a
, 69 byteCobalah online!
sumber