Saat Anda mengedit posting di SE, suntingan lebih lanjut dalam tenggang waktu 5 menit digabungkan ke dalamnya. Diberikan daftar waktu Anda mengedit posting, hitung hasil edit tidak dalam tenggang waktu.
Katakanlah Anda mengedit pada menit [0,3,4,7,9,10,11,12]
. Ini menghasilkan 3 suntingan pada waktu [0,7,12]
, dengan sisanya terjadi pada masa tenggang mereka.
0: [3,4]
7: [9,10,11]
12: []
- Suntingan pertama adalah pada menit ke-0. Suntingan pada menit 3 dan 4 berada dalam tenggang waktu 5 menit, jadi jangan dihitung.
- Suntingan kedua pada menit 7. Suntingan pada menit 9, 10, 11 berada dalam tenggang waktu.
- Suntingan ketiga pada menit 12 baru saja melewati tepi periode tenggang 5 menit mulai dari menit 7.
Jadi, outputnya adalah 3.
Daftar waktu dalam hitungan menit akan menjadi daftar bilangan bulat yang bertambah. Angka pertama akan selalu 0 untuk posting awal, yang kami hitung sebagai hasil edit.
Kasus uji:
[0]
[0,3,5,7]
[0,3,4,7,9,10,11,12]
[0,30,120]
[0,4,8,12,16]
[0,4,8,12,16,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
[0,5,10,15,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
[0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30]
Output:
1
2
3
3
3
3
4
5
5
6
Untuk kemudahan penyalinan, berikut adalah input, output, dan pasangan input / output:
[[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, 30, 120], [0, 4, 8, 12, 16], [0, 4, 8, 12, 16, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [0, 5, 10, 15, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30]]
[1, 2, 3, 3, 3, 3, 4, 5, 5, 6]
[([0], 1), ([0, 3, 5, 7], 2), ([0, 3, 4, 7, 9, 10, 11, 12], 3), ([0, 30, 120], 3), ([0, 4, 8, 12, 16], 3), ([0, 4, 8, 12, 16, 20], 3), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 4), ([0, 5, 10, 15, 20], 5), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 5), ([0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30], 6)]
Papan peringkat:
code-golf
sequence
counting
subsequence
code-golf
arithmetic
code-golf
string
interpreter
code-golf
number
sequence
code-golf
quine
code-golf
sequence
code-golf
ascii-art
kolmogorov-complexity
alphabet
code-golf
kolmogorov-complexity
code-golf
string
code-golf
string
kolmogorov-complexity
Tidak
sumber
sumber
Jawaban:
JavaScript, 36 byte
Cobalah online!
Bagaimana itu bekerja
Dalam setiap panggilan rekursif kami menghapus semua elemen dari array yang berjarak lebih dari 4 menit dari elemen pertama.
Ada sedikit trik dengan nama variabel
$
. Pemeriksaan$>f
pertama-tama mengubah array menjadi string dan kemudian membandingkannya dengan representasi string dari fungsif
dan kemudian membandingkannya secara leksikografis. Karakter pertama array yang diuraikan adalah angka dan karenanya hanya nama variabel satu karakter yang indeks ascii lebih kecil dari indeks semua digit$
. Mengganti$
dengan nama variabel lain akan selalu kembalifalse
.sumber
Mathematica,
46403733 bytePenjelasan
Setel
i
ke1
danj
ke0
.Peta ke semua elemen input ...
Jika
(element) - j < 5
salah, maka kenaikani
dan aturj
ke elemen (evaluasi hubung singkat).Keluaran
i
.sumber
Sekam , 8 byte
Cobalah online!
Penjelasan
sumber
Python 2 , 58 byte
Cobalah online!
49 byte
Menggunakan metode rekursif yang ditunjukkan dalam solusi @ ThePirateBay .
Cobalah online!
sumber
and 1+f(...)
dapat diganti olehand-~f(...)
untuk 49 bytex=a[:1]
sama denganx=[0]
, karena pertanyaan secara eksplisit menyatakan bahwa elemen pertama selalu0
( 62 byte )J , 20 byte
Cobalah online!
Penjelasan
sumber
MATLAB, 34 byte
Fungsi anonim yang menginput array dan menghasilkan angka.
Ini menggunakan
uniquetol
fungsi, khususnya bentuknyay = uniquetol(x, t)
, yang memberikany
elemen unik berisix
toleransit
. Dengan demikian, fungsi tersebut tampaknya mengikuti pendekatan "malas": mengurutkanx
, memilih entri pertama, dan terus melewatkan entri selama mereka berada dalam toleransi terhadap entri yang dipilih terbaru. Itulah yang dibutuhkan di sini.The
uniquetol
fungsi otomatis skala toleransi ditentukan oleh nilai absolut maksimum dalama
. Inilah mengapa kita perlu pembagian di sini.x+1
digunakan alih-alihx
untuk menghindari pembagian oleh 0.Verifikasi kasus uji:
sumber
uniquetol
... Diperkenalkan pada R2015a . Saya punya R2014b :( Jawaban yang bagus :)05AB1E ,
201918151411 bytePenjelasan:
Cobalah online!
Edit
sumber
¼4¹vDy‹i¼y4+}}¾
v®y‹iy4+©\¼
Sekam, 6 byte
Cobalah online!
sumber
ü
pekerjaan seperti itu! Itu sangat berguna.ġ
tapi tidak bekerja, sedangkan HaskellgroupBy
karya:length.groupBy((>).(+5))
. Kemudian saya menemukanü
yang juga mengarah ke Haskell setara pendek:nubBy
.Haskell ,
3130 byteCobalah online!
Disimpan 1 byte berkat Zgarb
sumber
z-4>x
harus menyimpan byte.05AB1E , 14 byte
Cobalah online!
sumber
æ
untuk superset, itu trik hebat!æ
berarti "powerset".MATL ,
1312 byteCobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Pyth , 14 byte
Ini adalah fungsi rekursif. Sebut dengan
y[0 1 2 3 4 5 6 7 8)
, di mana[...)
daftar Anda.Atau, Coba di sini! atau Verifikasi semua kasus uji.
Penjelasan
Ini kira-kira setara dengan solusi Python. Terjemahan akan memberikan hasil sebagai berikut:
Rincian Kode
sumber
.U
. Saran dipersilahkanJava 8,
7861605956 bytePort of @ JungHwanMin menjawab
Cobalah online!
sumber
a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}
C # .NET, 63 byte
Penjelasan:
Coba di sini.
sumber
Perl 5 , 54 byte
52 byte kode +2 untuk
-ap
Cobalah online!
sumber
Pyth, 25 byte
Coba di sini: http://pyth.herokuapp.com
sumber
Proton , 40 byte
Sangat terinspirasi oleh solusi Python .
Cobalah online!
sumber
Ly , 29 byte
Cobalah online!
Butuh waktu lama untuk sampai ke sini.
sumber
Retina ,
3226 byteCobalah online! Penjelasan:
Konversikan ke unary, tetapi tambahkan 1, karena 0 adalah konsep yang rumit di Retina.
Hitung jumlah suntingan, tetapi sertakan semua suntingan rahmat di setiap kecocokan.
sumber
Kotlin, 52 byte
Posting sebagai fungsi, jika ini tidak dapat diterima saya akan mengubahnya menjadi metode
pengajuan
Yg diperindahkan
Uji
TryItOnline
sumber
PowerShell , 74 byte
Solusi berulang. Panjang karena fenceposting pada
for
loop membutuhkan pemeriksaan tambahan di akhir. Saran bermain golf diterima.Kami mengambil input
$args[0]
sebagai array literal, lepaskan elemen pertama menjadi$x
dan sisanya menjadi$y
. Lalu, selama masih ada elemen$y
, kita loop.Setiap iterasi, kami memeriksa apakah cap waktu saat
$x
ini5
atau lebih jauh dari$l
cap waktu edit ast. Jika demikian, kami menambah penghitung kami$i++
dan mengatur stempel waktu kami menjadi terkini. Kemudian, pada iterasi dari loop, kita lepaskan elemen berikutnya$x
dan biarkan sisanya masuk$y
.Setelah kami keluar dari loop, kami menampilkan
$i
, plus1
untuk pengeditan awal, ditambah apakah stempel waktu akhir lebih dari lima dari pengeditan terakhir (dengan nilai Boolean secara implisit dilemparkan ke integer). Hasil itu ditinggalkan di jalur pipa dan hasilnya tersirat.Cobalah online!
sumber
R , 52 byte
Cobalah online!
Fungsi anonim sederhana yang secara iteratif menghilangkan elemen dari daftar yang berjarak kurang dari 5 dari elemen pertama hingga daftar kosong, lalu mengembalikan penghitung.
sumber
Clojure, 53 byte
Ini melacak "edit waktu mulai", dan kemudian mengembalikan hitungan berbeda mereka.
sumber
Japt , 14 byte
Cobalah
Penjelasan
Input array secara implisit
U
Dapatkan panjangnya
U
.Logis AND (
&&
) - hanya jalankan yang berikut jikaÊ
benar (bukan nol).Panggilan rekursif.
Saring (
f
)U
dengan melewatkan setiap elemen melalui suatu fungsi.Dapatkan perbedaan (
a
) antara elemen saat ini dan elemen pertama (g
) dariU
.Lebih besar dari 4?
Tambah
1
.Output implisit bilangan bulat yang dihasilkan.
sumber
Jelly , 11 byte
Cobalah online!
Penjelasan
12 byte
Cobalah online!
Penjelasan
sumber