Liczby Fermata są dodatnimi liczbami całkowitymi, które można wyrazić jako 2 2 x +1 za pomocą liczby całkowitej x.
Zdefiniujmy teraz atrybut liczby o nazwie „Fermat-ness”:
- Płodność liczby jest o jeden mniejsza niż długość łańcucha potęg dwóch, zaczynając od podstawy, z potęgami dwóch rozszerzonymi, aby zmaksymalizować płodność.
- Liczba, która nie jest liczbą Fermata, ma wartość Fermata równą zero.
Tak więc 17 (= 2 2 2 2 0 +1) ma Fermata trzy.
Wyzwanie
Biorąc pod uwagę dodatnią niezerową liczbę całkowitą jako dane wejściowe, wypisz Fermat-ness liczby.
Zasady
- Możesz wziąć dane wejściowe w postaci binarnej, dziesiętnej, szesnastkowej, jako bignum lub w dowolnym innym formacie, który pozwala ci najlepiej grać w golfa
- Twoje rozwiązanie musi być w stanie przetwarzać liczby o długościach bitów powyżej 64, niezależnie od tego, jakiej reprezentacji używasz.
- Tylko nieujemne liczby całkowite.
- Standardowe luki są oczywiście zabronione.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź.
Przypadki testowe
Są w formacie input->output
. Dane wejściowe są w systemie szesnastkowym, aby zaoszczędzić miejsce.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
To samo w systemie dziesiętnym:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Dzięki geokavel za bezcenne dane wejściowe w piaskownicy.
code-golf
number-theory
HAEM
źródło
źródło
Odpowiedzi:
Galaretka ,
1514 bajtów1 bajt dzięki Jonathan Allan.
Wypróbuj online!
źródło
BḊCL⁸Ạ?
->BḊ⁸LṀ?
Python 2 ,
10381 bajtówWypróbuj online!
Uświadomiłem sobie, że nie jestem głupi, pomógłbym obniżyć liczbę bajtów, więc to zrobiłem. Również potęgowanie w przeciwieństwie do logarytmów.
źródło
RProgN 2 , 75 bajtów
Wypróbuj online!
Ma tylko 70 bajtów, jeśli nie dodasz
«»'¤=
znaku przypisującego obliczenia Fermatnessa do¤
znaku. Jeśli to zrobisz, musisz umieścić numer w sekcji Nagłówek TIO zamiast w Stopce, tak jak jest teraz.To efektywnie wykorzystuje tę samą logikę, co moja odpowiedź w Pythonie, więc jeśli nie obchodzi cię, jak działa RProgN 2, po prostu spójrz na to, aby wyjaśnić, co się dzieje. Inaczej
Podział kodu:
Niestety funkcja log
Š
i normalna funkcja potęgowania^
nie mają precyzji, aby zrobić to natywnie, więc musiałem przedefiniować sposób działania potęgowania, ponieważ mnożenie niesie ze sobą znacznie większą precyzję. Bez tego redefiniowania odpowiedź ta byłaby o 23 bajty krótsza.źródło
Perl 6 , 62 bajtów
Wypróbuj online!
źródło