Zrób nieskończony łańcuch


16

Pozwala zdefiniować klasę funkcji. Funkcje te będą mapowane z dodatnich liczb całkowitych na dodatnie liczby całkowite i muszą spełniać następujące wymagania:

  • Funkcja musi być Bijective, co oznacza, że ​​każda wartość jest odwzorowywana na i jest odwzorowywana przez dokładnie jedną wartość.

  • Musisz być w stanie przejść od dodatniej liczby całkowitej do dowolnej dodatniej liczby całkowitej przez wielokrotne stosowanie funkcji lub jej odwrotności.

Teraz napisz kod, który będzie wykonywał dowolną funkcję w tej klasie na jej wejściu.

To jest pytanie w więc odpowiedzi będą oceniane w bajtach, przy czym mniej bajtów będzie lepszych.


1
Czy możesz podać przykład?
Jack

1
@Jack Pewnie, rozważ funkcję, która odwzorowuje 1 -> 2, odwzorowuje każdą inną liczbę nieparzystą na tę liczbę minus 2 i każdą liczbę parzystą na tę liczbę plus 2.
Post Rock Garf Hunter

1
Nie jestem pewien, czy rozumiem. Czy f (x): = x + 1 byłoby funkcją tej klasy? W takim przypadku 1+wspólne seplenienie powinno załatwić sprawę .
MONODA43

2
@ MONODA43 Ta funkcja to bijection przy rozważaniu wszystkich liczb całkowitych. Ale pytanie to wymaga odrzucenia liczb całkowitych dodatnich. Twoja sugestia nie dałaby wyniku 1, ponieważ nie ma dodatniego x, dla którego x + 1 = 1.
kasperd

1
@Cowsquack Musisz być w stanie przejść od dodatniej liczby całkowitej do dowolnej dodatniej liczby całkowitej przez wielokrotne stosowanie funkcji lub jej odwrotności. Nie można uzyskać od 1 do 2, stosując tożsamość, bez względu na to, ile razy się powtórzysz.
kasperd

Odpowiedzi:



6

Python, 22 bajty

lambda n:n+n%2*4-2or 1

Liczby parzyste przechodzą do poprzedniej liczby parzystej, liczby nieparzyste przechodzą do następnej liczby nieparzystej, a mapowanie 2 -> 1 łączy te dwa.


czekaj ... więc 6 może wynikać z 5 lub 8? to nieważne?
Destructible Lemon

@DestructibleLemon Nie, po prostu dziwne zastąpione przez nawet w moim wyjaśnieniu.
orlp

5

JavaScript (ES6), 20 bajtów

n=>n>1?n%2?n-2:n+2:2

Mapy ... -> 5 -> 3 -> 1 -> 2 -> 4 -> ..., które moim zdaniem są prawidłowe. Popraw mnie, jeśli się mylę...


9
Podobne umysły myślą świetnie. Używam odwrotności.
Dennis

@Dennis Heh, i właśnie zdałem sobie sprawę, że odwrotność jest o 1 bajt krótsza:n=>n%2?n+2:n-2||1:2
ETHproductions

@Dennis Potwierdzono, że jesteś Yoda: o ( post StepHen na czacie )
HyperNeutrino

@HyperNeutrino Świetnie, podobnie myślą
Pavel


4

Galaretka , 6 bajtów

-*Ḥạo1

Wypróbuj online!

Jak to działa

-*Ḥạo1  Main link. Argument: n

-*      Compute (-1)**n, yielding 1 for even n and -1 for odd n.
  Ḥ     Unhalve; multipliy the result by 2.
   ạ    Compute the absolute difference of the result and n.
    o1  If the difference is 0, yield 1.

13
Czy naprawdę pozwalamy Dennisowi na ucieczkę? Ha ha.
orlp

2

Python 3, 43 bajty

lambda n,a=(1,3,-3,-1):n+a[n%4]if n-2else 1

Wypróbuj online!

I odwrotnie, również 43 bajty:

lambda n,a=(-3,-1,1,3):n+a[n%4]if n-1else 2

Wypróbuj online!

Łącza TIO używają testowego kodu stopki Dennisa.

Ponieważ wszyscy używają jednego sposobu, zdecydowałem, że będę inny, więc stworzyłem własną (choć prawdopodobnie nie jestem pierwszą osobą, która to odkryła). Ta funkcja mapuje ... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ..., mogę pokazać ci rysunek odręczny, który wykonałem, aby to przetestować, jeśli chcesz.

Moim algorytmem do gry w golfa jest prawdopodobnie golfable - napiwki byłyby mile widziane.

Wersje bez golfa: wypróbuj online!




Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.