Tantangan kali ini adalah menemukan Fibohexaprime ke- n . Definisi Fibohexaprime adalah sebagai berikut:
Kami pertama-tama mengamati daftar dengan angka Fibonacci:
N | Fibonacci number
1 | 1
2 | 1
3 | 2
4 | 3
5 | 5
6 | 8
7 | 13
8 | 21
9 | 34
10 | 55
11 | 89
12 | 144
13 | 233
14 | 377
15 | 610
16 | 987
17 | 1597
Setelah itu, kami mengonversi angka menjadi heksadesimal:
N | Fib | Hex
1 | 1 | 1
2 | 1 | 1
3 | 2 | 2
4 | 3 | 3
5 | 5 | 5
6 | 8 | 8
7 | 13 | D
8 | 21 | 15
9 | 34 | 22
10 | 55 | 37
11 | 89 | 59
12 | 144 | 90
13 | 233 | E9
14 | 377 | 179
15 | 610 | 262
16 | 987 | 3DB
17 | 1597 | 63D
Dari angka heksadesimal, kami menyaring surat-surat. Yang tersisa hanyalah angka. Kami perlu memeriksa apakah angka-angka ini prima:
hex | filtered | is prime? | N =
1 > 1 > false
1 > 1 > false
2 > 2 > true 1
3 > 3 > true 2
5 > 5 > true 3
8 > 8 > false
D > 0 > false
15 > 15 > false
22 > 22 > false
37 > 37 > true 4
59 > 59 > true 5
90 > 90 > false
E9 > 9 > false
179 > 179 > true 6
262 > 262 > false
3DB > 3 > true 7
63D > 63 > false
Jika nomor yang difilter adalah prima, kami menyebutnya Fibohexaprime . Anda dapat melihat bahwa untuk N = 7
, nomor fibonacci terkait adalah 987.
Tugasnya sederhana, ketika diberi input menggunakan STDIN atau alternatif yang dapat diterima, menulis sebuah program atau fungsi yang menghasilkan Fibohexaprime ke-11 menggunakan STDOUT atau alternatif yang dapat diterima.
Uji kasus
Input - Output
1 - 2
2 - 3
3 - 5
4 - 55
5 - 89
6 - 377
7 - 987
8 - 28657
9 - 75025
10 - 121393
11 - 317811
12 - 5702887
13 - 9227465
14 - 39088169
15 - 102334155
16 - 32951280099
17 - 4052739537881
18 - 806515533049393
19 - 7540113804746346429
Aturan:
- Diberikan bilangan bulat antara
1
dan19
(nilai-nilai di atas20
melebihi nilai maksimum untuk bilangan bulat bertanda 64-bit), mengeluarkan nilai yang sesuai. - Anda dapat menulis fungsi atau program.
- Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
Jawaban:
Pyth, 27 byte
Demonstrasi
y
menghitung angka Fibonacci n. Sebuah.f
loop menemukan fibohexaprime sesuai dengan input.sumber
MATL , 28 byte
Ini menggunakan MATL versi 1.0.0 , yang diterbitkan di Esolangs pada 12 Desember, lebih awal dari tantangan ini.
Contoh
Penjelasan
Kode ini mirip dengan yang ada dalam jawaban Martin Büttner .
sumber
CJam, 28 byte
Uji di sini.
Penjelasan
sumber
Perl 6 , 62 byte
Pass pertama saya untuk mulai bekerja adalah:
Dengan menggabungkan
grep
danmap
, saya bisa menghapus 10 byteJika saya menggunakan
grep
alih-alihmap
, saya menyimpan 5 byte lagi:pemakaian:
sumber
Mathematica 111 byte
Mungkin masih ada ruang untuk bermain golf tambahan.
sumber
Julia, 123 byte
Ini adalah fungsi anonim yang menerima integer dan mengembalikan integer. Untuk menyebutnya, berikan nama, mis
f=n->...
.Tidak Disatukan:
sumber
CELAH , 204 Bytes
Jawaban ini cukup biasa-biasa saja, kecuali bahwa GAP cukup keren untuk dapat menemukan pasangan fibohexaprimes berikutnya (dan lebih keren lagi, ia menemukan ini dalam milidetik dengan kode yang diberikan).
Perhatikan bahwa f (24) adalah antara 2 ^ 216 dan 2 ^ 217.
Ini kodenya:
Mungkin masih ada beberapa golf yang bisa dilakukan. Saya pikir implementasinya cukup mudah.
Tidak Disatukan:
sumber
C,
186183 byteTes primality sangat tidak efisien, sehingga perhitungannya akan sedikit sulit
n > 16
dan menjadi sangat laman = 19
. Namun demikian ia bekerja dan memberikan hasil yang diharapkan.Kode ini mengasumsikan bahwa itu
size_t
adalah tipe 64bit, yang berlaku untuk Linux 64bit dan Windows.Bonus: sayangnya kami diharuskan menggunakan jenis 64bit, yang mengarah ke overhead 33 byte. Versi berikut ini berfungsi untuk
n <= 15
digunakanint
dan panjangnya 150 byte:Tes utama:
sumber
size_t
dan menjatuhkan sertakan? Ini implementasi khusus, tetapi tampaknya 64-bit di Linux 64-bit dan Windows gcc (dan sejak kapan kita peduli tentang portabilitas dalam codegolf?). (catatan:%ld
tidak 64-bit di Windows 64-bit; kebutuhan%lld
)size_t
bukan builtin, itu didefinisikanstddef.h
(yang pada gilirannya secara langsung atau tidak langsung dimasukkan oleh hampir semua header lainnya). Dengan satu atau lain cara, saya membutuhkan#include
. Saya masih bisa menyimpan 2 byte dengan menggunakansize_t
alih-alihuint64_t
:)lld
, saya tidak mendapatkan kesempatan untuk mengujinya di Windows (tapi portabilitas tidak masalah, kan?)stdio.h
saat saya sedang menguji. Bagaimanapun - Anda masih bisa menyelamatkan pasangan dengan memasukkanmath.h
bukanstddef.h
.math.h
tidak melakukan trik untuk saya (GCC 4,9 dengan GNU libc)Python 2, 127 byte
Algoritme bisa menjadi jauh lebih efisien. Secara khusus, pemeriksaan awal
(t>1)*all(t%x for x in range(2,t))
memeriksa faktor-faktor potensial sampait-1
saat itu benar-benar hanya perlu memeriksa hingga ke lantai akar kuadrat . Karenarange
menyimpan seluruh daftar di memori dalam Python 2, ini mengarah keMemoryError
atN=17
(di komputer saya menggunakan pengaturan default).sumber
Ruby, 160 byte
Tidak Disatukan:
Pemakaian:
sumber
R, 164 byte
Diindentasi, dengan baris baru:
Contoh:
sumber