Tantangan:
Diberikan bilangan bulat positif, hasilkan keluaran satu digit terpanjang yang terjadi setidaknya dua kali, DAN memiliki batas digit lain (atau awal / akhir bilangan bulat).
Sebuah contoh:
Input: 7888885466662716666
Hasil terpanjang dari satu digit adalah 88888
( 7[88888]5466662716666
) dengan panjang 5. Namun, urutan ini hanya terjadi satu kali dalam bilangan bulat.
Sebaliknya, hasil untuk input 7888885466662716666
harus 6666
( 78888854[6666]271[6666]
), karena itu terjadi (setidaknya) dua kali.
Aturan tantangan:
- Panjang urutan mengambil prioritas dari jumlah kali itu terjadi. (Yaitu dengan input
8888858888866656665666
, kami output88888
([88888]5[88888]66656665666
; panjang 5, terjadi dua kali), dan tidak666
(88888588888[666]5[666]5[666]
; panjang 3, terjadi tiga kali). - Jika panjang beberapa kali sama, kita hasilkan satu dengan jumlah kejadian terbesar. Yaitu dengan input
3331113331119111
, kami output111
(333[111]333[111]9[111]
; panjang 3, terjadi tiga kali), dan tidak333
([333]111[333]1119111
; panjang 3 juga, tetapi terjadi dua kali) - Jika jumlah-kejadian dan panjang dari beberapa urutan sama, Anda dapat menampilkan salah satu dari mereka, atau semua (dalam urutan apa pun). Yaitu dengan masukan
777333777333
, mungkin output adalah:777
;333
;[777, 333]
; atau[333, 777]
. - Selanjutnya harus memiliki batas digit lainnya (atau awal / akhir bilangan bulat). Yaitu dengan input
122222233433
hasilnya adalah33
(1222222[33]4[33]
; panjang 2, terjadi dua kali) dan tidak222
(1[222][222]33433
, panjang 3, terjadi dua kali dengan keduanya tidak valid).- Ini berlaku untuk semua angka yang diperhitungkan pada penghitung-kejadian. Yaitu dengan input
811774177781382
hasilnya adalah8
([8]117741777[8]13[8]2
; panjang 1, terjadi tiga kali) dan tidak77
(811[77]41[77]781382
/811[77]417[77]81382
; panjang 2, terjadi dua kali dengan satu tidak valid) atau1
(8[1][1]774[1]7778[1]382
; panjang 1, terjadi empat kali dengan dua tidak valid).
- Ini berlaku untuk semua angka yang diperhitungkan pada penghitung-kejadian. Yaitu dengan input
- Anda dapat berasumsi bahwa input tidak akan mengandung digit apa pun
0
(akan cocok[1-9]+
) (Ini untuk menghindari keharusan berurusan dengan kasus uji seperti10002000
yang seharusnya dihasilkan000
, di mana sebagian besar bahasa akan menampilkan0
secara default.) - Anda dapat berasumsi bahwa input akan selalu mengandung setidaknya satu output yang valid.
- I / O keduanya fleksibel. Dapat berupa daftar / larik / aliran digit / byte / karakter atau sebagai string, bukan bilangan bulat tunggal.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input: 7888885466662716666 / [7,8,8,8,8,8,5,4,6,6,6,6,2,7,1,6,6,6,6]
Output: 6666 / [6,6,6,6]
Input: 3331113331119111 / [3,3,3,1,1,1,3,3,3,1,1,1,9,1,1,1]
Output: 111 / [1,1,1]
Input: 777333777333 / [7,7,7,3,3,3,7,7,7,3,3,3]
Possible outputs: 777; 333; [777,333]; [333;777] / [7,7,7]; [3,3,3]; [[7,7,7],[3,3,3]]; [[3,3,3],[7,7,7]]
Input: 122222233433 / [1,2,2,2,2,2,2,3,3,4,3,3]
Output: 33 / [3,3]
Input: 811774177781382 / [8,1,1,7,7,4,1,7,7,7,8,1,3,8,2]
Output: 8 / [8]
Input: 555153333551 / [5,5,5,1,5,3,3,3,3,5,5,1]
Output: 1 / [1]
Input: 12321 / [1,2,3,2,1]
Possible outputs: 1; 2; [1,2]; [2,1] / [1]; [2]; [[1],[2]]; [[2],[1]]
Input: 944949949494999494 / [9,4,4,9,4,9,9,4,9,4,9,4,9,9,9,4,9,4]
Output: 4 / [4]
Input: 8888858888866656665666 / [8,8,8,8,8,5,8,8,8,8,8,6,6,6,5,6,6,6,5,6,6,6]
Output: 88888 / [8,8,8,8,8]
Input: 1112221112221111 / [1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1]
Output: 111; 222; [111,222]; [222,111] / [1,1,1]; [2,2,2]; [[1,1,1],[2,2,2]]; [[2,2,2],[1,1,1]]
Input: 911133111339339339339339 / [9,1,1,1,3,3,1,1,1,3,3,9,3,3,9,3,3,9,3,3,9,3,3,9]
Output: 111 / [1,1,1]
8888858888866656665666
. Jika saya mengartikan tantangan dengan benar, solusi Brachylog dan 05AB1E gagal.222
ketika dibatasi oleh bilangan bulat lainnya. Saya kira kita tidak seharusnya menghitung kejadian yang merupakan substring dari1111
. Lebih baik menunggu OP.1112221112221111
ini adalah subsequences dan jumlah mereka:1111 (1)
,111 (2)
,222 (2)
. Karena kita hanya output urutan terjadi setidaknya dua kali, output dapat menjadi salah satu dari:111
,222
,[111,222]
,[222,111]
. (Lihat aturan keempat untuk informasi lebih lanjut.) Pada dasarnya1111
hanya akan dianggap sebagai1111
, dan bukan sebagai1
dan111
atau11
dan11
. Saya akan menambahkan test case Anda, tetapi hasilnya salah satu atau keduanya111
dan222
.Jawaban:
05AB1E , 14 byte
Cobalah online!
Penjelasan
sumber
Jelly , 12 byte
Cobalah online!
Versi sebelumnya - 14 byte
Cobalah online!
Bagaimana itu bekerja?
sumber
JavaScript (ES6),
797368 byteMengambil input sebagai string. Mengembalikan bilangan bulat.
Cobalah online!
Berkomentar
sumber
...s
mengubah input ke daftar karakter digit, bukankah lebih pendek untuk hanya mengambil input sebagai daftar karakter digit, sebagai ganti string? Saya sudah mengizinkan I / O yang fleksibel. (Tapi saya menganggapnya mengganggu bagian lain dari kode Anda?)[...s,0]
walaupuns
sudah ada daftar.Retina , 56 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Tuliskan semua digit angka yang diulang secara maksimal.
Urutkan daftar ke dalam urutan.
Buatlah daftar semua kelanjutan dengan "jumlah".
Sortir dalam urutan hitungan naik.
Hapus jumlah.
Sortir dalam urutan panjang. (Di mana panjangnya sama, urutan sebelumnya karena hitungan dipertahankan.)
Tetap nilai terakhir yaitu yang terlama.
sumber
R , 102 byte
Cobalah online!
Karena belum ada jawaban R, saya memutuskan untuk mencobanya, dan yah ... itu tidak mudah. Saya tidak benar-benar tahu apakah itu pendekatan yang baik, tetapi ini dia.
Input dan output vektor karakter.
sumber
Perl 6 ,
5856 byteCobalah online!
sumber
Python 2 ,
123120 byteCobalah online!
sumber
Powershell, 101 byte
Skrip uji yang dijelaskan:
Keluaran:
sumber
Python 2 ,
114113 byte-1 byte terima kasih kepada TFeld .
Cobalah online!
sumber
Haskell, 72 byte
Bagaimana itu bekerja
sumber
Gloss
untuk output grafis atauMatrix
). Saya menggunakan "Haskell + sesuatu" jika saya tidak ingin memasukkan jumlah byte untuk impor. Saya pikir kami memiliki topik ini pada meta, tetapi saya tidak dapat menemukannya lagi. Jika saya ingat dengan benar, kami tidak memiliki definisi umum tentang "perpustakaan standar". Apa yang harus menjadi referensi untuk Haskell? Laporan Haskell, basis GHC, Haskell Plattform, sesuatu yang lain?Data.Lists
perpustakaan tidak tersedia di TIO atau kompiler Haskell online lainnya?Data.Lists
tidak ada di TIO. Anda dapat mengujinya dengan versi ini .R , 85 byte
Cobalah online!
Input: vektor misalnya angka integer yang terpisah
c(1,8,8...)
Output: vektor digit integer yang terpisah
Kode terbuka dengan penjelasan:
Versi alternatif yang menerima vektor angka integer atau karakter:
R , 88 byte
Cobalah online!
Input: vektor karakter atau digit yang dipisahkan, misalnya
c("1","8","8"...)
atauc(1,8,8...)
Output: vektor karakter yang dipisahkan jika inputnya adalah vektor karakter, vektor digit jika inputnya adalah vektor digit
sumber
Merah ,
256250 byteCobalah online!
Sungguh, solusi yang sangat panjang kali ini ... (menghela nafas)
Mengambil input sebagai string.
Penjelasan:
sumber
Java (JDK 10) , 213 byte
Cobalah online!
Penjelasan (kedaluwarsa)
Kredit
sumber
j*o>M
cek Anda . Jika saya mengerti benar dibutuhkan maxlength * occurrence-count
. Tetapi untuk kasus uji seperti1113311133933933933933
misalnya,111
akan menjadi (3 * 2 = 6), dan yang33
akan menjadi (2 * 6 = 12). Jadi output yang33
memiliki kejadian tertinggi, bukannya111
yang terpanjang setidaknya dua kali. Juga,var r="";for(;O-->0;)r+=D;return r;
dapat golfed untukfor(;O-->0;)System.out.print(D);
di Jawa 10, atau bahkan lebih pendek di Jawa 11:return(D+"").repeat(O);
.int X[][]=new int[10][99],d,l=99,
ke golfint l=99,X[][]=new int[10][l],d,
.d++<9
alih-alih++d<10
. Maaf untuk yang lain: Saya agak lelah hari ini = _ =Ruby ,
6867 byteCobalah online!
Input dan output array dari chars.
Pendekatannya cukup mudah: kami mengidentifikasi jalannya digit berurutan (
chunk
menggunakan+
fungsi unary sebagai identitas) dan mengambil maksimum - pertama dengan ukuran lari (reset ke nol jika jumlah kemunculannya adalah <2), kemudian oleh hitungan itu sendiri .sumber
PCRE, 152 byte
Lihat beraksi di: https://regex101.com/r/0U0dEp/1 (lihat saja pertandingan pertama di setiap test case)
Ini hanya untuk bersenang-senang, karena regex bukan bahasa pemrograman yang sebenarnya, dan solusinya terbatas: P
Karena grup nol lebar seperti
(?:)+
hanya cocok satu kali dan tidak mengulangi tanpa batas, dan karena PCRE secara internal membuat salinan grup yang dikuantifikasi dengan batas, saya harus menggunakan angka ajaib di sana ("{1,592}"), yang berarti kita hanya dapat melihat hingga 592 set angka yang berdekatan di depan untuk menemukan set yang bersaing yang bisa lebih lama dari yang saat ini sedang diperiksa. Info lebih lanjut tentang konsep ini di sini .sumber
Perl 5 , 88 byte
Cobalah online!
Sedikit tidak berbulu, dengan tes:
sumber
Bahasa Wolfram (Mathematica) , 67 byte
Fungsi murni. Mengambil daftar digit sebagai input dan mengembalikan daftar urutan (tanpa urutan tertentu) sebagai output. Tidak yakin apakah klausul "harus muncul setidaknya dua kali" dapat ditangani dengan lebih bersih. Cobalah online!
sumber
Japt
-h
, 12 byteInput & output adalah string.
Cobalah
sumber