Angka kulit adalah bilangan bulat positif yang dapat dinyatakan sebagai 2 2 x +1 dengan bilangan x.
Sekarang mari kita mendefinisikan atribut nomor yang disebut "Fermat-ness":
- Fermat-ness dari nomor tersebut adalah satu kurang dari panjang rantai kekuatan dua, mulai dari pangkalan, dengan kekuatan dua diperluas untuk memaksimalkan fermat-ness.
- Angka yang bukan nomor Fermat memiliki Fermat-ness nol.
Jadi, 17 (= 2 2 2 2 0 +1) memiliki Fermat-ness three.
Tantangan
Diberikan bilangan bulat bukan-nol yang positif sebagai input, menampilkan Kelembaban nomor tersebut.
Aturan
- Anda dapat mengambil input dalam biner, desimal, heksadesimal, sebagai bignum, atau format apa pun yang memungkinkan Anda bermain golf terbaik
- Solusi Anda harus dapat memproses angka dengan panjang bit lebih dari 64 representasi mana pun yang Anda gunakan.
- Hanya kekuatan bilangan bulat negatif.
- Celah standar tentu saja dilarang.
- Ini kode-golf , jadi jawaban tersingkat menang.
Uji kasus
Ini dalam format input->output
. Input dalam heksadesimal untuk menghemat ruang.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
Sama dalam desimal:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Berkat geokavel untuk input yang sangat berharga di kotak pasir.
code-golf
number-theory
HAEM
sumber
sumber
Jawaban:
Jelly ,
1514 byteTerima kasih 1 byte untuk Jonathan Allan.
Cobalah online!
sumber
BḊCL⁸Ạ?
->BḊ⁸LṀ?
Python 2 ,
10381 byteCobalah online!
Saya menyadari bahwa tidak bodoh akan membantu menurunkan jumlah byte saya, jadi saya melakukan itu. Juga eksponensial yang bertentangan dengan logaritma.
sumber
RProgN 2 , 75 byte
Cobalah online!
Ini hanya 70 byte jika Anda tidak menambahkan
«»'¤=
yang menetapkan perhitungan Fermatness ke¤
karakter. Jika Anda melakukannya, Anda harus meletakkan nomor di bagian Header TIO daripada di Footer seperti sekarang.Ini secara efektif menggunakan logika yang sama dengan jawaban Python saya, jadi jika Anda tidak peduli tentang cara kerja RProgN 2, lihat saja yang itu untuk penjelasan tentang apa yang terjadi. Jika tidak
Rincian kode:
Sayangnya fungsi log
Š
dan fungsi eksponensial normal^
tidak memiliki presisi untuk melakukan ini secara native, jadi saya harus mendefinisikan kembali bagaimana eksponensial bekerja karena multiplikasi membawa jauh lebih presisi. Tanpa redefine itu, jawaban ini akan lebih pendek 23 byte.sumber
Perl 6 , 62 byte
Cobalah online!
sumber