Cztery sekwencje całkowite
W tym wyzwaniu przetestujesz cztery różne właściwości dodatniej liczby całkowitej, podane w poniższych sekwencjach. Dodatnia liczba całkowita N to
- idealny ( OEIS A000396 ), jeżeli suma właściwych dzielników N równa N . Sekwencja zaczyna się od 6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128 ...
- refactorable ( OEIS A033950 ), jeżeli liczba dzielników N jest dzielnikiem N . Sekwencja zaczyna się od 1, 2, 8, 9, 12, 18, 24, 36, 40, 56, 60, 72, 80, 84, 88, 96, 104, 108, 128 ...
- praktyczne ( OEIS A005153 ), jeżeli każda liczba całkowita 1 ≤ K ≤ N jest sumą kilku różnych dzielników N . Sekwencja zaczyna się od 1, 2, 4, 6, 8, 12, 16, 18, 20, 24, 28, 30, 32, 36, 40, 42, 48, 54, 56 ...
- bardzo kompozytowy ( OEIS A002128 ), jeżeli każda liczba 1 ≤ K <N jest mniej dokładnie niż dzielników N . Sekwencja zaczyna się od 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040 ...
Cztery programy
Twoim zadaniem jest napisanie czterech programów (co oznacza pełne programy, definicje funkcji lub anonimowe funkcje, które wykonują operacje we / wy dowolną ze standardowych metod ). Każdy program rozwiązuje problem członkostwa jednej z tych sekwencji. Innymi słowy, każdy program przyjmuje na wejściu dodatnią liczbę całkowitą N ≥ 1 i wyświetla prawdziwą wartość, jeśli N jest w sekwencji, i wartość fałsz, jeśli nie. Możesz założyć, że N mieści się w granicach standardowego typu liczb całkowitych twojego języka programowania.
Programy muszą być powiązane w następujący sposób. Istnieją cztery ABCD
takie ciągi znaków
AC
to program, który rozpoznaje idealne liczby.AD
to program, który rozpoznaje numery refaktoryzowane.BC
to program, który rozpoznaje liczby praktyczne.BD
to program, który rozpoznaje wysoce złożone liczby.
Punktacja
Twój wynik to całkowita długość (w bajtach) ciągów ABCD
, lub innymi słowy, całkowita liczba bajtów czterech programów podzielona przez dwa. Najniższy wynik w każdym języku programowania jest zwycięzcą. Obowiązują standardowe zasady gry w golfa .
Na przykład, jeśli cztery łańcuchy są a{
, b{n
, +n}
i =n}?
, następnie cztery programy a{+n}
, a{=n}?
, b{n+n}
a b{n=n}?
, a wynik 2 + 3 + 3 + 4 = 12.
Odpowiedzi:
JavaScript (ES6), 46 + 55 + 6 + 36 =
282274...158143 bajtówZA:
B:
DO:
RE:
Rezultatem jest 4 anonimowe funkcje, które dają truthy / wartości falsy dla swoich wejściach (
AC
,AD
iBC
daćtrue
/false
,BD
daje1
/0
).Testowy fragment kodu
Pokaż fragment kodu
źródło
Galaretka , 8 + 17 +
21 + 2 =2928 bajtówZA:
B:
DO:
RE:
Dla liczb praktycznych (BC)
0
jest fałszem, a każdy inny wynik jest prawdziwy.AC i BC są pełnymi programami, ponieważ nie można ich ponownie wykorzystywać jako funkcji.
źródło
ÆDŒPS€ḟ@RṆµṖÆd<ÆdẠµ
działa jako B za koszt dwóch bajtów (i sprawia, że BC zwraca 0 i 1 tylko tak jak inne).ŒP
zŒṖ
. Jaka szkoda! Czy to działa, jeśli to naprawisz? (tj. wypróbuj moją nową edycję) To nie jest tak, że bardzo łatwo jest przetestować, dlatego nie dodałem jeszcze linku TIO.Haskell , 69 + 133 + 3 + 3 = wynik 208
ZA:
B:
DO:
RE:
Wypróbuj online!
Tak, jest dość tani, ale nie jestem wystarczająco inteligentny, by znaleźć fajniejsze rozwiązanie. : P
źródło
subsequences
[x|x<-[1..n],mod n x<1]
jest krótszy niżfilter((<1).mod n)[1..n]
.