Tulis program atau fungsi yang mengambil array bilangan bulat non-negatif sebagai input dan output satu set vektor / array dengan elemen-elemen dari array input secara berurutan, dibagi sehingga setiap vektor berjumlah hingga 15. Jika jumlah pertama Elemen N tidak "menekan 15", maka angka yang berhasil melewati 15 harus terpotong, dan sisanya akan menjadi elemen pertama dari vektor berikutnya. Ini berlangsung hingga Anda mencapai akhir array input. Jika jumlah vektor final kurang dari 15, maka angka harus ditambahkan di akhir untuk membuat jumlah naik.
Saya pikir aturannya lebih mudah dipahami dengan melihat contoh-contohnya:
Input: 3 7 5 10
Output:
3 7 5 <- Sum is 15
10 5 <- 5 is added to make the sum 15
Input: 2 4 5 9 2 3 5 0 2 4 5 0 3
Output:
2 4 5 4 <- Sum 15. 9 is split in two.
5 2 3 5 <- The first 5 is the remainder of 9
0 2 4 5 0 3 1 <- The last number is added to make the sum 15
Input: 1 1 1
Output:
1 1 1 12 <- The number 12 is added to make the sum 15
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Output:
1 2 3 4 5
6 7 2 <- 2 is the first part of 8
6 9 <- 6 is the remainder of 8
10 5 <- 5 is first part of 11
6 9 <- 6 is remainder of 11. 9 is first part of 12
3 12 <- 3 is remainder of 12. 12 is first part of 13
1 14 <- 1 is remainder of 13. 14 is 14
15
15 <- 15 is first part of 16
1 14 <- 1 is remainder of 16. 14 is first part of 17
3 12 <- 3 is remainder of 17. 12 is added to make the sum 15
Input: 20 20
Output:
15
5 10 <- 5 is remainder from the first 20
10 5 <- 10 is remainder from second 20. 5 is added to make the sum = 15.
Baik input dan format output adalah opsional. Apapun yang terbaik dalam bahasa Anda.
Kode terpendek dalam byte menang.
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sumber
[[3, 7, 5], [10, 5]]
output yang valid untuk kasus uji pertama?Input: 100 Output: 15; 15; 15; 15; 15; 15; 10 5
Jawaban:
Pyth, 37 byte
Dijelaskan
Ini adalah omong kosong pertama saya, jadi silakan menyarankan perbaikan.
Contoh:
Memasukkan
Keluaran
Catatan: Terima kasih banyak kepada Isaacg untuk beberapa saran pengurangan ukuran dan menciptakan pyth di tempat pertama! Harap beri komentar di bawah :)
sumber
.?
bukanE
, tapi saya lupa memperbarui dokumen. Maaf soal itu.=Z+ZN
dan=+ZN
sama. Ini sedikit seperti Python+=
. Likewiese,=Z-ZK
->=-ZK
. Juga, Anda tidak perlu)
pada akhirnya - itu diisi secara otomatis. Akhirnya,FNQ
danVQ
sama saja.I>Z0
denganIZ
-Z
tidak boleh negatif, jadi Anda benar-benar hanya memeriksa jikaZ
tidak nol, dan nol adalah palsu, sementara semua angka lainnya adalah benar.Java -
229200192181172170168 byteSudah dimulai, bukan untuk menang tapi untuk bersenang-senang :)
Setiap saran dipersilahkan.
Disimpan 8 byte berkat @ThomasKwa
Disimpan 20 byte berkat @corsiKa
Disimpan 2 byte berkat @Ypnypn
Disimpan 2 byte berkat @ user902383
170 byte
172 byte
181 byte
192 byte
200 byte
229 byte
sumber
Python 3 - 1̶7̶7̶ 1̶3̶8̶ 1̶6̶6̶ 1̶3̶3̶ 113
Sunting 5 Benar-benar golf berkat @poke * baris yang dihapus dll
Edit 4 Cetak alias, dan ganti a = dengan a - = untuk menghemat satu byte. Terima kasih untuk @poke dan @elzell. Juga memindahkan eval input ke dalam untuk loop untuk menyimpan 2 byte dari tugas
Sunting 3 Ditemukan penghematan dalam OO berbeda di dalam detik jika
Edit 2 Bug yang diperbaiki
Sunting 1 Mengubah input menjadi dalam bentuk '[1,2,3,4,5 ...]', dan menerapkan dua komentar pertama, terima kasih banyak kepada @Morgan Thrapp
Poster pertama kali di sini. Input adalah baris perintah dengan entri yang dipisahkan oleh spasi, output adalah entri per baris, dengan baris baru di antara pengelompokan.
sumber
print
begitu sering, Anda harus menyimpannya sebagai variabel:p=print
. Menghemat 14 karakter lagi.if s>i:s-=i;p(e-s);p();e=s
untuk yang kedua. Itu menghemat Anda baris istirahat dan karakter lekukan.Haskell,
126107102100 byteContoh penggunaan:
(#[]).(++[14]) $ [1..17]
->[[1,2,3,4,5],[6,7,2],[6,9],[10,5],[6,9],[3,12],[1,14],[15],[15],[1,14],[3,12]]
Sunting: @Stewie Griffin membantu saya menghemat 19 byte. Terima kasih!
sumber
CJam, 39 byte
Uji di sini.
Ini terasa sangat suboptimal, tetapi sejauh ini semua upaya saya pada solusi yang lebih pendek telah digagalkan oleh adanya nol di input.
sumber
Python2 didukung oleh RegEx :
158155 byteDibuat dengan python dengan cinta dan hampir tanpa matematika.
Atau Matematika Regex jika Anda mau, matematika unary.
Matematika 'nyata' hanya digunakan untuk 'memperbaiki' persyaratan terakhir:
Codegolfed:
Cara ini bekerja adalah dengan mengubah setiap angka N menjadi string dengan panjang N ( x dipilih sebagai karakter untuk mengisi string) dan menggabungkan mereka semua ke dalam ruang yang terpisah
string
. String yang dihasilkan dibagi melalui RegEx BLACK MAGIC menjadi sesuatu seperti:untuk input seperti:
f([1, 2, 3, 4, 5, 6, 7, 8, 10])
Itu kemudian dipecah lagi, dan panjang berturut-turut
x
digunakan untuk membuat angka lagi, semuanya dikemas dengan baik dalam pemahaman daftar.Tidak Disatukan:
Keluaran:
Catatan: tidak ada cukup sihir untuk 0s sehingga entri ini didiskualifikasi
sumber
Serius, 88 byte
Cobalah online
Ini jawaban serius pertamaku! Sekarang saya sangat akrab dengan semua kekurangan bahasa!
Hex Dump:
Penjelasan:
sumber
Javascript,
138128 byteDengan spasi putih:
Contoh:
Tetapkan fungsi ke variabel
Kemudian evaluasi seperti ini:
Riwayat revisi:
12/3/2015 00:02 - Terima kasih kepada user81655 (beri +1 pada komentar) untuk peningkatan 10 byte
12/2/2015 21:44 - Beralih untuk menggunakan gaya fungsional agar mengurangi ukuran.
sumber
f=
tidak diperlukan sesuai dengan aturan situs, menghapus tanda kurung dari(i)
, dikelilingi denganeval
sehingga Anda tidak perlureturn
atau tanda kurung dan gantiif
dengan ternary sehinggao
dikembalikan dan diubah'\n'
menjadi`\n`
, gabungt+=...
dengant>=m
untuk menghapus untuk kurung loop. Inilah solusi Anda dalam 127 byte dengan semua peningkatan ini:i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")
o+
di akhir baris. Hapuso+=z
dan tulis lagi dan itu akan berhasil. : P\n
membuat perbedaan`\n`
? Ini tidak akan berfungsi tanpanya karena kode di dalam"..."
karenaeval
.Python 3: 139 byte
Pendekatan yang sedikit berbeda dari jawaban yang lain. Menghasilkan keluaran aktual dari pertanyaan karena saya awalnya berasumsi bahwa itu adalah persyaratan.
Contoh penggunaan:
sumber
Perl, 86 byte
Menghitung shebang sebagai tiga, input diambil dari stdin, spasi dipisahkan.
Contoh Penggunaan
sumber
R, 155 byte
Dengan indent dan linebreak:
Pemakaian:
sumber
Python 2, 117 byte
Mengambil input sebagai daftar:
sumber
Perl, 76 byte
Termasuk +3 untuk
-p
(biasanya +1, tetapi +3 untuk bermain adil dengan solusi perl lainnya)Jalankan dengan input pada STDIN (baris akhir baru pada input adalah opsional, tetapi HARUS absen untuk input kosong)
sum15.pl
:Lihat bu, tidak ada perhitungan apa pun ...
sumber
0
s agak rumit dalam solusi ini (diwakili oleh ruang ekstra) dan saya harus sangat berhati-hati untuk menangani ruang dengan benar agar jumlah0
s benar. Secara khusus pertimbangkan input di mana jumlah parsial persis 15, seperti1 14 2 13
. Cobalah mereka tanpa `?` Dan lihat apa yang terjadiJawa -
158155 byteVersi Lambda dari https://codegolf.stackexchange.com/a/65590/46866 oleh yassin-hajaj , Tidak yakin apakah pengiriman yang valid, tetapi tidak memiliki cukup perwakilan untuk menambahkan komentar pada jawaban yang ditautkan. Dihitung menggunakan http://meta.codegolf.stackexchange.com/questions/4944/byte-counter-snippet
158 Bytes
Tidak disatukan
dapat digunakan seperti
sumber