ロストイントランスレーション


15

これは 形式に慣れていない場合です。タグをクリックしてwikiに移動します。この質問に対する強盗のスレッドはありません。

警官

警官としての仕事は、整数シーケンスのオンライン百科事典から2つのシーケンスを選択し、1つのシーケンスのn番目の要素を入力として取り、2番目のシーケンスのn番目の要素を出力するプログラムを書くことです。次に、コードを含めて回答を作成し、選択したシーケンスを省略します。強盗は、あなたが選択したシーケンスを見つけようとします。あなたが考えていたシーケンスやプログラムのその他のシーケンスを見つけることができた場合、あなたの答えをクラック済みとしてマークする必要があります。強盗が、有効ではないと思われるひび割れを通知した場合、ひび割れではないという証拠を提示できます。それ以外の場合は、マークする必要があります。

7日間クラックされていない通常の回答に従って、安全とマークされる資格があります。警官は、彼らが念頭に置いていたシーケンスを明らかにすることにより、彼らの答えを安全とマークするかもしれません。安全になったら、回答がクラックされることはなくなります。

目標は、プログラムのバイトカウントを最小限に抑えながら、クラックを発生させないことです。

次のPythonコードは、A000290のn番目の要素(正方形の数)をA000217(三角形の数)に変換します。

lambda x:sum(range(0,int(x**.5+1)))

規定と要件

  • 有限であることが証明されていないシーケンスを選択した場合、OEISページにリストされている用語だけでなく、存在する可能性のあるすべての用語を出力する必要があります

  • 無限精度の整数を持たない以前のルール言語の例外として、範囲外の数値を出力または入力する必要はありません。

  • 入力シーケンスのサイズは、出力シーケンスよりも小さいことが証明されていてはなりません。

  • 入力シーケンスに繰り返し要素を含めることはできません(そうでない場合、タスクはほとんど不可能です)

  • OEISのページにインデックス(「OFFSET」ヘッダーの後の最初の番号)が含まれます。デフォルトで、nのオフセットです(nはシーケンスの最初の要素のインデックスと同じです)。あなたの答え。

  • OEISにリストされているオフセットとは異なるオフセットを選択した場合でも、入力シーケンスのすべての要素を出力シーケンスの対​​応する要素にマッピングする必要があります。

  • プログラムが入力シーケンスにない入力を受け取った場合、希望することは何でもできます(未定義の動作)。ただし、おそらく整数を出力することはおそらくあなたの最大の関心事です。

  • コードを実行するのに時間がかかったり、フリーでない言語を選択したりして、意図的にコードを実行するのを難しくするのはスポーツマンらしくないです。私は後者を実施しますが、前者を客観的に実施することはできません。しかし、楽しみのために、前者を試してはいけないことをお勧めします。前者を試してみてください。これは、コンピューターが弱い人にとっては特に難しいことです。

強盗

強盗としてのあなたの仕事は、割れていない、安全でない答えを選択し、それらがマップするシーケンスを見つけることです。解決策が見つかった場合、動作する解決策(必ずしも警官の意図した解決策であるとは限りません)で、適切な答えについてシーケンスをコメントします。

強盗は、2つの特定のシーケンスが解決策であることを確認することについてあまり心配するべきではありません。OEISのすべてのエントリに一致する場合は、解決策を投稿する必要があります。それが警官が念頭に置いていたシーケンスではない場合、警官はそれが間違っているという証拠を提供するか、彼らがそれを見つけることができない場合にひびが入っているとマークすることができます。


3
強盗は、自分の答えがすべての入力に対して正しいことをどのようにして確認できますか 彼らはそれを数学的に証明しなければなりませんか?
レオ

1
@Leo OEISのすべてのエントリと一致する場合、強盗はソリューションを投稿する必要があります。それが警官が念頭に置いいた順序ではない場合、彼らはそれが間違っているという証拠を提供するか、彼らがそれを見つけることができない場合にひびが入ったとしてマークするかもしれません。強盗のスレッドを更新します。
ポストロックガーフハンター

2
一般的な仮定と実証されていないアイデアを区別するのは困難です。わかりやすくするために、答えが機能することを証明できる必要があると思います。
デニス

