Latar Belakang
Nomor Ramanujan, 1729, disebut sebagai nomor taksi karena kisah Hardy yang menaiki taksi untuk mengunjungi Ramanujan di rumah sakit dengan nomor ini, yang tampaknya hambar baginya.
Sejak itu dikenal sebagai yang paling terkenal dari kelas bilangan bulat yang dikenal sebagai "bilangan taksi" yang dapat diekspresikan sebagai jumlah dari dua kekuatan n (dari bilangan bulat positif) dalam dua (atau kadang-kadang 'k') cara yang berbeda.
1729 adalah bilangan alami terkecil yang dapat diekspresikan sebagai jumlah 2 kubus dengan 2 cara berbeda, menjadikannya nomor taksi "3,2" pertama ("n, k" adalah umum).
Tantangan
Diberi nomor, tentukan apakah nomor itu adalah "3,2" 'nomor taksi sekunder' - artinya nomor tersebut memenuhi batasan yang sama dengan 1729 (2 jumlah kubus unik), tetapi tidak harus menjadi bilangan bulat terkecil dari "3 , Kelas 2 "(tentu saja tahun 1729).
Contoh kasus:
1729 = 10 ^ 3 + 9 ^ 3 = 12 ^ 3 + 1 ^ 3
4104 = 15 ^ 3 + 9 ^ 3 = 16 ^ 3 + 2 ^ 3
13832 = 2 ^ 3 + 24 ^ 3 = 18 ^ 3 + 20 ^ 3
Serta 20683, 32832, 39312 ...
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat di setiap bahasa menang.
Kode Matlab kasar untuk menemukan kasus lain dengan kekerasan:
for k = 1729:20000
C = sum(round(mod(real((k-[1:ceil(k^(1/3))].^3).^(1/3)),1)*10000)/10000==1);
if C > 1
D = (mod(C,2)==0)*C/2 + (mod(C,2)==1)*((C+1)/2);
disp([num2str(k),' has ',num2str(D),' solns'])
end
end
sumber
Jawaban:
05AB1E , 9 byte
Kode (sangat lambat)
Kode (lebih cepat), 12 byte
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
sumber
Jelly , 9 byte
Penghargaan untuk Erik the Outgolfer.
Cobalah online!
Ini terlalu lambat sehingga tidak akan berfungsi untuk
1729
online.Jauh lebih cepat, 12 byte
Penghargaan untuk Dennis.
Cobalah online!
sumber
Ðf⁸
bisa menjadifR
. Yang kedua⁸
bisa dihapus.Œċ*3S€ċ>1
.Mathematica, 35 byte
Fungsi murni mengambil bilangan bulat positif dan mengembalikan
True
atauFalse
.#^3+#2^3&~Array~{#,#}
mentabulasikan semua jumlah kubus dua bilangan bulat antara 1 dan input. (Ini akan jauh lebih cepat dengan ikatan masuk akal pada bilangan bulat yang akan dipotong dadu, seperti akar kubus dari input; tetapi itu akan membutuhkan byte yang berharga. Karena, kode membutuhkan sekitar 30 detik pada input13832
dan skala setidaknya secara kuadratik dalam input.)Count[...,#,2]
menghitung berapa kali input muncul dalam daftar ini di level-sarang 2; jika angka ini lebih besar dari2
, maka inputnya adalah angka semi-taksi (lebih dari 2, daripada lebih besar dari 1, karena a ^ 3 + b ^ 3 dan b ^ 3 + a ^ 3 dihitung secara terpisah).sumber
Mathematica,
3837 byte-1 byte terima kasih kepada @GregMartin
Seperti biasa, ada Mathematica yang dibangun untuk semuanya.
sumber
Tr[1^...]
berfungsi sebagai penggantiLength@
.JavaScript (ES7), 63 byte
Fungsi rekursif yang relatif cepat yang akhirnya mengembalikan boolean.
Demo
Tampilkan cuplikan kode
sumber
Mathematica, 48 byte
memasukkan
keluaran
sumber
#!=1729&&
tidak perlu lagi sekarang karena spesifikasi telah diklarifikasi.Solve
bukanReduce
?Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&
yang menggantikan&&
dengan-
dan sedikit menata ulang.Python, 71 byte
Cobalah online
sumber
MATL (
1615 byte) (1312 idealnya)Cobalah online!
Penjelasan:
Berdasarkan solusi Jelly dari 'Leaky Nun', baru saja dikonversi ke MATL, mungkin berlebihan di beberapa bagian dan dapat ditingkatkan:
Catatan: output falsy termasuk 0 dan -1, sedangkan output yang sebenarnya adalah 1. Terima kasih kepada Luis Mendo karena telah menyimpan byte tambahan di sini menggantikan "s1>" dengan "sq".
Idealnya (
1312 byte):... sudah cukup, tetapi untuk jumlah yang lebih besar ini macet di halaman tio.run.
sumber
1>
denganq
. Juga, Anda memilikiH
bukanG
dalam penjelasannya. Fakta bahwa program macet untuk jumlah besar biasanya tidak relevan untuk penilaian. Jika berhasil, cukup waktu dan memori yang dapat diterima, kecuali tantangannya menentukan sebaliknyaRuby , 52 byte
Cobalah online!
Karena versi ini menciptakan array berukuran n 2 besar, gagal pada semua testcas benar lebih tinggi dari
1729
, di sini adalah versi yang dimodifikasi yang memiliki ukuran array yang lebih kecil sekitar n 2/3 , yang berhasil memeriksa setidaknya hingga 31392.Cobalah online! (diubah)
sumber
PHP , 76 byte
Cobalah online!
Cari hingga 400000 Cobalah online!
sumber