Berikan kredit kepada siapa kredit harus dibayar .
Tujuan Mengingat integer N > 0
, keluar bilangan bulat terkecil A
, B
dan C
sehingga:
- Semua
A
,B
, danC
secara ketat lebih besar dariN
; 2
membagiA
;3
membagiB
;- dan
4
membagiC
.
Ini adalah kode-golf, jadi jawaban tersingkat dalam byte menang. Anda dapat menggunakan bahasa yang dibuat / diperbarui setelah tantangan ini, tetapi ini sangat tidak bersaing.
Uji kasus
N => A, B, C
1 => 2, 3, 4
4 => 6, 6, 8
43 => 44, 45, 44
123 => 124, 126, 124
420 => 422, 423, 424
31415 => 31416, 31416, 31416
1081177 => 1081178, 1081179, 1081180
C B A
) jika itu ditentukan dengan jelas dalam jawabannya?Jawaban:
Jelly , 8 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python 2, 32 byte
Aritmatika bit untuk 2 dan 4, aritmatika modular untuk 3.
Saya menemukan empat ekspresi 7-byte untuk kelipatan di
k
atasn
tetapi tidak ada yang lebih pendek:Apa saja memberi 34 byte saat salinan untuk
k=2,3,4
, dan 33 byte jika digabungkan:Tapi, 2 dan 4 adalah kekuatan 2 yang memungkinkan sedikit trik untuk nol 1 atau 2 byte terakhir.
Ini memberikan 6 byte (bukan 7) untuk mendapatkan kelipatan berikutnya, untuk keseluruhan 32 byte, mengalahkan
for k in 2,3,4
.Sayangnya, yang tampak menjanjikan
n|1+1
dann|3+1
penambahan sudah dilakukan terlebih dahulu, sehingga penambahan output membutuhkan tanda kurung.sumber
n+k-n%k
.n&3+1
penambahannya juga dulu?Julia, 16 byte
Cobalah online!
sumber
MATL,
15 109 byteCobalah online!
Penjelasan:
sumber
5M
(clipboard otomatis input fungsi) bukan yang kedua2:4
.MATL, 8 byte
Menggunakan algoritme Denis 'Jelly, saya terkejut karena panjangnya sama!
Cobalah online , atau verifikasi semua kasus uji .
sumber
Matlab, 33 byte
Pendekatan lain yang sedikit berbeda
sumber
05AB1E , 8 byte
Kode:
Cobalah online! .
sumber
±D2xŸ%α
(2xŸ
ini hanya sebuah alternatif untuk Anda3L>
; dan dua alternatif byte-sama lainnya bisaƵ…S
atau4L¦
).Ruby, 27 byte
Peta 2, 3, dan 4 untuk kelipatan berikutnya di atas
n
.sumber
CJam, 15 byte
Cobalah online! atau verifikasi semua kasus uji .
sumber
Pyke,
11 98 byteCoba di sini!
sumber
Mathematica, 21 byte
Ini adalah fungsi tanpa nama yang mengambil integer tunggal sebagai input dan mengembalikan daftar kelipatan.
The
Ceiling
fungsi mengambil parameter opsional kedua yang mengatakan itu untuk membulatkan ke beberapa berikutnya jumlah yang diberikan. Untungnya, ia juga secara otomatis memasukkan argumen kedua sehingga kami dapat memberikan daftar nilai dan pada gilirannya kami akan mendapatkan kelipatan untuk semua itu.sumber
Oktaf, 20 byte
Contoh:
Perlu dicatat bahwa kami dapat melakukan ini hingga 9 tanpa menambahkan byte tambahan:
Output (2520 adalah bilangan bulat positif terkecil yang habis dibagi oleh semua angka digit tunggal):
sumber
Haskell, 27 byte
sumber
Labirin , 19 byte
Cobalah online!
Ini menampilkan hasil dalam urutan yang
C, B, A
dipisahkan oleh umpan baris.Penjelasan
Seperti biasa, primer Labirin pendek:
Meskipun dua no-ops (
"
) yang membuat tata letak tampak agak boros, saya cukup senang dengan solusi ini, karena aliran kontrolnya sebenarnya cukup halus.IP dimulai di sudut kiri atas di sebelah
:
kanan. Ini akan segera menemui jalan buntu?
dan berbalik, sehingga program sebenarnya dimulai dengan potongan kode linier ini:Itu berarti kita sekarang punya tiga salinan dari
n
tumpukan utama, tetapi kedalamannya4
. Itu nyaman karena itu berarti kita dapat menumpuk kedalaman untuk mengambil pengganda saat ini sambil bekerja melalui salinan input.IP sekarang memasuki loop 3x3 (searah jarum jam). Perhatikan bahwa
#
, yang mendorong kedalaman tumpukan, akan selalu mendorong nilai positif sehingga kita tahu IP akan selalu berbelok ke timur pada saat ini.Badan loop adalah ini:
Setelah loop dilalui (hingga
!
) tiga kali, semua salinann
digunakan dan nol di bawahnya terungkap. Karena"
di bagian bawah (yang jika tidak tampak cukup berguna) posisi ini adalah persimpangan. Itu berarti dengan nol di atas tumpukan, IP mencoba untuk terus lurus ke depan (barat), tetapi karena ada dinding itu benar-benar membuat berbelok 180 derajat dan bergerak kembali ke timur seolah-olah itu telah menemui jalan buntu.Akibatnya, bit berikut sekarang dieksekusi:
sumber
Matlab, 50 byte
sumber
2:4
bukan[2 3 4]
.Pyth,
1110 byteSuite uji.
Terima kasih kepada Dennis untuk satu byte!
sumber
JavaScript (ES6), 26 byte
Menariknya, jawaban Ruby @ KevinLau atau @ xnor's Python menghasilkan panjang yang sama:
Saya memiliki sedikit preferensi untuk port jawaban Ruby karena berfungsi hingga 2 53 -3 sementara port jawaban Python hanya bekerja hingga 2 31 -5.
sumber
)
->]
Seperti yang saya pikirkanC,
5046 byteTerima kasih kepada Neil dan nwellnhof karena telah menghemat 4 byte!
Sangat panjang. Saya merasa ada sedikit pergantian bit di sini yang belum saya ketahui, tetapi saya belum menemukannya. Mengembalikan pointer ke array yang menahan tiga elemen. Program lengkap:
sumber
n + i - n % i++
menghasilkan perilaku yang tidak terdefinisi?s/a[i-2]/*a++/
untuk menyimpan dua byte.f(a,n,i)int*a;{for(i=1;++i<5;)*a++=n+i-n%i;}
Reng, 40 byte
1: init
i1+#i
set input ke1 + input
; ini karena kita harus bekerja pada angka yang benar-benar lebih besar daripada input.234
menginisialisasi rekaman dengan nilai iterasi kami, dan1ø
melompat ke awal baris berikutnya.2a: lingkaran
i(
menempatkan input di STOS, dan2[
membuat tumpukan baru dengan 2 elemen teratas.¤
menduplikasi stack, dan,
melakukan modulus. Jika ada sisa,q!^
keluar dari loop untuk menuju ke (b). Kalau tidak, kita boleh mencetak.$
menghilangkan hal-hal ekstra,]
menutup tumpukan, danæ
mencetaknya dengan baik.l0wq!~
berakhir jika tumpukan berisi nol anggota.2b: loop lainnya
(1+)
menambahkan 1 ke STOS, dan31j
melompat ke bagian loop yang tidak mengambil barang dari tumpukan. Dan untung.Ruang kosong ekstra itu benar-benar mengganggu saya. Ambil GIF.
sumber
Retina,
624326 byte17 byte berkat @Martin Büttner .
(Perhatikan baris tambahan.)
Cobalah online!
Input in unary in
1
, output in unary in1
dipisahkan oleh baris baru.Versi 43 byte sebelumnya:
Cobalah online!
Input di unary, output di unary dipisahkan oleh semi-colon (
;
).Versi 62-byte sebelumnya:
Cobalah online!
Input di unary, output di unary dipisahkan oleh semi-colon (
;
).sumber
Oktaf,
272220 byteMATLAB dan Oktaf:
Lebih baik (solusinya setara, tetapi yang satu mungkin lebih baik dari yang lain ketika di-pegolf lebih lanjut), MATLAB dan Oktaf:
Hanya di Oktaf:
Coba di sini .
sumber
Minkolang 0,15 , 17 byte
Coba di sini!
Penjelasan
sumber
> <> , 31 byte
Diharapkan
N
untuk hadir di tumpukan di awal program. Cobalah online!sumber
Mathematica 28 byte
{2, 3, 4}
{6, 6, 8}
{44, 45, 44}
{124, 126, 124}
{422, 423, 424}
{31416, 31416, 31416}
{1081178, 1081179, 1081180}
Kasus umum menghasilkan jawaban umum:
{2 + r - Mod [r, 2], 3 + r - Mod [r, 3], 4 + r - Mod [r, 4]}
sumber
R,
3026 byte(Mengurangi 4 byte berkat @Neil)
Ini (mirip dengan sisa jawaban saya kira) menambahkan 2: 4 ke input dan mengurangi sisanya setelah menjalankan modulo pada angka yang sama.
sumber
N+2:4-N%%2:4
?UGL ,
51312524 byteCobalah online!
Versi 25 byte sebelumnya:
Cobalah online!
Versi 31 byte sebelumnya:
Cobalah online!
Versi 51 byte sebelumnya:
Cobalah online!
sumber
Java
7057sumber
=
di sekitarint a = new Integer(z[0]);
Golfscript, 22 byte
Cobalah online!
Alternatif solusi 22-byte:
Cobalah online!
sumber
Sebenarnya, 22 byte
Cobalah online!
Fakta menyenangkan: 3 bug dalam juru bahasa Actually ditemukan dan diperbaiki saat menulis program ini.
Fakta yang tidak terlalu menyenangkan: Ketiga bug itu mencegah solusi ini menjadi lebih pendek.
Penjelasan:
sumber
J, 18 byte
Cobalah online!
sumber