1
私はいくつかの本当に良い解決策のような間抜けな方法で割れることができることを感じていoeis.org/A000004を > - oeis.org/A000012は
ヴォルフラム

2
@デニスそれは良い点だと思います。しかし、この課題にはかなり注意が必要であると思われるため、クラックを見つけるための担当者を受け取る方法がありません。
0 '

回答:


6

ゼリー、14バイト(@Wolframによりクラック)

+66%444µ111<µ¡

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

これが何をするかはかなり明白なはずです。実際、Jelly以外のユーザーの利益のために、私も説明をします。

説明

+66%444µ111<µ¡
       µ    µ¡  Run the transformation
+66%444           "add 66, then modulo 444"
        111<    once if 111 is less than the input, zero times otherwise 

問題は、なぜこれを行うのですか?

クラック

問題のシーケンスはA201647およびA201647でした。それらは有限であり、最後の2つの要素のみが異なります。

  • 3、5、7、9、11、15、21、165、693
  • 3、5、7、9、11、15、21、231、315

したがって、入力が低い場合はそのままにして、最後の2つの変換に関数を単純に適合させます。


@WheatWizard:あなたがそれから利点を得ることができると思うなら、それを選んでください。ただし、キャッシュを有効にした状態で他の誰かがそれをテストした場合、その後のすべてのユーザーのキャッシュが汚染されるため、高速にする必要があります。

@WheatWizard 出力キャッシュ無効にすると、サーバーから新しい結果を取得できますが、その新しい結果は引き続きキャッシュされます。
デニス

1
@WheatWizardまたは、テスト時にキャッシュブレーカーを追加します。コメントの一部としてランダムに選択された文字列または未使用の入力フィールド。
デニス

+1この答えは本質的に非常に単純ですが、それでも強盗に挑戦します
Kritixi Lithos


3

ゼリー、7バイト(@JonathanAllanによりクラック)

ÆFḅÆdÆẸ

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

何をする

ÆFḅÆdÆẸ  Main link. Argument: n

ÆF       Factor n into prime-exponent pairs.
   Æd    Compute σ, the number of divisors of n.
  ḅ      Convert each pair from base σ to integer.
     ÆẸ  Yield the integer whose prime signature (infinite sequence of all prime
         exponents, including zeroes, in order) is equal to the result.

3
他にも有効なマッピングがあるかもしれませんが、私が考えていたのは素数-A000040 to 2 ^(2p + 1)、p prime-A100626です。
ジョナサンアラン

あなたは私の遅い指打つものの、同様> A100626 - @JonathanAllan私はA000040に来た
Ahemone

入力が素数であるとき、:我々はまた、それが保持することを確認することができpÆF歩留まり(p,1)、およびÆd利回り2ので、私たちを取得する2p+1手段はこれ、ÆẸ最初の首相、得られます2、その結果乗を、2^(2p+1)
ジョナサンアラン

@JonathanAllanはい、それが私が目指していたことです。
デニス

2

