x ^ 2が7 ^ x-1を除算するような数値x


16

仕事

分割するxような数のセットがあります。x^27^x-1

あなたの仕事はこれらの数字を見つけることです。nを入力すると、コードはこの規則に従うn番目の数字を出力します。

例1-インデックス

In   Out
3    3
9    24
31   1140

関連するシーケンスはここで見つけることができます

ルール

最短回答が勝者となります*

標準的なゴルフ規則が適用されます

抜け穴は許可されていません

あなたの答えは、0または1のいずれかのインデックスになります。答えに明記してください


@nimi計画時にこれらを書き留めて実装しませんでした。質問を更新しました
ジョージ

の制限はn何ですか?私は正しい結果を与えることができn=9ますが、n=10すでに私の問題を引き起こしています。
-briantist

@briantistより高い入力値に対して間違った結果が得られている場合、答えは間違っています。時間がかかる場合は、実装に依存する可能性があります。
mbomb007

時間がかかるだけではありません。n=1032をくれます。整数の代わりにdoubleの使用を開始し、その後modが間違っているためです。:(
ブリアンティスト

回答:


8

Haskell、34バイト

([x|x<-[1..],mod(7^x-1)(x^2)<1]!!)

これは、0ベースのインデックスを使用します。使用例:([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30-> 1140

定義の直接実装です。すべての数値のリストを作成しxnthを選択します。


5

Pyth、10バイト

e.f!%t^7Z*

整数の入力を受け取り、1つのインデックス付きの値を出力するプログラム。

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

使い方

e.f!%t^7Z*     Program. Input: Q
e.f!%t^7Z*ZZQ  Implicit variable fill
               Implicitly print
e              the last
 .f         Q  of the first Q positive integers Z
     t^7Z      for which 7^Z - 1
    %          mod
         *ZZ   Z^2
   !           is zero

5

JavaScript(ES7)、40バイト

f=(n,i=1)=>n?f(n-!((7**++i-1)%i**2),i):i

JSがによって精度を失うため、これはかなり早く精度を失い7**19ます。以下は、ほぼ任意精度のES6バージョンです。

f=(n,i=0)=>n?f(n-!(~-(s=++i*i,g=j=>j?g(j-1)*7%s:1)(i)%s),i):i

これは、テストケース31で約1秒以内に終了します。

いくつかのより長いアプローチ:

f=(n,i=0)=>n?f(n-!(~-(s=>g=j=>j?g(j-1)*7%s:1)(++i*i)(i)%s),i):i
f=(n,i=0)=>n?f(n-!(s=++i*i,g=(j,n=1)=>j?g(j-1,n*7%s):~-n%s)(i),i):i
f=(n,i=0)=>n?f(n-!(s=>g=(j,n=1)=>j?g(j-1,n*7%s):~-n%s)(++i*i)(i),i):i

4

05AB1E、11バイト

µ7Nm<NnÖiN¼

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

何らかの理由で、私は得ることができない½で作業するµ7Nm<NnÖ½Nか、私はPythで結ばれるだろう。

µ           # Loop until the counter equals n.
 7Nm<       # Calc 7^x+1.
     Nn     # Calc x^2.
       Ö    # Check divisibility.
        iN¼ # If divisible, push current x and increment counter.
            # Implicit loop end.
            # Implicitly return top of stack (x)


ええ、私はそのÖ修正リストに数ヶ月間その癖を持っていますが、私はそれに対処することはできません。とにかく、スタックが空の場合、最後Nµ自動的に出力する必要はありませんN
エミグナ

4

パイソン248の 46バイト

-2バイトの@Dennisに感謝します!

f=lambda n,i=1:n and-~f(n-(~-7**i%i**2<1),i+1)

引数を介して入力を受け取り、結果を返す、インデックスが1つの再帰関数。

オンラインでお試しください!(最終的なテストケースを実行できるように再帰制限が増加しました)

使い方

nは目的のインデックスでありi、カウント変数です。

式は、を分割する場合(に相当)を~-7**i%i**2<1返し、そうでない場合(に相当)を返します。関数が呼び出されるたびに、式の結果がから減算され、ヒットが見つかるたびにデクリメントされます。インクリメントされます。True1i^27^i - 1False0nni

の短絡動作は、が返さandれることを意味します。これが基本ケースです。これに達すると、再帰が停止し、元の関数呼び出しによって現在の値が返されます。明示的にを使用するのではなく、関数呼び出しごとに、呼び出しの前でを使用してインクリメントが実行されるという事実を使用して行われます。必要に応じて、時間をインクリメントするとが得られます。n00ii-~0 ii


1
(~-7**i%i**2<1)数バイト節約します。
デニス

@デニスもちろん!ありがとう。
TheBikingViking

3

パイソン257の 53 51バイト

ETHproductionsのおかげで-4バイト-TuukkaXのおかげで
2バイト

i=0
g=input()
while g:i+=1;g-=~-7**i%i**2<1
print i

オンラインでお試しください!
シーケンスは1から始まります


@ETHproductionsうんc:
ロッド

括弧を削除するとテストケースは失敗します(7**i)か?私はそれらを削除し、私が試したもののために働いた。
Yytsi

@TuukkaXは確かに、**より高い優先順位を持つ~-
ロッド・

2

Python 2、57バイト

大きな値の場合、これには非常に長い時間がかかります。また、リスト全体を必要以上に構築するため、大量のメモリを使用します。結果はゼロインデックスです。

lambda n:[x for x in range(1,2**n+1)if(7**x-1)%x**2<1][n]

オンラインで試す


好奇心から、2**n+1上限としての証拠はありますか?
ロッド

@Rod私が知っていることではありませんが、50の値が5000未満であることを考えると、50をはるかに超える<があると確信してい2**50ます。を使用できますが9**n+9、はるかに長い時間がかかります。私f(20)は少し前に(で2**n+1)走り始めました。まだ完了していません。
mbomb007

シーケンスが無限であるという証拠はないと思います。n番目の項の素晴らしい上限は言うまでもありません。
グレッグマーティン

2

Mathematica、43バイト

現在、このバイトカウントで3つの異なるソリューションがあります。

Nest[#+1//.x_/;!(x^2∣(7^x-1)):>x+1&,0,#]&
Nest[#+1//.x_/;Mod[7^x-1,x^2]>0:>x+1&,0,#]&
Nest[#+1//.x_:>x+Sign@Mod[7^x-1,x^2]&,0,#]&

X ^ 2と(7間の文字はどのようなものです^ xを...最初の行には、パイプのように見えるが短い?
斎場

@Sefa数学的な「除算」記号のUnicode文字であり、の演算子としてMathematicaによって使用されDivisibleます。
マーティンエンダー

41バイトに1つありCases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&ます。n^ 3が上限であるというヒューリスティックな引数に基づいています。私はこれの本当に素晴らしい証拠を発見しました。このマージンは狭すぎて収容できません:)
ケリー

2

PARI / GP、42バイト

とても簡単です。1インデックス付きですが、これは簡単に変更できます。

n->=k=1;while(n--,while((7^k++-1)%k^2,));k

または

n->=k=1;for(i=2,n,while((7^k++-1)%k^2,));k


1

R、35バイト

これはでのみ機能しn<=8ます。

z=1:20;which(!(7^z-1)%%z^2)[scan()]

しかし、ここで働い長いバージョンだn<=25ため、50バイト

z=1:1e6;which(gmp::as.bigz(7^z-1)%%z^2==0)[scan()]

これ8はlong intになるためにしか機能しませんか?
ジョージ

1
@georgeはい、Rのデフォルトは32ビット整数であるため、精度が低下します。コードの2番目のバージョンでは、gmp任意の大きな整数を許可するパッケージを使用します。ただし、上記のすべてを計算するためにRAMがすぐに不足しますn=25
rturnbull

0

PHP、47 49バイト

while($n<$argv[1])$n+=(7**++$x-1)%$x**2<1;echo$x;

n <9でのみ機能します(64ビット7**9よりも大きいPHP_INT_MAX

任意の長さの整数を使用した62バイト:(テストされていません。私のマシンのPHPにはbcmathがありません)

for($x=$n=1;$n<$argv[1];)$n+=bcpowmod(7,++$x,$x**2)==1;echo$x;

で実行しphp -nr '<code>' <n>ます。

擬似コード

implicit: $x = 0, $n = 0
while $n < first command line argument
    increment $x
    if equation is satisfied
        increment $n
print $x


0

Clojure、83バイト

(fn[n](nth(filter #(= 0(rem(-(reduce *(repeat % 7N))1)(* % %)))(iterate inc 1N))n))

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

これにより、1から始まるJava BigIntegerの無限リストが作成され、定義によってフィルタリングされます。ゼロベースのインデックスを使用して、して、フィルターされたリストからn 番目の値。


0

Perl 5、35バイト

まあ、これは欠落していたので、ここにあります:

map{$_ if!((7**$_-1)%($_**2))}1..<>


0

PowerShell、バイトが多すぎます

それが可能かどうかを確認するだけです。

[System.Linq.Enumerable]::Range(1,10000)|?{[System.Numerics.BigInteger]::Remainder([System.Numerics.BigInteger]::Pow(7,$_)-1,$_*$_) -eq 0}

0

Perl 6の35の 34バイト

{grep({(7**$_-1)%%$_²},^∞)[$_]}

0インデックス付き。

Brad Gilbertのおかげで1バイト削り取られました。


あなたはそれの後に括弧を置く場合は、スペースを削除することができますので、grepがサブルーチンである{grep(…)}
ブラッド・ギルバートはb2gills

0

QBIC、39バイト

:{~(7^q-1)%(q^2)=0|b=b+1]~b=a|_Xq\q=q+1

QBasic 4.5では実行できませんでしたが、QB64では正常に実行されるようです。何らかの不可解な理由で、QBasicは13,841,287,200を144できれいに分割することを拒否しますが、代わりに-128の残りを与えます。次に、このシーケンスの7番目の項として12ではなく16を返します...

:{      get N from the command line, start an infinite DO-loop
~       IF
(7^q-1) Part 1 of the formula (Note that 'q' is set to 1 as QBIC starts)
%       Modulus
(q^2)   The second part
=0      has no remainder
|b=b+1  Then, register a 'hit'
]       END IF
~b=a    If we have scored N hits
|_Xq    Quit, printing the last used number (q)
\q=q+1  Else, increase q by 1. 
        [DO-loop and last IF are implicitly closed by QBIC]

0

ワンダー、28バイト

@:^#0(!>@! % - ^7#0 1^#0 2)N

ゼロインデックス。使用法:

(@:^#0(!>@! % - ^7#0 1^#0 2)N)2

x^2で割り切れるかどうかを決定する述語で自然数のリストからフィルターし、そのリストの7^x-1n番目のアイテムを取得します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.