Definicje
Bijection z zestawu
S
do zestawuT
jest funkcją zeS
doT
takich, że jeden z elementówT
jest odwzorowywany przez dokładnie jeden elementS
.Bijection w zestawie
S
jest bijection odS
celuS
.Te liczby naturalne są liczbami całkowitymi, które są większe lub równe
0
.Podzbiór zbioru
S
jest ustawione tak, że każdy z elementów zestawu jest równieżS
.Podzbiorem zbioru
S
jest zbiorem, który jest podzbioremS
, który nie jest równaS
.
Zadanie
Napisz program / funkcję, która przyjmuje liczbę naturalną jako dane wejściowe i wyjściową liczbę naturalną. Musi to być bijection, a obraz liczb pierwszych w programie / funkcji {f(p) : p ∈ ℙ}
, musi być odpowiednim podzbiorem ℙ
, gdzie ℙ
są liczby pierwsze.
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .
Odpowiedzi:
Mathematica,
5448 bajtówDefiniuje następujący bijection:
Podstawową ideą jest mapowanie każdej liczby pierwszej na drugą, aby upewnić się, że są one mapowane na odpowiedni podzbiór. Powoduje to „lukę” przy 2 . Aby wypełnić tę lukę, chcemy zmapować 4 do 2, a następnie siebie nawzajem liczbę zespoloną na poprzednią liczbę złożoną, aby „powiększyć” lukę. Ponieważ 2 i 3 są jedynymi dwoma sąsiadującymi liczbami pierwszymi, możemy wyrazić oba te odwzorowania jako „ n-1 lub jeśli jest to liczba pierwsza, to n-2 ”. W końcu to mapowanie kończy się wysyłaniem 1 na 0, a my wysyłamy 0 z powrotem do 1 , przyjmując wartość bezwzględną n-1 .
źródło
0
?MATL , 21 bajtów
Dzięki Emignie za wykrycie błędu, teraz poprawionego
Wypróbuj online!
To realizuje następujący bijection. Zapisz liczby pierwsze z rzędu, a niepierwsze poniżej:
Następnie dane wyjściowe uzyskuje się zgodnie ze strzałką na wejściu:
Wyjaśniony kod
źródło
Galareta , 14 bajtów
Wypróbuj online!
Wykorzystuje algorytm Luisa.
źródło
JavaScript (ES6),
827775 bajtówRealizuje tę samą logikę, co odpowiedź Luisa Mendo .
Sformatowane i skomentowane
Próbny
Pokaż fragment kodu
źródło
Galaretka , 12 bajtów
Wypróbuj online!
Jak to działa
źródło