Teorema terakhir Fermat mengatakan bahwa ada tidak ada yang positif, solusi integral persamaan a^n + b^n = c^n
untuk setiap n>2
. Ini terbukti benar oleh Andrew Wiles pada tahun 1994.
Namun, ada banyak "nyaris celaka" yang hampir memenuhi persamaan diophantine tetapi terlewat satu. Tepatnya, mereka semua lebih besar dari 1 dan merupakan solusi integral a^3 + b^3 = c^3 + 1
(urutannya adalah nilai dari setiap sisi persamaan, dalam urutan yang meningkat).
Tugas Anda diberikan n
, untuk mencetak nilai pertama n
dari urutan ini.
Berikut adalah beberapa nilai pertama dari urutan ini:
1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185, 6352182209, 7856862273, 12422690497, 73244501505, 145697644729, 179406144001, 648787169394, 938601300672, 985966166178, 1594232306569, 2898516861513, 9635042700640, 10119744747001, 31599452533376, 49108313528001, 50194406979073, 57507986235800, 58515008947768, 65753372717929, 71395901759126, 107741456072705, 194890060205353, 206173690790977, 251072400480057, 404682117722064, 498168062719418, 586607471154432, 588522607645609, 639746322022297, 729729243027001
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Jawaban:
Jelly , 16 byte
Solusi brute-force. Cobalah online!
sumber
Brachylog , 31 byte
Cobalah online!
Ini bukan kekuatan kasar karena ini menggunakan kendala. Ini agak lambat pada TIO (sekitar 20 detik untuk
N = 5
). Memakan waktu sekitar 5 detik untukN = 5
dan 13 detik untukN = 6
pada mesin saya.Penjelasan
sumber
Perl, 78 byte
Pendekatan kekerasan. Dengan menyebut shebang sebagai dua, input diambil dari stdin.
Contoh Penggunaan
Cobalah online!
sumber
Mathematica, 95 byte
Fungsi tanpa nama mengambil argumen integer positif tunggal
#
dan mengembalikan daftar#
bilangan bulat yang diinginkan . Ditempatkan untuk keterbacaan manusia:Baris 4 menghitung semua jumlah kemungkinan kubus bilangan bulat antara 2 dan
b
+1 (dengan inisialisasib=9
pada baris 1) dalam urutan diurutkan. Baris 3-5 memilih dari jumlah-jumlah itu hanya jumlah-jumlah yang juga satu lebih dari satu kubus sempurna; baris 6 membatasi daftar paling banyak#
nilai, yang disimpan dia
. Tetapi jika daftar ini sebenarnya lebih kecil dari#
nilai,While
loop di baris 1-7 bertambahb
dan mencoba lagi. Akhirnya, baris 8 menghasilkana
setelah panjang yang tepat.Sial, versi ini lambat! Untuk satu byte tambahan, kita dapat mengubah
b++
di baris 7b*=9
dan membuat kode benar-benar berjalan dalam waktu yang wajar (memang, itulah cara saya mengujinya).sumber
Racket 166 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
Python 2 ,
10298 byteCobalah online!
sumber
Pari / GP, 107 byte
Temukan 10 solusi pertama dalam 10 detik.
Sasaran: a ^ 3 + b ^ 3 = c ^ 3 + 1
Mendapat jumlah solusi yang dibutuhkan berdasarkan argumen fungsi n
Menambah c dari 3 dan untuk setiap c ^ 3 + 1 mencari a dan b dengan 1 <a <= b <c sedemikian rupa sehingga a ^ 3 + b ^ 3 = c ^ 3 + 1 . Jika ditemukan, kurangi jumlah yang diperlukan soulutions lebih lanjut n oleh 1 dan ulangi
Selesai, ketika jumlah solusi yang dibutuhkan lebih lanjut (dalam n ) sama dengan 0
Sebut saja untuk mendapatkan sepuluh solusi pertama:
Kode yang dapat dibaca (membutuhkan kurung kurawal dan ujung sebagai indikator untuk blok-notasi fungsi. Juga untuk kenyamanan mencetak semua variabel dari suatu solusi):
Pari / GP, 93 byte
(Peningkatan oleh Dennis)
sumber
Python 2,
122119 Bytesmengapa kamu masih upvoting? Dennis menghancurkan jawaban ini;)
Selamat datang di solusi terpanjang untuk pertanyaan ini: / Saya berhasil mencukur seluruh byte dengan membuat kondisi yang lebih lama dan menghapus lekukan sebanyak mungkin.
Output untuk
n = 5
:sumber
TI-Basic, 90 byte
Harus ada cara yang lebih singkat ...
sumber
MATLAB, 94 byte
Solusi brute-force lainnya:
Output untuk
n=4
:Menekan
c=
bagian tampilan meningkatkan kode menjadi 100 bytesumber
C #,
188174187136 byteVersi golf berkat TheLethalCoder untuk golf code dan tipsnya yang hebat ( Coba online! ):
Waktu eksekusi untuk menemukan 10 angka pertama: 33.370842 detik pada laptop i7 saya (versi asli di bawah adalah 9,618127 detik untuk tugas yang sama).
Versi tidak disatukan:
Termasuk versi 187 byte golf sebelumnya
using System;
Versi golf 175 byte sebelumnya (terima kasih kepada Peter Taylor):
Versi 188 byte sebelumnya (asli) golf ( Coba online! ):
Waktu eksekusi untuk menemukan 10 angka pertama: 9,618127 detik di laptop i7 saya.
Ini adalah upaya pertama saya dalam C # coding ... Sedikit verbose dibandingkan dengan bahasa lain ...
sumber
for
loop. 2.int.Parse
lebih pendek dariConvert.ToInt32
. 3.long
lebih pendek daripadadouble
dan lebih akurat untuk tugas ini. 4.t
tidak perlu: Anda dapat menghitungn
mundur0
sebagai gantinya. 5. Secara teknis saya pikir Anda perlu mematahkan dua loop setelah pencetakan, kalau-kalau ada tiga kebetulan.static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLine(c*c*(a=c)+n/n--);}
Action
yang akan menyimpan byte yang digunakan dalam metode tanda tangan yaitu()=>{/*code here*/};
using System;
ke dalam byte byteBahasa GameMaker, 119 byte
Kenapa
show_message()
begitu lama :(x, y, z = 2,3,4 n = input () sementara n: jika y 3 + x 3-z3 == 1dan x3 + 1; n- = 1 x + = 1 jika y
sumber
Aksioma, 246 byte
ungof dan hasil
sumber