pengantar
Dalam dunia aneh angka integer, pembagi seperti aset dan mereka gunakan untuk menyebut "kaya" angka yang memiliki lebih banyak pembagi daripada pembalikannya, sementara mereka menyebut "miskin" yang memiliki pembagi yang lebih sedikit daripada pembalikannya.
Misalnya, angka memiliki lima pembagi: , sedangkan pembalikannya, , hanya memiliki empat: .
Jadi disebut angka kaya , sedangkan angka miskin .
Dengan definisi ini, kita dapat membuat dua urutan bilangan bulat kaya dan miskin berikut:
(here we list the first 25 elements of the sequences)
Index | Poor | Rich
-------|------|-------
1 | 19 | 10
2 | 21 | 12
3 | 23 | 14
4 | 25 | 16
5 | 27 | 18
6 | 29 | 20
7 | 41 | 28
8 | 43 | 30
9 | 45 | 32
10 | 46 | 34
11 | 47 | 35
12 | 48 | 36
13 | 49 | 38
14 | 53 | 40
15 | 57 | 50
16 | 59 | 52
17 | 61 | 54
18 | 63 | 56
19 | 65 | 60
20 | 67 | 64
21 | 69 | 68
22 | 81 | 70
23 | 82 | 72
24 | 83 | 74
25 | 86 | 75
... | ... | ...
Catatan:
- sebagai "pembalikan" dari angka yang kami maksudkan pembalikan digitalnya , yaitu memiliki digit pada basis-10 terbalik. Ini berarti bahwa nomor yang berakhir dengan satu atau lebih angka nol akan memiliki "lebih pendek" reversal: misalnya pembalikan
1900
adalah0091
maka91
- kami sengaja mengecualikan angka integer yang memiliki jumlah pembagi yang sama dengan pembalikannya, yaitu yang dimiliki oleh OEIS: A062895
Tantangan
Mempertimbangkan dua urutan yang didefinisikan di atas, tugas Anda adalah menulis sebuah program atau fungsi yang, diberi bilangan bulat n
(Anda dapat memilih 0 atau 1-diindeks), mengembalikan angka ke-n miskin dan ke-n kaya.
Memasukkan
- Nomor integer (
>= 0
jika 0-diindeks atau>= 1
jika 1-diindeks)
Keluaran
- 2-bilangan bulat, satu untuk urutan yang buruk dan satu untuk urutan kaya, dalam urutan yang Anda sukai selama konsisten
Contoh:
INPUT | OUTPUT
----------------------------------
n (1-indexed) | poor rich
----------------------------------
1 | 19 10
18 | 63 56
44 | 213 112
95 | 298 208
4542 | 16803 10282
11866 | 36923 25272
17128 | 48453 36466
22867 | 61431 51794
35842 | 99998 81888
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 dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
2
. Untuk ini, lihat Corollary 1.4 di akhir makalah berikut, dengan yangn
sama dengan19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/…Jawaban:
05AB1E , 16 byte
Cobalah online!
Diindeks [kaya, miskin]:
Mungkin seseorang dapat menjelaskan mengapa versi ini tampaknya tidak berakhir, tetapi ketika saya mengklik "batalkan eksekusi" pada TIO selesai dengan jawaban yang benar, atau jika Anda menunggu 60 detik Anda mendapatkan jawaban yang benar. Untuk versi yang mengakhiri "dengan benar" Anda bisa menggunakan:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 bytesumber
∞n5è
hanya akan menghitung 6 angka pertama. Saya pikir ketika jenis pengulangan / pengelompokan / konstruksi membelah datang untuk bermain, eval malas gagal dan mencoba untuk menghitung semua item sebelum kembali.€g
.. Saya sering menggunakannya. Akan menyimpan byte di sini dengan alternatif (sekarang sama byte)‚рgÆ.±
. Jawaban yang bagus! Penggunaan hebat.¡
!δg
lol.JavaScript (ES6),
121 115 113111 byteInput diindeks 1. Output sebagai
[poor, rich]
.Cobalah online!
Berkomentar
Fungsi pembantu
Utama
sumber
Jelly , 22 byte
Cobalah online!
Penjelasan
sumber
Bahasa Wolfram (Mathematica) , 152 byte
Cobalah online!
Jika dugaan itu benar, maka solusi 140 byte ini juga berfungsi
Cobalah online!
Berikut adalah plot miskin vs kaya
sumber
a(27635)= {70003, 65892}
Perl 6 , 81 byte
Cobalah online!
* > *
adalah fungsi anonim yang mengembalikan true jika argumen pertama lebih besar dari yang kedua. Demikian pula untuk* < *
. Yang pertama akan memilih nomor yang termasuk dalam urutan kaya, yang terakhir akan memilih orang-orang yang termasuk dalam urutan yang buruk.(* > *, * < *).map(-> &c { ... })
menghasilkan sepasang urutan tak terbatas, masing-masing berdasarkan pada salah satu fungsi pembanding: urutan kaya dan urutan miskin, dalam urutan itu.»[$_]
mengindeks ke dalam kedua sekuens tersebut menggunakan$_
, argumen ke fungsi tingkat atas, mengembalikan daftar dua elemen yang berisi$_
anggota th dari urutan kaya dan$_
anggota th urutan buruk.grep $_ %% *, 1..$_
menghasilkan daftar pembagi$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
menghasilkan daftar dua elemen pembagi$_
, dan pembagi$_
dengan digitnya terbalik ("terbalik").[[&c]]
mengurangi daftar dua elemen dengan fungsi komparator&c
(baik lebih besar atau lebih kecil dari), menghasilkan nilai boolean yang menunjukkan apakah nomor ini milik urutan kaya dari urutan buruk.sumber
1..$_
bisa^$_
. Anda juga dapat memindahkan[$_]
ke dalam fungsi peta. 78 bytePython 2 ,
142141 byteCobalah online!
Alternatif non-rekursif (sangat mirip dengan jawaban Python lainnya)
Python 2 , 143 byte
Cobalah online!
sumber
Python 2 ,
158153 byte-2 byte terima kasih kepada shooqie
Cobalah online!
Input diindeks 0. Output sebagai
poor rich
.sumber
+=[c]
alih-alih.append(c)
bekerja?Ruby , 128 byte
Masukan diindeks nol . Output sebagai [miskin, kaya].
Penjelasan
Cobalah online!
sumber
Perl 6 , 76 byte
Cobalah online!
Saya tidak melihat jawaban Perl 6 Sean , tetapi ini bekerja dengan cara yang berbeda. Perhatikan bahwa saya telah mengkodekan upperbound sebagai
n*3+99
, yang mungkin tidak sepenuhnya benar. Namun, saya bisa mengganti*3
dengan³
tanpa byte tambahan, yang akan membuat program jauh lebih efisien, jika lebih benar.sumber
Python 2 , 152 byte
Cobalah online!
Berakhir menjadi sangat mirip dengan jawaban Rod . Mengembalikan nol
n
tuple miskin dan kaya yang diindeks .sumber
Ikon ,
180175 byteCobalah online!
sumber
APL (Dyalog Unicode) , 34 byte
Cobalah online!
Terima kasih kepada Adám dan ngn untuk membantu saya bermain golf monster ini.
TIO time out untuk indeks yang lebih besar (yang membutuhkan
⍳1e5
atau⍳1e6
), tetapi diberi waktu dan memori yang cukup, fungsi tersebut akan berakhir dengan benar.sumber
R ,
152137 byte-12 byte terima kasih kepada Giuseppe -3 byte terima kasih untuk digEmAll
Cobalah online!
T
adalah integer yang saat ini sedang dicoba; angka miskin dan kaya terbaru disimpan dalam vektorF
.Cara terpendek yang dapat saya temukan untuk membalik bilangan bulat adalah mengonversinya menjadi angka di basis 10 dengan aritmatika modular, kemudian mengonversi kembali dengan kekuatan 10 terbalik, tetapi saya berharap akan kalah dalam hal ini dan bidang lainnya.
Penjelasan (dari versi sebelumnya yang serupa):
sumber
nchar
.log10
!JavaScript (Node.js) ,
190180 byteOutput sebagai
[poor, rich]
.Cobalah online!
Penjelasan
d(n)
FungsiPenolong ini menemukan sejumlah faktor yang dimiliki suatu angka.
Fungsi utama
sumber
C # (Visual C # Interactive Compiler) , 221 byte
Cobalah online!
sumber