치환 된 나머지가있는 쌍둥이가 있습니까?


17

우리는 정의 Rn 의 유클리드 분할의 나머지의리스트로서 n 에 의해 2 , 3 , 57 .

정수 주어 n0 하면 정수가 존재하는지 알아 내야 0<k<210 지도록을 Rn+k 의 순열 Rn .

n=8 대한 기준이 충족됩니다 .

  • 우리는 R8=(0,2,3,1)
  • 에 대해 k=44 , 우리가 Rn+k=R52=(0,1,2,3) 의 치환되는 R8

n=48 대한 기준이 충족되지 않습니다 .

  • 우리는 R48=(0,0,3,6)
  • 최소 정수 k>0 되도록 Rn+k 의 순열 R48 이고 k=210 (선도 R258=(0,0,3,6) 뿐만 아니라)

규칙

  • 당신도 출력 truthy 값 경우 수도 k 존재하고 그렇지 않으면 falsy 값, 또는 당신의 선택의 두 가지 일관된 값.
  • 이것은 입니다.

힌트

정말로 k 를 계산해야 합니까? 아마도 요 아니면 아닐 수도 있습니다.

테스트 사례

k 가 존재 하는 n 일부 값 :k

3, 4, 5, 8, 30, 100, 200, 2019

의 일부 값 n 하는 k 존재하지 않습니다

0, 1, 2, 13, 19, 48, 210, 1999

답변:


20

R , 63 59 바이트

s=scan()%%c(2,3,5,7);i=which(s<c(0,2,3,5));any(s[i]-s[i-1])

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

주세페 덕분에 -4 바이트

(설명에는 k 를 계산하지 않고 문제를 해결하는 방법에 관한 스포일러가 포함되어 있습니다.k .)

설명 :하자 s 나머지의 목록을합니다. s [1] <2, s [2] <3, s [3] <5 및 s [4] <7의 제한 조건에 유의하십시오. 에 의해 , 중국 잉여 정리 하는 존재 k 의 순열이 IFF에 s 구별, s 제약 조건을 확인합니다. 실제로 다음 조건 중 하나가 확인되면 확인됩니다.

  • s [2] <2 및 s [2]! = s [1]
  • s [3] <3 및 s [3]! = s [2]
  • s [4] <5 및 s [4]! = s [3]

순열이 왜 와 다른지 설명 할 수 있습니까? 에스
dfeuer

1
@dfeuer 그것은 중국 나머지 정리의 결과입니다. 링크를 추가했습니다. 두 정수가 동일한 나머지 모듈로 2, 3, 5 및 7 (순열없이)을 갖는 경우, 두 정수는 동일한 모듈로 2 * 3 * 5 * 7 = 210입니다.
Robin Ryder




5

C # (Visual C # 대화식 컴파일러) , 125 42 38 36 바이트

n=>n%7<5&5<n%35|n%5<3&3<n%15|-~n%6>3

@RobinRyder의 솔루션을 기반으로하는 @xnor의 답변의 직접 포트.

@ Ørjan Johansen 덕분에 4 바이트가 절약되었습니다!

@Arnauld 덕분에 2 개 더 절약되었습니다!

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


1
나는 xnor의 언어들과 만 관련이 있지만 이것에 도움이되는 변형을 발견했다. 38 바이트
Ørjan Johansen

1
아닌가요 -~n%6/4>0단지 -~n%6>3?
Arnauld

BTW, 이것은 JavaScript 폴리 글롯 입니다.
Arnauld







1

PHP ,81 78 72 바이트

while($y<3)if($argn%($u='235'[$y])!=($b=$argn%'357'[$y++])&$b<$u)die(T);

@Robin Ryder의 답변 에 대한 리프 . 입력은을 통해 이루어지며 STDIN출력은 'T'진실한 경우, 거짓이면 비어 ''있습니다.

$ echo 3|php -nF euc.php
T
$ echo 5|php -nF euc.php
T
$ echo 2019|php -nF euc.php
T
$ echo 0|php -nF euc.php

$ echo 2|php -nF euc.php

$ echo 1999|php -nF euc.php

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

1또는 0응답이있는 73 바이트

while($y<3)$r|=$argn%($u='235'[$y])!=($b=$argn%'357'[$y++])&$b<$u;echo$r;

$ echo 2019|php -nF euc.php
1
$ echo 1999|php -nF euc.php
0

온라인으로 사용해보십시오 (모든 테스트 사례)!

원래 답변, 133 127 바이트

function($n){while(++$k<210)if(($r=function($n){foreach([2,3,5,7]as$d)$o[]=$n%$d;sort($o);return$o;})($n+$k)==$r($n))return 1;}

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



1

05AB1E , 16 바이트

Ƶ.L+ε‚ε4Åp%{}Ë}à

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

Ƶ.L          # Create a list in the range [1,209] (which is k)
   +         # Add the (implicit) input to each (which is n+k)
    ε        # Map each value to:
            #  Pair it with the (implicit) input
      ε      #  Map both to:
       4Åp   #   Get the first 4 primes: [2,3,5,7]
          %  #   Modulo the current number by each of these four (now we have R_n and R_n+k)
           { #   Sort the list
           #  After the inner map: check if both sorted lists are equal
           # After the outer map: check if any are truthy by taking the maximum
             # (which is output implicitly as result)

내이 05AB1E 팁을 참조하십시오 (섹션 얼마나 큰 정수를 압축하는 방법을? ) 이유를 이해하는 Ƶ.것입니다 209.



1

젤리 , 15 바이트

8ÆR©PḶ+%Ṣ¥€®ċḢ$

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

골퍼 답변이 있다고 확신합니다. 나는 진실한 값을 0이 아닌 것으로 해석 했으므로 k의 가능한 값의 수입니다. 추가 바이트가 필요한 두 개의 고유 값이어야하는 경우.

설명

8ÆR             | Primes less than 8 [2,3,5,7]
   ©            | Copy to register
    P           | Product [210]
     Ḷ          | Lowered range [0, 1, ..., 208, 209]
      +         | Add to input
         ¥€     | For each of these 210 numbers...
       %   ®    |   Modulo 2, 3, 5, 7
        Ṣ       |   And sort
            ċḢ$ | Count how many match the first (input) number’s remainders

1
진실과 거짓에 관한 모든 것. 메타를 사용하여 truthy 및 falsey의 정의를 합의 (효율적 "언어의 경우 - 다른 구조를 무엇을 할이 하나 인 경우) 제로 falsey하고 비 제로는 truthy가 (있는 ?젤리의 경우 - 다른 구조이며, 일부 언어 그것의 A에 대한 어려운 질문).
Jonathan Allan

아, 그리고 원한다면 무료로 별개의 가치를 얻을 수 Ḣe$있습니다 :)
Jonathan Allan

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