무한 체인 만들기


16

함수 클래스를 정의 할 수 있습니다. 이러한 함수는 양의 정수에서 양의 정수로 매핑되며 다음 요구 사항을 충족해야합니다.

  • 이 함수는 Bijective 여야합니다. 즉, 모든 값은 정확히 하나의 값으로 매핑되고 매핑됩니다.

  • 함수 또는 그 역을 반복적으로 적용하여 양의 정수에서 다른 양의 정수로 이동할 수 있어야합니다.

이제이 클래스에서 하나의 기능을 수행 할 코드를 입력하십시오.

이것은 질문이므로 바이트 수가 적을수록 답이 바이트로 표시됩니다.


1
예를 들어 줄 수 있습니까?
Jack

1
@Jack Sure, 1-> 2를 매핑하는 함수를 고려하고, 다른 모든 홀수를 그 수에 2를 뺀 값과 2를 더한 2에 매핑합니다.
Post Rock Garf Hunter

1
잘 모르겠습니다. f (x) : = x + 1이이 클래스의 함수입니까? 이 경우 1+일반적인 lisp에서 트릭을 수행해야합니다.
MONODA43

2
@ MONODA43 모든 정수를 고려할 때이 함수는 생략됩니다. 그러나이 질문은 양의 정수에 대한 형용사를 요구합니다. x + 1 = 1 인 양의 x가 없기 때문에 1을 출력하지 못합니다.
kasperd

1
@Cowsquack 함수 또는 그 역을 반복적으로 적용하여 양의 정수에서 다른 양의 정수로 이동할 수 있어야합니다. 반복 횟수에 관계없이 ID를 적용하여 1에서 2로 이동할 수 없습니다.
kasperd

답변:



6

파이썬, 22 바이트

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

짝수는 이전 짝수로 내려 가고, 홀수는 다음 홀수로 올라가고, 매핑 2-> 1은이 둘을 연결합니다.


잠깐만 ... 그래서 6은 5 나 8에서 나올 수 있습니까? 유효하지 않습니까?
Destructible Lemon

@DestructibleLemon 아니요, 내 설명에서도 홀수로 바꿨습니다.
orlp

5

자바 스크립트 (ES6), 20 바이트

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

... -> 5 -> 3 -> 1 -> 2 -> 4 -> ...내가 생각 하는 지도 . 틀린 점 있으면 지적 해주세요...


9
모두 같은 생각이 훌륭합니다. 나는 역을 사용하고 있습니다.
데니스

@Dennis Heh, 나는 그 역수가 1 바이트 더 짧다는 것을 깨달았습니다.n=>n%2?n+2:n-2||1:2
ETHproductions

@Dennis 당신은 Yoda : o ( StepHen 's chat post ) 로 확인되었습니다
HyperNeutrino

@HyperNeutrino 모두 비슷하게 생각합니다
Pavel


4

젤리 , 6 바이트

-*Ḥạo1

온라인으로 사용해보십시오!

작동 원리

-*Ḥạ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
데니스가 정말 '반쪽'으로 도망치게합니까? ㅋ.
orlp

2

파이썬 3, 43 바이트

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

온라인으로 사용해보십시오!

그리고 반대로, 또한 43 바이트 :

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

온라인으로 사용해보십시오!

TIO 링크는 Dennis의 테스트 바닥 글 코드를 사용합니다.

모두가 한 가지 방법을 사용하고 있기 때문에 나는 달라지기로 결정했기 때문에 (나는 아마 그것을 처음 발견 한 사람은 아니지만) 스스로 기능을 만들었습니다. 이 함수는와 같은 맵으로 ... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ..., 원한다면 이것을 테스트하기 위해 만든 핸드 드로잉을 보여줄 수 있습니다.

내 골프 알고리즘 아마도 골프 가능 할 수 있습니다 -팁을 주시면 감사하겠습니다.

Ungolfed 버전 : 온라인으로 사용해보십시오!




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.