Permutacji w zbiorze jest bijective funkcja . Na przykład, jeśli to funkcja jest permutacją:
Możemy również mieć permutacje na zestawach nieskończonych, weźmy na przykład : Funkcja jest permutacją, zamieniając nieparzyste i parzyste liczby całkowite w blokach po dwa. Pierwsze elementy są następujące:
Wyzwanie
Twoim zadaniem w tym wyzwaniu jest napisanie funkcji / programu implementującego dowolną 1 permutację na dodatnich liczbach naturalnych. Wynik twojego rozwiązania to suma współrzędnych kodowych po zmapowaniu ich za pomocą zaimplementowanej permutacji.
Przykład
Załóżmy, że bierzemy powyższą permutację zaimplementowaną w Pythonie:
def pi(x):
return x - 1 + 2*(x % 2)
Znak d
ma punkt kodowy , . Jeśli zrobimy to dla każdej postaci, otrzymamy:
Suma wszystkich tych odwzorowanych znaków wynosi , byłby to wynik dla tej funkcji.
Zasady
Zaimplementujesz permutację jako funkcję lub program
- podana liczba naturalna , return / output
- do celów niniejszego prowokacji jest nie zawierają
- permutacja musi nietrywialnie permutować nieskończony podzbiór
- twoja funkcja / program nie może czytać własnego źródła
Punktacja
Wynik jest sumą wszystkich punktów kodowych (zero bajtów może nie być częścią kodu źródłowego) w ramach tej permutacji (punkty kodowe zależą od Twojego języka 2 , możesz swobodnie korzystać z SBCS, UTF-8 itp., O ile Twój język to obsługuje).
Zgłoszenie z najniższą liczbą punktów wygrywa, remisy są przerywane przez najwcześniejsze zgłoszenie.
Z wyjątkiem permutacji, które dopuszczają tylko skończony podzbiór , co oznacza, że zestaw musi być nieskończony.
Jeśli poprawi to twój wynik, możesz na przykład użyć przesyłania galaretki zakodowanego w UTF-8 zamiast zwykłego SBCS.
Odpowiedzi:
Galaretka , wynik
288 250 212199-38 dzięki Erikowi Outgolferowi!
Zamiana nawet z nieparzystymi.
Wynik to67 + 45 + 44 + 43 = 199 - patrz punktacja tutaj .
Wypróbuj online!
źródło
-*ạ
ma wynik 300 ...-*_@
ma jednak wynik 250. Może powinienem opublikować to jako własne, chociaż to ta sama permutacja.-*N+
zdobył 212C-*+
brzmi jak jakiś przyszły wariantC++
.JavaScript (ES6), wynik =
276268Wypróbuj online!
źródło
54^54
jest0
Perl 6 , wynik: 201
Wypróbuj online!
Odpowiedź Portu Arnaulda . Korzysta z tego, że xor (
+^
) ma takie samo pierwszeństwo jak-
i+
oraz użycie lambda typu cokolwiek, aby zmniejszyć ogólną liczbę znaków. Poza tym nie mogłem znaleźć innego sposobu na przedstawienie go inaczej, który uzyskałby lepszy wynik.Perl 6 , wynik
804702Wypróbuj online!
Pierwsza odpowiedź typu quine-y tutaj i myślę, że wyniki są całkiem dobre.
!
źródło
Wynik w Pythonie 2 :
742698694 punktówWypróbuj online!
-44 punkty dzięki Ørjanowi Johansenowi; -4 punkty thx na xnor.
źródło
96
z~~
.Siatkówka 0.8.2 , 6 bajtów, wynik 260
Wypróbuj online! Link zawiera stopkę samooceny. Po prostu zamienia cyfry
1
i9
i3
i7
w reprezentacji po przecinku, tak że numery, które nie zawierają względnie pierwsze cyfry do10
pozostają niezmienione.źródło
C # (interaktywny kompilator Visual C #) , 22 bajty, wynik
247245Wypróbuj online!
Proste, jeśli mniej niż 66, zwraca 66 minus wejście, w przeciwnym razie użyj wzoru w pytaniu, który zamienia liczby parzyste i nieparzyste.
źródło
A=>A<66?66-A:A
?TI-BASIC, 9 bajtów, wynik
108810511000Zamiana nawet z nieparzystymi. Nawet mapy do
Ans-1
i nieparzyste mapy doAns+1
.TI-BASIC jest tokenizowany, więc ten program będzie miał następujące wartości szesnastkowe:
Program testu wyjściowego:
Które wyjścia:
Uwagi:
Wartości tokena TI-BASICA można znaleźć tutaj .
Pause
jest używany w programie wyjściowym, aby lepiej zobaczyć permutację, ponieważ kalkulator ma tylko 8 linii. Naciśnij [ENTER], aby wyświetlić następną permutację.źródło
Węgiel drzewny , 13 bajtów, wynik 681
Wypróbuj online! Link jest do wersji samo-naliczającej z nagłówkiem do mapowania na tablicy kodów bajtów. (Węgiel drzewny ma niestandardową stronę kodową, więc ręcznie wprowadziłem poprawne kody bajtów na wejściu.) Działa poprzez odwrócenie zakresów 233 liczb, dzięki czemu 117, 350, 583 ... pozostają niezmienione. Wyjaśnienie:
źródło
Haskell, ocena 985
Wypróbuj online!
źródło
a*200
nie ma wpływu modulo 200, więca
nie ma znaczenia.sum[1|...]
ponadif..then..else
powinno pomóc.05AB1E , wynik: 488 na stronie kodowej 05AB1E
Zamienia nieparzyste, a nawet jak w przykładowej funkcji.
Spróbuję poprawić wynik tutaj.
Wypróbuj online z wejściem w zakresie
[1, 100]
lub Wypróbuj online za pomocą współrzędnych kodowych.Wyjaśnienie:
źródło
Brainfuck, 47 bajtów, wynik 2988
Wypróbuj online!
Użyłem permutacji podanej we wstępie. Ponieważ jest to bijectcja, możesz go użyć jako prostego szyfru symetrycznego podobnego do ROT13 lub Atbash. Moje rozwiązanie działa na niezwiązanych komórkach. Jednak ograniczając się do 8-bitowych komórek, możesz zapisać 2 punkty, zastępując
[-]
je[+]
.źródło