Mengingat Anda memiliki urutan angka tak terbatas yang didefinisikan sebagai berikut:
1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
...
Urutannya adalah jumlah dari pembagi n
, termasuk 1 dan n
.
Diberikan bilangan bulat positif x
sebagai input, hitung angka terendah n
yang akan menghasilkan hasil lebih besar dari x
.
Uji kasus
f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960
Output yang Diharapkan
Program Anda harus mengembalikan keduanya n
dan jumlah pembagi nya, seperti:
$ ./challenge 100
48,124
Aturan
Ini adalah kode-golf sehingga kode terpendek dalam byte, dalam setiap bahasa menang.
n
pembagi? Anda mungkin ingin menyatakannya secara eksplisit.n
danf(n)
, tetapi Anda tidak mengatakannya di mana pun dalam spesifikasi.f(1000) = 48
? Jumlah pembagi48
adalah124
Jawaban:
Brachylog , 9 byte
Program ini mengambil input dari "variabel output"
.
, dan output ke "variabel input"?
. Cobalah online!Penjelasan
Variabel implisit
N
disebutkan dalam urutan meningkat, sehingga nilai hukum terendah digunakan untuk output.sumber
Jelly ,
18121110 byteCobalah online!
-1 byte terima kasih kepada Tn. Xcoder !
Bagaimana itu bekerja
sumber
1
itu perlu dan bagaimana¥
tindakannya?1
memberitahu#
untuk mulai menghitung dari 1 dan¥
mengambil dua tautan sebelumnya (Æs
dan>
) dan menerapkannya sebagai angka dua (yaitu dengan dua argumen), dengan argumen kiri menjadi iterasi, dan argumen kanan menjadi input.#
sebelumnya agak membingungkan saya dalam beberapa kasus.Bahasa Wolfram (Mathematica) , 53 byte
Cobalah online!
Mencoba semua nilai antara 2 dan x +1, di mana x adalah input.
(
Select
Mengembalikan daftar semua nilai yang bekerja, tetapi fungsi{#,f@#}&
mengambil semua ini sebagai input, dan kemudian mengabaikan semua inputnya tetapi yang pertama.)sumber
R , 71 byte
Cobalah online!
sumber
x
.Sekam ,
1211 byte-1 byte, terima kasih kepada @Zgarb!
Cobalah online!
sumber
,
tidak bekerja (atau kesimpulan terlalu lama?).R , 73 byte
Cobalah online!
Dikalahkan oleh duckmayr .
sumber
Japt , 15 byte
Cobalah
Penjelasan
Input bilangan bulat implisit
U
.[]
adalah pembungkus array kami. Untuk elemen pertama,@ }a
adalah fungsi yang berjalan terus menerus hingga mengembalikan nilai yang sebenarnya, memberikan dirinya bilangan bulat yang bertambah (mulai dari 0) setiap kali, dan menghasilkan nilai akhir dari bilangan bulat itu.â
mendapatkan pembagi dari integer saat ini (X
),x
menjumlahkannya dan hasilnya ditugaskan ke variabelV
.<
memeriksa apakahU
kurang dariV
. Elemen kedua dalam array adalah adilV
.sumber
Clojure , 127 byte
Cobalah online!
terima kasih kepada @steadybox untuk -4 byte!
sumber
reduce
dapat diganti denganapply
, juga fungsie
dapat dinyatakan sebagai fungsi anonim melalui#(...)
sintaks, Anda tidak perlu menyebutkannya di Code Golf.#(=(rem n %)0)
lebih pendek dari#(zero?(rem n %))
. Dan ingat itu,
adalah spasi putih, dan dapat dihapus dalam kasus ini seperti yang diikuti oleh(
, sehingga akan diuraikan dengan benar.Ruby , 58 byte
Program penuh karena saya tidak yakin apakah lambda diizinkan. /mengangkat bahu
Cobalah online!
Penjelasan
sumber
JavaScript (ES6),
6158 byteSunting: Disimpan 3 byte berkat @Arnauld.
sumber
05AB1E , 11 byte
Cobalah online!
Meninggalkan output pada stack, sebagaimana diizinkan per konsensus meta . Saya menambahkan
)
demi visualisasi, tetapi program ini juga secara implisit mencetak bagian atas tumpukan.sumber
APL (Dyalog) , 32 byte
Cobalah online!
⍵o⍺⍵.
sumber
SOGL V0.12 , 14 byte
Coba Di Sini!
Penjelasan:
sumber
C,
7978 byteCobalah online!
sumber
i=s=!++n
alih-alih++n,i=s=0
MATL , 12 byte
Cobalah online!
Penjelasan
sumber
Gaia , 11 byte
Cobalah online!
Meninggalkan output pada stack, sebagaimana diizinkan per konsensus meta . Saya menambahkan
€.
demi visualisasi, tetapi program ini juga secara implisit mencetak bagian atas tumpukan.sumber
Haskell , 59 byte
-1 byte, terima kasih kepada @nimi!
Cobalah online!
sumber
Ohm v2 , 11 byte
Cobalah online!
sumber
Factor , 88
Pencarian dengan kekerasan. Ini kutipan (lambda),
call
denganx
di tumpukan, daunn
danf(n)
di tumpukan.Sebagai sebuah kata:
sumber
Python 3, 163 byte
sumber
noob
khususnya;)Python 3 , 100 byte
Cobalah online!
Terima kasih kepada Jonathan Frech komentar pada upaya python 3 sebelumnya, saya baru saja memperluas pengetahuan saya tentang sintaksis python. Saya tidak pernah memikirkan trik ~ ~ untuk i + 1, yang menyimpan dua karakter.
Namun, jawaban itu adalah 1) tidak minimal dan 2) tidak bekerja untuk x = 1 (karena kesalahan satu per satu yang mudah dibuat saat pergi untuk singkatnya, saya sarankan semua orang memeriksa jawaban mereka untuk tepi ini kasus!).
Penjelasan cepat:
sum(i+1for i in range(y)if y%-~i<1)
setara dengansum(i for i in range(1,y+1)if y%i<1)
tetapi menyimpan dua karakter. Sekali lagi terima kasih kepada Tn. Frech.d=lambda y:sum(i+1for i in range(y)if y%-~i<1)
Oleh karena itu mengembalikan pembagi y.f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j))
adalah tempat saya benar-benar bekerja. Karena membandingkan tuple berfungsi dalam urutan kamus, kita dapat membandingkan j, d (j) semudah kita membandingkan j, dan ini memungkinkan kita tidak harus menemukan j minimal, menyimpannya dalam variabel, dan / kemudian / menghitung tuple dalam operasi terpisah. Juga, kita harus memiliki <=, bukan <, dalamx<=d(j)
, karena d (1) adalah 1 jadi jika x adalah 1 Anda tidak mendapatkan apa-apa. Ini juga mengapa kita perlurange(x+1)
dan tidakrange(x)
.Sebelumnya saya harus mengembalikan tuple, tetapi kemudian saya harus menyalinnya dalam f, sehingga dibutuhkan tiga karakter lagi.
sumber
f=
fungsi anonim yang dapat diterima di sini!f=
dalam jumlah byte Anda, dan merupakan cara yang baik untuk bermain golf di Python. Lihat ini untuk tips golf lainnya dengan Python!q=range
dan menggantirange
denganq
dalam kedua contoh yang ada. Sayangnya, ini tidak memperbaikinya dan karena lambda adalah kata kunci yang tidak dapat saya gunakan untuk itu, saya harus melakukan trik exec () yang membuang terlalu banyak karakter.Python 2 , 81 byte
Cobalah online!
sumber
Java (OpenJDK 8) , 91 byte
Cobalah online! (batas waktu pada test case ketiga)
sumber
Perl 5 , 60 + 1 (
-p
) = 61 byteCobalah online!
Format output:
jumlah - n
sumber
Clojure, 102 byte
sumber
PHP, 69 byte
sumber
Perl 6 , 48 byte
Cobalah online!
sumber