置換された剰余を持つ双子はいますか?


17

我々は定義Rnのユークリッド除算の剰余のリストとしてnによって235、および7

整数所与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)も同様)

ルール

  • kが存在する場合は真実の値を出力し、それ以外の場合は偽の値を出力するか、選択した2つの異なる一貫した値を出力します。
  • これはです。

ヒント

本当にkを計算する必要がありますか?まあ、多分。またはそうでないかもしれません。

テストケース

いくつかの値nれるk存在します。

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

いくつかの値nれるk存在しません。

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

回答:


20

R63 59バイト

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

オンラインでお試しください!

ジュゼッペのおかげで-4バイト

k

skss

  • s [2] <2およびs [2]!= s [1]
  • s [3] <3およびs [3]!= s [2]
  • s [4] <5およびs [4]!= s [3]

s

1
@dfeuerこれは、中国剰余定理の結果です。リンクを追加しました。2つの整数の剰余が2、3、5、および7を法とする剰余(順列なし)である場合、2つの整数は2 * 3 * 5 * 7を法とする剰余に等しくなります。
ロビンライダー




5

C#(Visual C#Interactive Compiler)125 42 38 36バイト

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

@RobinRyderのソリューションに基づいた@xnorの回答の直接ポート。

@ØrjanJohansenのおかげで4バイト節約されました!

@Arnauldのおかげでさらに2つ節約できました!

オンラインでお試しください!


1
私は、XNORの言語のための唯一の絆ばらつきが見つかりましたが、このために役立ちます:38バイト
Ørjanヨハンセン

1
ではない-~n%6/4>0だけ-~n%6>3
アーナルド

ところで、これはJavaScriptポリグロットです。
アーナルド







1

PHP81 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Ḷ+%Ṣ¥€®ċḢ$

オンラインでお試しください!

ゴルファーの答えがあると確信しています。真理値はゼロではないものと解釈したので、ここではkの可能な値の数です。2バイトの明確な値が必要な場合、さらにバイトがかかります。

説明

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
真実と偽りについてはすべて良い。真実と偽のメタ合意の定義を使用して(事実上「言語のif-elseコンストラクトがあれば何をするか」ゼロは偽であり、ゼロ以外は真実です(?Jellyのif-elseコンストラクトです;一部の言語では難しい質問)。
ジョナサン・アラン

ああ、あなたがḢe$望むなら、無料で明確な値を得ることができます:)
ジョナサン・アラン

@JonathanAllanはい、もちろんありがとう。:)
ニックケネディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.