Python 3、256バイト(クラック!

from math import*
def p(i,m):
 r=0;d=floor(log(i))
 for y in range(d):r+=(pow(16,d-y-1)%(8*y+m))/(8*y+m)
 o=-1;y=d
 while r!=o:o=r;r+=pow(16,d-y-1)/(8*y+m);y+=1
 return r
def q(n):r=4*p(n,1)-2*p(n,4)-p(n,5)-p(n,6);return floor((1-(-r%1)if r<0 else r%1)*16)

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

このコードが恐ろしく見える場合は申し訳ありませんが、これは私の最初のPythonゴルフだと思います。Pythonでのキャストにより、コーディングが容易になります。


問題の関数はq
ポストロックガーフハンター

また、変数kは未使用のようなので、削除することでバイトを節約できます。
ポストロックガーフハンター


@WheatWizardはい、ありがとう、はい。
betseg

2

処理中、184バイト、安全!

int x(int y){int b=TRIANGLES-MITER;for(int i=OVERLAY/BURN;i>#fffffe;b*=(int)pow(y,(MOVE-HAND+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=QUAD/DARKEST);return b;}

intを取り込んでintを返す関数。入力番号がintの範囲内にある限り、プログラムは正常に動作するはずです。

これは遅くはなく、単に読めません。幸運を!


この提出がこれほど長く続いたことに驚きました。まあ、少なくともそれは最初の安全な提出です:)

A000578からA000290

つまり、立方体から正方形へ。

説明

No string(or numbers) attachmentと答えている間に、intを表すProcessing定数のリストを発見しました。たとえばCORNER、値は0です。完全なリストはここにあります。定数の値を見つけるには、次のようにします。printそれで。

これを使用して、特定の数値をこれらの定数の組み合わせと入れ替えて難読化することにしました。したがって、定数をそれぞれのint値で置き換えると、次のようになります。

int x(int y){int b=9-8;for(int i=512/8192;i>#fffffe;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=16/16);return b;}

今でも、完全な明確なコードは明らかにされていません。色は残っています。Processingでは、色変数はint値を持ちます。たとえば、白(#ffffff)is -1#fffffeis -2#fffffdis -3、などです。これprintは色を見つけることで見つけることができます。それでは、色を単純化しましょう。

int x(int y){int b=9-8;for(int i=512/8192;i>-2;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(-16777216*-1))),i-=16/16);return b;}

私たちはほぼそこにいます:)値を理解するには、数値式を単純化する必要があります。

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)log(16777216))),i-=1);return b;}

より明確に!次に、対数を単純化しましょう。

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)16.6...)),i-=1);return b;}


int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/16)),i-=1);return b;}

もうすぐ!次に、この(int)sqrt(red(color(-65536))/16))一口を把握する必要があります。color(-65536)そう、赤ですrgb(255, 0, 0)。これで、red()関数は引数に赤いコンポーネントの値(色)を返します。それで、赤はどれくらい赤ですか?答えはあります255。それで私たちは得る

(int)sqrt(255/16))
(int)sqrt(15)
(int)3.8...
3

プログラムでこれを置き換えると、次の結果になります。

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/3),i-=1);return b;}

できた!

int x(int y){                        // y is the cube
  int b=1;                           // variable that holds the final result
  for(int i=0;                       // for-loop that
          i>-2;                      // loops twice
          b*=(int)pow(y,(1.)/3),     // multiply b by the cube root of y
          i-=1);                     // decrement the looping variable
  return b;                          // finally return b
}

まとめると、これは、入力数の立方根の平方(forループで2回乗算することによって行われます)を返します。


0

Mathematica(または何でも)—  クラック!

f[x_] := Quotient[ 366403414911466530559405368378193383110620062 - 
    755296348522256690003418238667147075159564695 x + 
    525778437135781349270885523650096958873079916 x^2 - 
    156594194215500250033652167655133583167162556 x^3 + 
    20861131421245483787723229627506507062999392 x^4 - 
    1181515772235154077024719095229309394979146 x^5 + 
    29382627265060088525632055454760915985604 x^6 - 
    308672970015057482559939241399297150364 x^7 + 
    1087516675449597417990589334580403666 x^8 - 
    312989984559486345089577524231879 x^9, 
  265451130886621254401938908479744271974400 ]

Mathematicaは非フリーソフトウェアであることは知っていますが、この関数は実行したい好みの言語に移植するのは簡単です。入力整数で評価された与えられた次数-9多項式の値を文字通り計算し、整数商を取りますその値と最後の行の42桁の数字。たとえば、とf[100]評価され-3024847237ます。


2
A003173からA165892。ただし、実際にはプログラミングの問題ではありません;)
レオ

2
とにかく、数学は無料ではないので、Python関数に変換するためにこれを書きました
Leo

@レオ:すばらしい仕事です!関数にはイースターエッグもあります。見つけましたか?:D
グレッグマーティン

うーん...いや:(
レオ

1つの9要素セットを別の9要素セットにマッピングするには、次数8の多項式のみが必要です。特定の出力値にマッピングされた入力値がもう1つあるという(正しい)結論を導き出すことができます。(いつ)見つけたら教えてください:)
グレッグマーティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.