W tym pytaniu zdefiniowałem funkcję „łańcucha” jako funkcję, która:
jest permutacją, co oznacza, że każda wartość jest odwzorowywana na i jest odwzorowywana przez dokładnie jedną wartość.
i pozwala na uzyskanie dowolnej wartości z dowolnej innej wartości przez wielokrotne zastosowanie funkcji lub jej odwrotności.
Jest wiele funkcji, które to robią, a niektóre z nich są dość proste (zobacz odpowiedzi na to pytanie). Teraz zdefiniujemy osobną klasę funkcji, które zamierzam nazwać funkcjami „przeplatanymi”. Przeplatanego funkcja jest funkcją na zbiorze A , który zawiera dwie przegrody nieskończone 0 i 1 tak, że funkcja jest funkcją zarówno łańcuch a 0 a a 1 .
Oznacza to, że ma wartość w 0 można odwzorować na wartości o 1 za pomocą funkcji lub vice versa.
Zadanie
Twoim zadaniem jest napisanie kodu, który wykonuje lub definiuje funkcję przeplataną na dodatnich liczbach całkowitych. Twoja funkcja może być dowolna, o ile spełnia kryteria przeplatania się. Powinieneś dołączyć wyjaśnienie, dlaczego twoja funkcja jest wpleciona w odpowiedź.
To jest golf-golf pytanie, więc odpowiedzi będą oceniane w bajtach, przy czym mniej bajtów jest lepszych.
Odpowiedzi:
Python,
464237 bajtów5 bajtów zapisanych dzięki @notjagan
Wypróbuj online!
Iteruje liczby parzyste i nieparzyste ze skokiem 4 i łączy na 2 i 3:
źródło
JavaScript,
3024 bajtówSekwencje:
... 19 15 11 7 3 1 5 9 13 17 21 ...
... 18 14 10 6 2 4 8 12 16 20 24 ...
Fragment kodu
źródło
Dyalog APL,
2422 bajtówWypróbuj online!
Te same łańcuchy, co moja odpowiedź na python .
źródło