Mungkin tantangan kode-golf sederhana. Diberikan 2 bilangan bulat positif m
dan n
, buat daftar n
nilai yang bilangan bulat positif yang jumlahnya sama dengan angka m
. Semua nilai dalam output adalah nilai yang sama atau selisihnya tepat 1.
Contohnya
Sebagai contoh
m=6
dann=3
akan menjadi2, 2, 2
m=7
dann=3
akan menjadi2, 2, 3
atau2, 3, 2
atau3, 2, 2
m=7
dann=2
akan menjadi3, 4
atau4, 3
m=7
dann=1
akan menjadi7
m=7
dann=8
akan menghasilkan kesalahan karena jumlah 8 bilangan bulat positif tidak boleh 7.m=10
dann=4
akan menjadi3, 3, 2, 2
atau permutasi lainnya
Aturan
- Baik input dan output hanya tentang bilangan bulat positif.
- Semua nilai dalam output adalah nilai yang sama atau selisihnya tepat 1.
- Urutan nilai dalam daftar tidak penting.
- Jumlah nilai dalam daftar sama dengan
m
. - Ketika tidak bisa dipecahkan, hasilkan kesalahan atau nilai salah (dalam kasus m = 7 dan n = 8 misalnya).
- Sebagai hasil dari aturan lain
m=8
dann=3
akan menghasilkan permutasi salah satu dari3, 3, 2
(tidak2, 2, 4
)
Pemenang
Ini adalah kode-golf, sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
float a = -0f, b = 0f; System.out.println(a == b); System.out.println(a + "," + b);
... menghasilkantrue
dan-0.0,0.0
. Lihat, 0 positif dan 0 negatif jelas dua angka yang berbeda ... pelaksanaannya berkata begitu!Jawaban:
Gaia , 4 byte
Ada hampir hanya built-in untuk ini ...
Penjelasan
sumber
Python 2 ,
4843 bytePengembalian
0
kesalahan.Cobalah online!
41 byte (dengan trik @ xnor)
Melempar
NameError
kesalahan.Cobalah online!
sumber
Mathematica, 33 byte
memasukkan
keluaran
output Salah ketika tidak bisa dipecahkan
sumber
MATL , 7 byte
Ketika tidak ada solusi output adalah array yang berisi setidaknya satu nol, yang falsy di MATL.
Cobalah online!
Penjelasan
Pertimbangkan input
m = 10
dann = 4
.sumber
Haskell , 30 byte
Cobalah online!
sumber
Arang , 15 byte setelah menerapkan NDD 1
Cobalah online!
Tidak menghasilkan apa-apa jika tidak ada solusi. Tautan ke versi verbose .
1 NDD = Pengembangan Berbasis Neil.
Jawaban saya sebelumnya:
Arang ,
32 27 2420 byteCobalah online!
Tidak menghasilkan apa-apa jika tidak ada solusi. Tautan ke versi verbose .
Tentu saja, saya tidak bisa bermain golf tanpa bantuan Neil.
sumber
Cast
operator berfungsi untuk beberapa alasan, tapi ini bukan algoritma yang ideal ... Saya punya solusi 16-byte.Cast
berfungsi pada daftar saya turun ke 11 byte ...Map
, bagaimana bisa bekerja ??Map
seperti versi ekspresifor
, turun menggunakan variabel loop yang sama. Jadi, dalam contoh Anda, alih-alih mendorong ekspresi ke daftar setiap kali,Map
secara otomatis mengumpulkannya dan mengevaluasi ke daftar hasil.R , 33 byte
Port jawaban Octaf Luis Mendo . Sangat menyedihkan bahwa ini hampir 50% lebih pendek dari jawaban saya sebelumnya.
Cobalah online!
jawaban sebelumnya, 63 byte:
Fungsi anonim yang mengambil dua argumen (wajib)
m
dann
, dan dua yang opsional untuk tujuan bermain golf. Mengembalikan vektor dalam urutan yang meningkat. Untuk kegagalan, nilai pertama adalah0
, yaitu falsey dalam R, sejakif
hanya menggunakan nilai pertama dari vektor (dengan peringatan).Ini pada dasarnya setara dengan fungsi berikut:
Cobalah online!
sumber
pryr::f(diff(trunc(0:n*m/n)))
bekerja dan lebih pendek!Jelly ,
76 byteCobalah online! Tidak menghasilkan apa-apa untuk falsy.
Bagaimana itu bekerja
sumber
TI-Basic, 23 byte
Mengembalikan ERR: DIVIDE OLEH 0 pada kesalahan
sumber
Oktaf , 24 byte
Kode mendefinisikan fungsi anonim. Outputnya adalah array numerik (vektor baris). Ketika tidak ada array ini mengandung setidaknya satu nol, yang falsy di Octave.
Cobalah online!
Penjelasan
0:m/n:m
menghasilkan arrayn+1
nilai dari0
hinggam
dengan langkahm/n
.fix
putaran setiap entri menuju0
, dandiff
menghitung perbedaan berturut-turut.Sebagai contoh, di sini adalah semua hasil antara untuk
m = 7
,n = 3
:sumber
Haskell ,
938988878671 byteCobalah online!
Penjelasan
Fungsi utama di sini adalah
e
.e
akan mengambil daftar dan pada dasarnya menjalankan pin bergulir sepanjang dari kiri ke kanan. Meskipun ada elemen dalam daftar yang lebih besar dari tetangganya ke kanan, kami akan memindahkan satu dari itu ke kanan.Sekarang yang harus kita lakukan adalah memberi makan fungsi ini daftar yang cukup miring dan memungkinkannya untuk melakukan keajaiban. Daftar yang akan kita pilih hanya
m
diikuti olehn-1
nol. Karena itu mudah dibuat.Hal terakhir yang perlu kita lakukan adalah memastikan bahwa kasus kesalahan ditangani. Untuk ini kami hanya melempar
Non-exhaustive patterns in function
kesalahan selamam>n
.sumber
error[]
dengan tidak dengan pola non-lengkap sebagai gantinya:m!n|m>n=e$m:replicate(n-1)0
.(0<$[1..n-1])
lebih pendek darireplicate(n-1)0
.C # (.NET Core) ,
868271 bytemelempar kesalahan untuk input yang tidak valid.
Cobalah online!
-4 byte terima kasih TheLethalCoder
-11 byte terima kasih kepada OlivierGrégoire
sumber
a=>b=>
di awal.using System.Collections.Generic
jika saya mengembalikanIEnumerable<int>
?IEnumerable<int>
akan berada dalam definisi fungsi Anda tidak perlu memasukkanusing
.Haskell, 48 byte
Mulai dengan daftar
n
nol. Ulangim
waktu: ambil elemen pertama, tambahkan satu dan letakkan di akhir daftar.Gagal dengan kesalahan kecocokan pola jika
n < m
.Cobalah online!
sumber
Braingolf , 30 byte
Cobalah online!
Mengambil input dalam urutan terbalik (
n
merupakan input pertama,m
kedua)Dibagi
m
dengann
, menduplikasi hasiln
kali, lalu lewati dan tambah satu per satum % n
kalisumber
Batch, 71 byte
cmd/cset/a
tidak menghasilkan pemisah apa pun, jadi saya harus menggunakanecho(
((
menghindari pencetakanECHO is on.
).sumber
PHP> = 7.1, 62 byte
PHP Sandbox Online
sumber
Python 2 , 41 byte
Cobalah online!
NameError
ketika tidak mungkin.Python 2 , 43 byte
Cobalah online!
ValueError
ketika tidak mungkin.sumber
NameError
untuk keluar melalui kesalahanJavascript (ES6),
57 56 5341 byteJawab sekarang termasuk cara yang lebih cerdas untuk menciptakan nilai-nilai. Terima kasih @Neil
Pemakaian
Sejarah
Tambang pertama
Kemudian menambahkan operator spread dan sintaks currying tip oleh @Arnauld
sumber
_=>m++/n|0
menghemat banyak byte.Java (OpenJDK 8) ,
8073636159 byteCobalah online!
Catatan, untuk tujuan kari,
m
dann
dibalik.sumber
Pyth , 11 byte
Cobalah online!
sumber
Pyth , 13 byte
Cobalah online! Keluaran
0
pada kesalahan.Kecurangan, 6 byte
Cobalah online! Array berisi
0
kesalahan saat. Sayangnya ini bukan kepalsuan di Pyth .Penjelasan
sumber
CJam ,
1312 byteCobalah online!
Ini adalah blok anonim yang menerima input sebagai
n m
pada stack. Itu akan menjadi jawaban yang baik, tetapi persyaratan penanganan kesalahan benar-benar membunuhnya.Kesalahan dengan pembagian-oleh-nol saat itu tidak mungkin dipecahkan.
Penjelasan
Jika persyaratan penanganan kesalahan diangkat, ini dapat dipersingkat menjadi 7 byte, yang merupakan penurunan lebih dari 40%:
sumber