コードの変更、シーケンスの変更:強盗


15

これは挑戦です。警官のスレッドについては、こちらをご覧ください

この課題には、警官によって選択された2つのOEISシーケンス(S 1S 2)と、それらのシーケンスをどれだけうまくゴルフおよび難読化できるかが含まれます。

警官は、S 1を生成するコードAを構築し、S 2を生成するBを作成するのに可能な最良のレーベンシュタイン距離(文字数)であると主張する数値Xを与えます。

強盗の挑戦

特定の警官の提出物を解読するには、強盗は、S 2(n)を生成し、Y文字がA(with )から変更される回答と同じ言語(およびバージョン)のプログラムCを作成する必要があります。強盗は必ずしも警官が(密かに)生成したものとまったく同じBコードを見つける必要はありません。強盗の提出物は、警官の提出物で指定されたものと同じ0インデックスまたは1インデックスに準拠する必要があります。Y <= X

これを管理する場合は、ソリューションに回答を投稿し、警官の回答にリンクし、警官の回答にコメントを残して自分にリンクします。

各警官の回答は1回しか解読できません。もちろん、自分の回答を解読することはできません。警官の答えがクラッキングされる前または後に無効であることが判明した場合、強盗のスコアにはカウントされません。

勝利と得点

強盗は(X - Y)*5 + 5クラックごとにスコアリングされ、全体的に最高スコアの強盗が勝ちます。

さらなるルール

  • ハッシュ、暗号化、または乱数生成に組み込み関数を使用しないでください(乱数ジェネレーターを固定値にシードした場合でも)。
  • プログラムまたは関数のいずれかが許可されますが、コードはスニペットであってはならず、REPL環境を想定してはなりません。
  • 便利な形式で入力して出力できます。入出力メソッドは、両方のシーケンスで同じでなければなりません。
  • この挑戦のためのレーベンシュタイン距離のための決定的な計算がある。この1プラネットCalcの上。
  • CnRチャレンジであることに加えて、これはため、すべての通常のゴルフルールが適用されます。

回答:


7

パイク、レーベンシュタイン距離1、A036487A135628-スコア5

泥だらけのエントリの亀裂

wX*e

ここで試してみてください!

元のコード、X*e入力を2乗し、入力とX乗算し*、結果を半分にしeます。

トリックは'X'、のベース96表現で56であるwためwX、56を生成し、それを入力で乗算し、次にフロアと半分にすると、必要に応じて入力の28倍になります。


まさに私が持っていたもの。予想より少し長かった
ブルー

私はそれを見てすぐに、それが意図された解決策であることを知った。
ジョナサンアラン

4

Brain-Flak、28バイト、距離4、A002817A090809

(({(({})[()])}{}){{({}[()])}{}})

この回答は、35,000の可能なプログラムを生成するブルートフォーサーの助けを借りて発見されました(それらの多くは不均衡であり、したがって無効なブレインフラックコードでしたが、とにかくバグを見つけて答えを見つけました)。これはテストされた約2万回のプログラムであり、見つけるのに約1時間かかりました(ただし、プログラムが終了してから不在だったので正確にはわかりません)。

このプログラムがどのように機能するのかまだ完全に理解していないので、この回答をまだ投稿したくありませんでした。ただし、答えは安全であるため、有効期限が切れないようにします。この回答を完全に理解したら、この回答を更新し、この回答を見つけるために使用したコードを投稿したいと考えています。しかし、今のところは、部分的な説明のみを掲載します。

#Push the sum of:
(

    #The (n-1)th triangular number, and the range [1, n] (The range doesn't count towards the sum I believe)
    ({(({})[()])}{})

    #Triangulate every number on the stack
    {{({}[()])}{}}

)

OEISは次のように述べているため、これは理にかなっています。

n> 0の場合、このシーケンスの項は、a(n)= sum(i * A000124(i)、i = 0..n-1)によってA000124に関連付けられます。[ブルーノ・ベルセリ、2013年12月20日]

そして、A000124は三角形の数字+ 1です。しかし、私はフォーラムが何であるかを正確に知りません。したがって、これがどのように機能するかを完全に説明することはできません。


3

Perl 6、19バイト、X = 1、A000045→A000035

{(0,1,*+<*...*)[$_]}

+>の代わりに+<も動作します。

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

使い方

infix ...は、単純な再帰シーケンスに非常に役立ちます。(0,1,*+*...*)元のコードの一部。これは、

