Kuda laut, tentu saja, butuh sepatu. Namun, kuda laut, hanya memiliki satu ekor, hanya membutuhkan satu sepatu. Sayangnya, sepatu hanya datang berpasangan. Uang ketat untuk pemerintah kuda laut, sehingga mereka perlu membeli pasangan sesedikit mungkin. Setiap kuda laut memiliki ukuran sepatu x di mana x adalah bilangan bulat positif. Namun, kuda laut dapat mengenakan sepatu dengan ukuran x - 1 atau x +1 jika perlu.
Tugas Anda adalah menampilkan jumlah pasangan minimum yang harus dibeli pemerintah kuda laut untuk mengenakan sepatu di semua kuda laut mereka.
Anda dapat mengambil input apa pun yang Anda inginkan, celah standar, dll.
Karena ini adalah kode-golf , kode terpendek dalam byte menang.
Uji kasus
2 4 6 6 8 14 -> 4
2 1 3 1 1 -> 3
4 1 4 9 1 8 9 1 8 4 -> 6
1 2 3 5 7 8 10 12 -> 4
Jawaban:
05AB1E , 13 byte
Menggunakan pendekatan OP yang dijelaskan dalam komentar.
Cobalah online!
Penjelasan
sumber
Sekam ,
1514 byteMenggunakan algoritma serakah: urutkan dan pasangkan dari kiri. Cobalah online!
Terima kasih kepada Leo karena telah menghemat 1 byte.
Penjelasan
Ini adalah jawaban Sekam pertama yang digunakan
Γ
, fungsi untuk pola yang cocok dengan daftar. Dalam kasus penggunaan ini, jikaa
merupakan nilai dang
fungsi, makaΓag
sesuai dengan fungsi yangf
didefinisikan oleh cuplikan HaskellSaya mendefinisikan kasus dasar sebagai
a = 0
dandi mana
line0
mengacu pada seluruh baris. Dalam kode Husk,x
danxs
argumen implisit untuk fungsi lambda, danline0
adalah₀
. Daftar ini diurutkan lagi dalam setiap panggilan rekursif, tetapi itu tidak masalah dalam tantangan golf.sumber
Python 3 ,
696660 byte9 byte berkat xnor.
Cobalah online!
sumber
a.sort()
.lambda
:f=lambda a:a[1:a.sort()]and-~f(a[1+(a[1]-a[0]<3):])or len(a)
or[]<a
untuk menghemat 3 byteJelly ,
2018 byteCobalah online!
Fork dari jawaban Python saya .
sumber
IḢ<3+2⁸ṫß‘µLḊ?
(pada dasarnya saya tidak melihat alasan untuk melakukanṢ
sebelumnyaL
, danḊ
akan kembali[]
jika daftar jika panjang 1 atau 0, dan kemudian saya dapat menghapusµ
dariLµḊ?
)Ṣ
ke golf saya jika saya mengerti dengan benar.Python 2 , 49 byte
Cobalah online!
Berdasarkan solusi rekursif Leaky Nun .
Python 2 , 59 byte
Cobalah online!
Iterasi melalui ukuran
x
dalam urutan diurutkan. Mengingat ambang atasp
untuk ukuran saat ini untuk dipasangkan dengan yang sebelumnya. Jika demikian (x>p
), atur ulang ambang0
untuk membuatnya tidak mungkin untuk dipasangkan berikutnya. Jika tidak, tambahkan jumlah outputc
dan setel ambang berikutnyap
kex+2
.Ambang baru
p=(x>p)*(x+2)
adalah ekspresi kembung. Saya ingin mencari cara untuk mempersingkatnya.sumber
C #,
111108137102 byteIni tidak akan pernah menang, tetapi saya ingin menyelesaikan latihan:
Berkat komentar @ grabthefish, saya bisa mengemil beberapa byte lagi:
Mengikuti aturan C # khusus PC&G:
Menggunakan fungsi lambda:
sumber
Perl, 113 byte
Mengambil daftar argumen dari baris perintah (as
@ARGV
), dicetakSTDOUT
secara default.Di Seahorseville ...
Sebuah lingkungan adalah urutan tetangga ukuran sepatu. Saat disortir, masing-masing kuda laut memiliki tetangga langsung yang dapat berbagi ukuran sepatu yang sama. Mungkin ada beberapa tetangga di lingkungan dan tidak ada tetangga yang dapat berbeda nilainya dengan lebih dari dua:
mis.
3 3 4 5 5 6
adalah satu lingkungan, seperti2 4 6 6
, dan1 2 3 5 7 8 10 12
misalnya
1 1 1 4 5 6
berisi dua lingkungan:1 1 1
dan4 5 6
.Dasar dari algoritma
Ada dua jenis lingkungan:
Berukuran genap
Untuk ini,
n/2
pasangan selalu cukup:misalnya
3 3 4 5 5 6
membutuhkan tiga pasangan untuk3 3
,4 5
dan5 6
Berukuran aneh
Untuk ini,
ceil(n/2)
pasangan selalu cukup:misalnya
12 13 13 14 15
membutuhkan tiga pasang untuk12 13
,13 14
dan15
sendirian.Kode ungolf untuk menguji algoritma
Hasil Sampel
(Lingkungan terlampir
[ ]
)sumber
Mathematica, 67 byte
Coba di kotak pasir Wolfram .
sumber
UpTo
Perl, 103 byte
Mengambil daftar argumen dari baris perintah (as
@ARGV
), dicetakSTDOUT
secara default.Ini adalah pendekatan alternatif, berdasarkan pada hubungan berikut:
(Lihat jawaban ini untuk bagaimana lingkungan didefinisikan)
sumber
Javascript, 67 byte
Cuplikan kode contoh:
sumber