1729, dikenal sebagai angka Hardy-Ramanujan , adalah bilangan bulat positif terkecil yang dapat dinyatakan sebagai jumlah dua kubus bilangan bulat positif dalam dua cara ( 12^3+1^3=10^3+9^3=1729
). Diberikan bilangan bulat n
(sebagai input dalam bentuk apa pun yang alami untuk bahasa pilihan Anda) temukan bilangan bulat positif terkecil yang dapat dinyatakan sebagai jumlah dari dua bilangan bulat positif yang dinaikkan ke n
daya ke-dua dengan dua cara unik. Tidak menggunakan sumber eksternal. Karakter yang paling sedikit menang.
Perhatikan bahwa ini sebenarnya masalah yang belum terpecahkan untuk n>4
. Untuk angka-angka itu, biarkan program Anda berjalan selamanya dalam pencarian, atau mati saat mencoba! Buat agar jika diberi waktu dan sumber daya tak terbatas, program akan menyelesaikan masalah.
sumber
n
kekuatan th". Kalau tidak,91
(tidak1729
) adalah solusi untukn=3
, karena6^3+(−5)^3=4^3+3^3=91
. Saya belajar ini dari tautan Wikipedia Anda jadi mungkin referensi HM Anda membuat ini tidak perlu dengan konvensi. Bersulang!1
adalah solusi pertama:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Jawaban:
APL
4541Versi 41 karakter yang lebih pendek namun lebih lambat:
Anda dapat mencobanya secara online , cukup tempelkan fungsinya dan aktifkan dengan nomor:
(Algoritma ini cukup bodoh, jangan berharap penerjemah online menghitung n = 4)
Jawaban untuk n = 2 adalah 50 = 5² + 5² = 7² + 1² karena angka yang "dapat dinyatakan sebagai jumlah dari dua kuadrat dari bilangan bulat positif — tidak mengatakan berbeda - dalam dua cara."
Jika Anda ingin menambahkan klausa yang berbeda, cukup ubah
(v∘.≤v)
menjadi(v∘.<v)
, jumlah karakter yang sama, dan n = 2 menjadi 65:Saya mengalahkan GolfScript? Tidak mungkin !!
sumber
Ruby, 132
Lulus
n
sebagai argumen baris perintah. Baris pertamastdout
adalah solusinya.Dioptimalkan untuk kode-golf, bukan kinerja. (Berjalan dengan benar. Tetapi lambat. Melakukan lebih banyak pekerjaan daripada yang diperlukan.)
Ini adalah program C yang lebih lama, sedikit lebih cepat. Algoritma yang benar tapi mengerikan sama. (Saya benar-benar perlu belajar lebih banyak teori!)
Diuji untuk
n
= 2,n
= 3.C, 234
Versi C mengambil
n
distdin
. Seperti di atas, baris pertamastdout
adalah solusinya.sumber
GolfScript 53
Input adalah nomor awal pada tumpukan. Angka di atas tumpukan di akhir adalah jawabannya. Saya akan menjelaskan ini secara lebih rinci ketika saya mendapat kesempatan.
Misalnya
Ini sangat lambat sekarang. Itu juga menghitung
0
(sehingga 25 adalah jawaban untukn=2
, karena25=5^2+0^2=3^2+4^2
. Agar tidak menghitung 0, tambahkan 2 karakter(;
setelah yang pertama,
Untuk menemukan itu
2 f=65
, sejak65=8^2+1^2=5^2+6^2
sumber
GolfScript (30 karakter)
Catatan: ini sangat lambat, karena melakukan pencarian kasar daripada sesuatu yang elegan seperti antrian prioritas. Hal yang paling elegan tentang itu adalah menggunakan kembali
N
sebagai batas bawah untuk mencari: ini berlaku karena1^N + 2^N > N
untuk semuaN
.Mengambil
N
tumpukan, meninggalkan nomor taksi yang sesuai di tumpukan. Untuk mengambilN
dari stdin, tambahkan~
.Versi di atas memungkinkan
x^N + x^N
(jadi untukN=2
memberi50
). Untuk meminta penambahan nomor yang berbeda (65
ganti memberi ), ubah3
ke4
. Untuk mengizinkan0^N + x^N
(memberi25
), hapus)
segera sebelumN?
.sumber
Mathematica, 58 karakter
Solusi yang sangat sangat lambat menggunakan fungsi menghasilkan:
sumber