Urutan:
- Kita mulai dari
1
. - Kami pertama-tama menambahkan nilai 1-diindeks saat ini ke nomor sebelumnya dalam urutan.
- Kemudian kami menerapkan operasi matematika berikut jika berlaku untuk nilai saat ini:
- Dibagi oleh
2
? => Penambahan - Dibagi oleh
3
? => Pengurangan - Dibagi oleh
4
? => (Penambahan DAN) Multiply - Tidak bisa dibagi dengan tidak
2
,3
juga tidak4
? -> Lanjutkan dengan jumlah hasil saat ini
- Dibagi oleh
Keluaran:
Keluarkan 100 angka pertama dalam urutan ini:
1, 1, 21, 25, 30, 216, 223, 223, 2169, 2179, 2190, 2202, 2215, 2215, 2245, 2261, 2295, 2295, 2333, 2353, 2395, 2417, 56649, 56649, 56699, 56725, 1533033, 1533061, 1533090, 45993600, 45993631, 45993631, 1517792001, 1517792035, 1517792070, 1517792106, 1517792143, 1517792143, 1517792221, 1517792261, 1517792343, 1517792343, 1517792429, 1517792473, 1517792563, 1517792609, 71336257041, 71336257041, 71336257139, 71336257189, 3638149121841, 3638149121893, 3638149121946, 196460052588000, 196460052588055, 196460052588055, 11198222997525633, 11198222997525691, 11198222997525750, 11198222997525810, 11198222997525871, 11198222997525871, 11198222997525997, 11198222997526061, 11198222997526191, 11198222997526191, 11198222997526325, 11198222997526393, 11198222997526531, 11198222997526601, 795073832824398753, 795073832824398753, 795073832824398899, 795073832824398973, 59630537461829934225, 59630537461829934301, 59630537461829934378, 4651181922022734887568, 4651181922022734887647, 4651181922022734887647, 376745735683841525912529, 376745735683841525912611, 376745735683841525912694, 376745735683841525912778, 376745735683841525912863, 376745735683841525912863, 376745735683841525913037, 376745735683841525913125, 376745735683841525913303, 376745735683841525913303, 376745735683841525913485, 376745735683841525913577, 376745735683841525913763, 376745735683841525913857, 35790844889964944961834465, 35790844889964944961834465, 35790844889964944961834659, 35790844889964944961834757, 3543293644106529551221660545, 3543293644106529551221660645
Berikut adalah 10 angka pertama dalam urutan dengan penjelasan:
// Starting number of the sequence:
1
// 1 (previous number in the sequence)
// + 2 (current index in 1-indexed sequence)
// = 3 -> 3 - 2 (3 is divisible by 3, so we subtract the current index 2)
// = 1
1
// 1 (previous number in the sequence)
// + 3 (current index in 1-indexed sequence)
// = 4 -> 4 + 3 (4 is divisible by 2, so we first add the current index 3)
// = 7 -> 7 * 3 (and 4 is also divisible by 4, so we then also multiply the current index 3)
// = 21
21
// 21 (previous number in the sequence)
// + 4 (current index in 1-indexed sequence)
// = 25 (25 is not divisible by 2, 3 nor 4)
25
// 25 (previous number in the sequence)
// + 5 (current index in 1-indexed sequence)
// = 30 -> 30 + 5 (30 is divisible by 2, so we first add the current index 5)
// = 35 -> 35 - 5 (and 30 is also divisible by 3, so we then also subtract the current index 5)
// = 30
30
// 30 (previous number in the sequence)
// + 6 (current index in 1-indexed sequence)
// = 36 -> 36 + 6 (36 is divisible by 2, so we first add the current index 6)
// = 42 -> 42 - 6 (and 36 is also divisible by 3, so we then also subtract the current index 6)
// = 36 -> 36 * 6 (and 36 is also divisible by 4, so we then also multiply the current index 6)
// = 216
216
// 216 (previous number in the sequence)
// + 7 (current index in 1-indexed sequence)
// = 223 (223 is not divisible by 2, 3 nor 4)
223
// 223 (previous number in the sequence)
// + 8 (current index in 1-indexed sequence)
// = 231 -> 231 - 8 (231 is divisible by 3, so we subtract the current index 8)
// = 223
223
// 223 (previous number in the sequence)
// + 9 (current index in 1-indexed sequence)
// = 232 -> 232 + 9 (232 is divisible by 2, so we first add the current index 9)
// = 241 -> 241 * 9 (and 232 is also divisible by 4, so we then also multiply the current index 9)
// = 2169
2169
// 2169 (previous number in the sequence)
// + 10 (current index in 1-indexed sequence)
// 2179 (2179 is not divisible by 2, 3 nor 4)
2179
Aturan tantangan:
- Jika bahasa Anda tidak mendukung apa pun yang lebih besar dari 2 31 -1, Anda dapat melanjutkan urutan hingga maks itu (jadi 46 angka pertama, hingga - dan termasuk -
1,517,792,609
). - Format output fleksibel. Anda dapat mengembalikan array atau daftar, string yang dipisahkan dengan spasi, koma, dll. Panggilan Anda.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, tambahkan link dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
code-golf
sequence
number-theory
division
Kevin Cruijssen
sumber
sumber
Jawaban:
05AB1E ,
2423 byte-1 byte terima kasih kepada Kevin Crujissen
Cobalah online!
Penjelasan:
sumber
UX
dapat dihapus, tapi saya tidak bisa. Saya berakhir pada 24 byte juga karena itu dimulai pada0
bukan1
. Saya sekarang meningkatkannya sebelum sementara, tetapi kemudian kita harus mengulang101
kali bukan100
.. Ah well.UX
merusak pemandangan. Aku mencoba untuk menyingkirkan itu untuk sementara dan berakhir dengan sekelompok 24 dan 25 variasi:1тF=NÌ©+DÑ3L>Ãv®…-*+yè.V
,1тL>v=y+©3F®NÌÖiy…+-*Nè.V
... saya tidak mempertimbangkan menggunakan variabel counter, ini menarik.тF
alih-alihƵ0µ
. Saya sudah mengeditnya, terima kasih! (PS: harus benar-benar ada byte tunggal¼¾
...)¼¾
akan menyenangkan, walaupun jujur saja, saya hampir tidak pernah menggunakannya seperti itu. Single-byte builtin yang paling saya sukai saat ini adalah©®
variabel kedua yang tidak muncul. Mungkin mulai dari string kosong""
seperti yang Anda sebutkan dalam tantangan lain sebelumnya.R,
858279767270 byteungolfed:
Terima kasih kepada @rturnbull untuk menunjukkan bahwa saya dapat menggunakan
(!z%%3)
alih-alih(z%%3<1)
memeriksa moduli, dan bahwa definisiz
suatu terjadi ketika pertama kali digunakan.Bermain golf 3-4 karakter dengan menyalahgunakan ekstensi vektor: jawabannya awalnya dimulai
s=1:56...
tetapi kita tidak perlu melakukan itu, panjangnyas
akan diperpanjang sesuai kebutuhan.Disimpan 3 byte lebih banyak dengan mengganti kondisi terakhir dengan panggilan ke
"if"
fungsi (ya, itu fungsi yang tepat di R!)Disimpan 4 byte lebih banyak dengan mengganti
s
denganT
, yang merupakan builtin sama denganTRUE
yang juga sama dengan1
. Saya menyadarinya pada saat yang sama dengan @rturnbull (jujur!)Ini memang menderita beberapa masalah numerik setelah kami melebihi 2 ^ 52, tetapi tidak ada yang bisa saya lakukan tentang hal itu --- R hanya dapat menggunakan
double
tipe untuk angka yang lebih besar dari2^31-1
, tetapi mereka menyimpan bilangan bulat hingga 2 ^ 52 persis. Jadi, saya diizinkan untuk hanya menampilkan 56 syarat pertama (istilah terakhir yaitu "benar") yang menyimpan satu byte dari case 100-length.Inilah output dari versi 56-length:
sumber
1,517,792,609
). ", Tapi ini dari Tentu saja juga berlaku untuk nomor yang berbeda dari 32-bit. Jika R tidak dapat menangani sesuatu yang lebih besar, dari 56 angka pertama benar-benar baik-baik saja. Dan ya, jika Anda tahu itu tidak pernah bisa di atas 56, Anda dapat mengubah100
to56
untuk menyimpan byte.z%%2<1
(dan seterusnya)!z%%2
, menyalahgunakan konversi tipe implisit.!
tidak mengalahkan%%
, tetapi ternyata itu berhasil!T
dan menggunakannya di tempats
, memungkinkan Anda untuk menghapuss=1;
, menyimpan empat byte lagi. Dimungkinkan untuk melipat definisiz
menjadi definisis[i]
(yah,T[i]
sekarang), seperti:,T[i]=((z=i+T[i-1])+ ...
yang berarti bahwa Anda dapat kehilangan kurung keriting, menghemat beberapa byte lagi. EDIT: Oh, saya melihat bahwa Anda melakukanT
trik ketika saya sedang menulis komentar saya! Pikiran besar berpikir sama, kata mereka.Python 3,
8278767472 byteKeluaran:
Saran dipersilahkan!
sumber
while
loop dan atur ulang aritmatika untuk -2 .05AB1E ,
343130 byteCobalah online!
Penjelasan
sumber
Python 2, 76 Bytes
Implementasi cukup standar, saya pikir menggunakan pernyataan exec daripada loop sementara disimpan 2 byte atau lebih. Metode rekursif mungkin lebih pendek, saya membayangkan xnor akan segera muncul;)
Jika saya menggunakan pembaruan yang TheNumberOne temukan, saya akan berada di 69 byte (tapi kemudian saya akan menyalin)
Keluaran:
sumber
JavaScript,
7563 byteVersi lain:
Keduanya berhenti di indeks 57 (diindeks 0) karena saat itulah output melampaui ukuran angka aman JavaScript (2 53 - 1). Ternyata loop jauh lebih pendek daripada fungsi rekursif, bahkan dengan ES6:
Yang ini mengembalikan array dari 57 elemen pertama.
sumber
map
versi untuk kelengkapan dan itu juga clock pada 75 byte.Brain-Flak
476 466 462 456446 BytesDisimpan 6 byte berkat Wheat Wizard
Cobalah secara Online!
Ini sangat lambat. TIO tidak dapat menangani keseluruhan 100 angka (batasnya tampaknya 22 atau 23). Jadi, contoh ini hanya menghasilkan 20 yang pertama, tetapi kode akan bekerja untuk 100 juga.
Penjelasan singkat:
sumber
({}<>[({})]<>)(<()>)
dapat diganti dengan(<({}<>[({})]<>)>)
Java 7, 316 byte
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
C #, 120 Bytes
Sama seperti tidak ada orang waras yang mau bermain golf di Jawa, tidak ada orang waras yang bermain golf di C #! Tetapi mengacaukan itu, saya ingin melihat apa yang bisa saya lakukan. The
1M
gipsf
menjadi desimal yang memiliki cukup presisi untuk jawaban ini tanpa saya harus menulisdecimal
. Selain itu, penambahan di tempat menyimpan beberapa byte pada jawaban Python saya. pada akhirnya itu masih 50 byte lebih lama.Berikut versi yang lebih mudah dibaca (dan dapat dijalankan):
sumber
while
tofor
dan memasukkan int seperti ini:for(int n=1;n<101;)
void k(){for(decimal f=1,d,n=1;n<101;)Console.WriteLine(f=((d=++n+f)+n*((d%2<1?1:0)-(d%3<1?1:0)))*(d%4<1?n:1));}
( 112 bytes )Batch, 110 byte
Menggunakan formula @ETHproductions, tetapi sedikit mengubah karena Batch tidak memilikinya
?:
. Batch menggunakan bilangan bulat bertanda 32-bit sehingga loop berhenti pada 46.sumber
Perl, 75 Bytes
Kode menghasilkan setiap nilai pada baris baru, dan menghitung semua 100 nilai.
sumber
-Mbigint
, tidak ada tanda kurung di sekitar1..100
, dan!($a%2)*$_
alih-alih($a%2?0:$_)
(sama untuka%3..
) harus menyimpan beberapa byte;)Haskell,
7064 bytescanl1(#)[1..100]
mengembalikan daftar dengan 100 elemen pertama. Satu byte lebih sedikit jika saya bisa tetap dalam kisaran 2 ^ 31 (->[1..46]
).scanl1
sepertifoldl1
tetapi mengumpulkan hasil antara dalam daftar. Tes pembagian dapat dilakukan melalui fungsi helper%
yang mengembalikan0^0 = 1
jika dapat dibagi dan0^x = 0
jika tidak.sumber
J, 46 byte
Terapkan metode yang dijelaskan dalam tantangan.
Pemakaian
Perintah tambahan
(,.~#\)
digunakan untuk menambahkan indeks ke setiap nilai.sumber
Perl 6 , 62 byte
Cobalah online!
BENAR-BENAR harus bekerja untuk mendapatkan jumlah byte saya di bawah solusi non-golf-bahasa lainnya.
sumber