(0, 1, -> $x, $y { $x + $y } ... *)

01で始まるシーケンスを指定しますの前の2つのアイテムの合計を計算してアイテムを追加します。

対照的に、(0,1,*+<*...*)左ビットシフト(+>、右ビットシフトも機能します)を使用して、パリティシーケンスを構築します。シフトので1つの左にゼロユニットがある1、及びシフト0左に一つのユニットがあり0、我々は、1と0の所望の交互パターンを得ます。


2

Perl 6、10バイト、距離1-スコア5

smlsによる エントリのクラック

*[0]o 1***

になる:

*[0]o 1*+*

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


よくやった!私はこの解決策を考えていませんでした、私のものはもう少しトリッキーで、実際*[0]o にそこにいる必要がありました。これは、「トリック」に基づいて別の課題を思いつくことができることを意味します... :)
smls

私はPerlを本当に知りません。ただ見ただけで、前の引数で***二項乗算演算を展開できるように見えると思ったので*、実際にコードが何をするのかわかりません。いくつかの説明で自由に編集してください!
ジョナサンアラン

2
1***はとして解析されます 1 ** *。つまり、「1のx乗」を行うラムダです。1*+*1 * (+*)、として解析されます。つまり、「1乗算(xを数値に変換)」するラムダです。
smls





1

JavaScript(ES6)、距離1、 Advancid

元の:

as=function(){ return 2*2**((11)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

クラック:

as=function(){ return 0*2**((11)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

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

または

as=function(){ return 2*1**((11)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

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

どういうわけか、TIOとrepl.itの間で異なる動作をさせることができました(repl.itによると2 * 1 ^ ...が0に等しい理由はまったくわかりません)


私はあまりにも愚かで、2を0に変更することを考えていませんでした。B関数は次のとおりas=function(){ return 2*2**((1^1)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}です。


1

Java、距離4、PeechA094683 A000290

元の:

int x{double r=1;for(int i=0;i<42;i++)r=r/2+n/r/2;int k=(int)((int)n*(float)n/Math.pow(n,(Math.sin(n)*Math.sin(n)+Math.cos(n)*Math.cos(n))/2));return n%4%2==(int)Math.log10(Math.E)/Math.log((double)'H'-'@')?(int)r:k;}

クラック:

int x{double r=1;for(int i=0;i<42;i++)r=r/2+n/r/2;int k=(int)((int)n*(float)n/Math.pow(n,(Math.sin(n)*Math.sin(n)+Math.cos(n)*Math.cos(n))/2));return n%4%1==(int)Math.log10(Math.E)/Math.log((double)'H'-'@')?(int)n*n:k;}
                                                                                                                                                          ^                                                         ^^^

n * nを返します


1

Javascript、Advancid、距離2、A059841および A000004

サイトを破壊しているように見えるため、TIOリンクの背後にあるコードのみを残します。

@nderscoreのおかげで、そのコード私は、最初のコードを復号化するために使用

!! [] + []の代わりに!! [] + [] + []を使用するなどの冗長コードがありました。

!+ []-(!+ [])(+ 1-1)を追加すると、最初は復号化ができなくなりました。

オンラインで試す


1

パイク、レーベンシュタイン距離2、A008788、A007526

'SS^

ここで試してみてください!

使い方

これは混合ベース変換を行います。

'S入力nを取得して適用し、[1、...、n]をスタックにプッシュします。次Sは入力nを受け取り、同じ配列をもう一度プッシュします。 'スタックの前のトップに次のコマンドが適用されるようです。詳細については少しあいまいです。

最後に、^混合ベース変換を適用するため、[1、...、n] [1、...、n]は a(n):= [1] n + n +(n)(n-1)をf計算
します。 。+ [n!] 1括弧は、場所の値とその右側の数字を示します。

さて、a(n)=(1 +(1)(n-1)+(n-1)(n-2)(n-3)+ ... +(n-1)!)n = n( a(n)+ 1)は、[A007526]でa(n)を定義するのと同じ再帰式です。空の合計はゼロなので、a(0)= 0であり、基本ケースも一致します。


わずかな試行でどうやってそれを手に入れたのですか?私はあなたの思考プロセスに興味があります
ブルー

混合ベースの変換は、かなり一般的なゴルフのトリックです。初めて使用したのではありません。
デニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.