Terinspirasi oleh entri Numberphile ini
Latar Belakang
Angka jarak kubus bilangan bulat n didefinisikan di sini sebagai himpunan bilangan bulat yang berjarak x³ untuk x yang diberikan . Untuk contoh sederhana, dengan n=100
dan x=2
, angka jarak kubus adalah {92,108}
.
Ini dapat diperluas ke set yang lebih besar hanya dengan memvariasikan x . Dengan x ∈ {1,2,3,4}
dan yang sama n=100
, kita memiliki set yang dihasilkan {36,73,92,99,101,108,127,164}
.
Mari kita mendefinisikan CD (n, x) sebagai himpunan semua bilangan bulat n ± z³
dengan z ∈ {1,2,3,...,x}
.
Sekarang kita dapat fokus pada beberapa sifat khusus dari angka jarak kubus ini . Dari sekian banyak properti khusus yang bisa dimiliki oleh angka, dua properti yang kami minati di sini adalah pembagi-pembagi primality dan prime .
Untuk CD contoh di atas (100,4) , perhatikan bahwa 73, 101, 127
semuanya prima. Jika kita menghapusnya dari set, kita pergi dengan {36,92,99,108,164}
. Semua pembagi utama dari angka-angka ini adalah (dalam urutan) {2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}
, yang berarti kita memiliki 5 pembagi utama yang berbeda {2,3,23,11,41}
. Oleh karena itu kita dapat mendefinisikan bahwa CD (100,4) memiliki ravenity 1 of 5
.
Tantangannya di sini adalah untuk menulis fungsi atau program, dalam byte paling sedikit, yang menghasilkan kerakusan dari input yang diberikan.
Memasukkan
- Dua bilangan bulat positif,
n
danx
, dalam format apa pun yang nyaman.
Keluaran
- Sebuah bilangan bulat tunggal yang menggambarkan kerakusan dari dua angka input, bila dihitung dengan CD (n, x) .
Aturan
- Input / output dapat melalui metode yang sesuai .
- Batasan celah standar berlaku.
- Untuk memudahkan perhitungan, Anda dapat mengasumsikan bahwa data input akan sedemikian rupa sehingga CD (n, x) hanya akan memiliki angka positif di set (yaitu, tidak ada CD (n, x) yang akan memiliki angka negatif atau nol).
- Fungsi atau program harus dapat menangani nomor input sehingga
n + x³
sesuai dengan tipe data integer asli bahasa Anda. Misalnya, untuk tipe integer bertanda 32-bit, semua angka input dengann + x³ < 2147483648
dimungkinkan.
Contohnya
n,x - output
2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0)
5,1 - 2
100,4 - 5
720,6 - 11
Catatan kaki
1 - Dinamakan demikian karena kita tidak tertarik pada kardinal set, tetapi jenis burung yang berbeda. Karena kita sedang berurusan dengan pembagi "umum", saya memilih untuk menggunakan gagak umum .
100,4
hasil 5? Angka jarak kubus dari himpunan itu adalah36,164
, dan faktor utama dari himpunan itu adalah2,3,41
(karena faktor-faktor dari himpunan itu adalah{2, 3, 4, 6, 9, 12, 18, 36}
dan{2, 4, 41, 82, 164}
, masing-masing). Oleh karena itu, outputnya harus 3, bukan 5.100,4
adalah contoh yang OP jelaskan di bagian Latar Belakang. Kesalahan Anda tampaknya adalah bahwa Anda harus mempertimbangkan semuanya1..x
, jadi[1,2,3,4]
untuk kasus ini.Jawaban:
Jelly, 16 byte
Membutuhkan x dan n sebagai argumen baris perintah, dalam urutan itu. Cobalah online!
Bagaimana itu bekerja
sumber
Pyth -
211918 byteSaya ingin tahu apakah ada trik.
Test Suite .
sumber
Julia, 107 byte
Ini adalah fungsi yang menerima dua bilangan bulat dan mengembalikan bilangan bulat.
Tidak Disatukan:
sumber
05AB1E ,
2019 byteKode:
Masukan dalam bentuk
x
,n
. Penggunaan pengodean CP-1252 .Cobalah online!
sumber
MATL , 21 byte
Input
x
,n
dipisahkan oleh baris baru.Cobalah online!
Penjelasan
sumber
J, 30 byte
Ini adalah kata kerja diad, yang digunakan sebagai berikut:
Coba di sini.
Penjelasan
sumber
@:+(
mengapa begitu sedih, pria-rambut-mengagumkan?Python 3.5,
218198 byte:( Terima kasih kepada @Blue karena telah menyelamatkan saya 20 byte.)
Fungsi lambda satu-baris yang bagus, meskipun mungkin agak panjang. Karena saya menggunakan Python, saya harus menemukan cara saya sendiri untuk menemukan komposit untuk langkah pertama, dan kemudian pembagi utama untuk langkah terakhir, jadi itu tidak terlalu mudah, dan ini adalah saya yang terpendek, sendiri . bisa mendapatkannya. Meskipun demikian, ia melakukan apa yang diperlukan, dan saya bangga karenanya. :) Namun, ada tips untuk bermain golf ini sedikit lebih baik.
sumber
PARI / GP , 79 byte
Ini adalah implementasi langsung saya yang asli. Versi yang dioptimalkan di atas menggabungkan dua vektor menjadi satu, vektor yang sedikit lebih rumit.
sumber
f
(sepertif=(n,x)->...
) maka Anda dapat mengujinyaf(100,4)
. Bergantian, Anda dapat memanggilnya dalam satu baris dengan((n,x)->...)(100,4)
.Ruby, 138 byte
Itu adalah pelesetan y tantangan. :-)
sumber
Ruby,
132120114 byteSaya sadar betul bahwa solusi ini masih membutuhkan banyak golf. Semua kiat bermain golf dipersilakan.
Tidak melakukan pelanggaran:
sumber
Python 3.5 -
177175159 bytesSelamat datang tips golf :)
Tidak Disatukan:
sumber
Bahasa Wolfram (Mathematica) , 90 byte
Cobalah online!
un-golfed: kebanyakan kode dibaca dari kanan ke kiri,
sumber