レーベンシュタイン距離とOEIS(強盗)


11

これは強盗の投稿です。コップポストはここにあります


あなたの仕事は整数入力Nを取り、シーケンスOEIS A002942のN番目の数字を出力することです

シーケンスは、逆向きに書かれた平方数で構成されます。

1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ...

先行ゼロは削除されることに注意してください(100001ではなく1になります)。これを文字列に連結します(または1つの長い数値が与えられます):

1496152639446181121441

この文字列/番号のN番目の数字を出力します。Nを0インデックス付きまたは1インデックス付きとして選択できます(どちらを選択するかを明記してください)。

テストケース(1-indexed):

N = 5,      ==> 1
N = 17,     ==> 1   <- Important test case! It's not zero.
N = 20,     ==> 4
N = 78,     ==> 0
N = 100,    ==> 4
N = 274164, ==> 1

コードはN = 2 ^ 15までの数値で動作するはずです(デフォルトで32ビット整数を処理できない場合を除き、その場合はNを小さくできます)。


強盗:

警官の投稿をクラックしようとする必要があります。

あなたのコードは警官ポストと同じ言語であり、警官によって与えられた距離と正確に等しいレーベンシュタイン距離を持っている必要があります。コードを元のソリューションより長くすることはできません(ただし、同じサイズにすることができます)。

あなたは可能ここレーベンシュタイン距離をチェック!

勝者は、ほとんどの投稿をクラックした強盗になります。


待って...だから強盗の結果が元の意図したプログラムと同じである必要がないなら...警官はただ1つのプログラムを書いて距離を埋めることはできないのか...?
魔法のタコUr

さて、警官は、提出物を安全とマークし、勝利の資格を得るために、代替コードを提供する必要があります。私は警官のポストで明らかにしました。:)
スティーヴィーグリフィン

私は警官と強盗の挑戦を試みたことがありません。これはすべて私にとって非常に混乱しました。
魔法のタコUr

回答:






2

6502マシンコード(C64)、Felix Palmen

私はこれをすべての質問テストケースとかなりの数のエクストラ(2 ^ 15 ...など)でテストしましたが、LD = 1のオリジナルと同じように動作するようです。

00 C0 20 FD AE A0 00 99 5B 00 C8 20 73 00 90 F7 99 5B 00 A2 0B CA 88 30 09 B9
5B 00 29 0F 95 5B 10 F3 A9 00 95 5B CA 10 F9 A9 01 A0 03 99 69 00 88 10 FA A0
20 A2 76 18 B5 E6 90 02 09 10 4A 95 E6 E8 10 F4 A2 03 76 69 CA 10 FB 88 F0 11
A2 09 B5 5C C9 08 30 04 E9 03 95 5C CA 10 F3 30 D6 A2 03 B5 69 95 57 CA 10 F9
A9 01 85 FB A2 03 A9 00 95 FB CA D0 FB A2 03 B5 FB 95 22 95 26 CA 10 F7 A9 00
A2 03 95 69 CA 10 FB A0 20 A2 02 46 25 76 22 CA 10 FB 90 0C A2 7C 18 B5 AA 75
ED 95 ED E8 10 F7 A2 7D 06 26 36 AA E8 10 FB 88 10 DD A0 0B A9 00 99 5A 00 88
D0 FA A0 20 A2 09 B5 5C C9 05 30 04 69 02 95 5C CA 10 F3 06 69 A2 FD 36 6D E8
D0 FB A2 09 B5 5C 2A C9 10 29 0F 95 5C CA 10 F4 88 D0 D7 E0 0A F0 05 E8 B5 5B
F0 F7 09 30 99 5B 00 C8 E8 E0 0B F0 04 B5 5B 90 F1 88 B9 5B 00 C9 30 F0 F8 A2
7C 18 B5 DB E9 00 95 DB E8 10 F7 90 14 88 30 05 B9 5B 00 D0 EA A2 7C F6 7F D0
03 E8 10 F9 4C 73 C0 B9 5B 00 4C D2 FF

オンラインデモ、使用法:sys49152、nここで、nは0のインデックス付き入力です。


あなたが私が知らなかったいくつかのまったく役に立たないコードを見つけたので、これは正しいです、そして、変更はこのコードにあります:o
Felix Palmen

1

ルア科天橋

i=1s=""while(#s<...+0)do s=s..((i*i)..""):reverse():gsub("(0+)(%d+)$","%2")i=i+1 end
print(s:sub(...,...))

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

Luaはわかりませんが、これは単純なもので、スペースを改行に置き換えただけです。


ハム、それについて考えていませんでした、オリジナルは置き換え程度であっ(0+)(%d+)$(0+)(%d+)、それは「^^正規表現についてだったので、
Katenkyo

1

Python 3HyperNeutrino

lambda o:"".join(str(p*p+2*p+1)[::~0].lstrip("0")for p in range(o+1))[o]

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


9秒で忍者:P
Uriel

おもしろい、私が持っていたものではなく、素敵でした:)
HyperNeutrino

あなたも行うことができ''代わりに""
ウリエル

@Urielええ、たくさんの選択肢があります。
ミスターXcoder


1

Python 2ディルナン

d=lambda y:y if y%10>0 else d(y/10)
lambda n:''.join([str(d(x*x))[::-1]for x in range(1,n+1)])[n-1]#fix

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

注:この警官の提出はバグがあり、5未満の入力では機能しませんでした。その間、正しいレーベンシュタイン距離を持ち、バグを修正するこのソリューションを構築しました。


1

Perl 5、(-p)Xcali

コメント後に更新、レーベンシュタイン距離

a$j.=int reverse$_**2for 1..$_;$_--;say$j=~s/.{$_}(.).*/$1/r

そして

p$_=substr w.(join"",map{whyddwzz;0|reverse$_**2}1..$_),$_,1

55

オンラインで試す


M5.010が「無料」であることを考えると、ここで数えるべきではないと思います。-a-pフラグの数え方がよくわからない。私が思いついた2つのソリューションは、両方とも同じフラグを使用していました。フラグはスペースなしで正面に貼り付けられるだけだと思いますが、そのことについて他の人に揺さぶられます。
Xcali

私の答えを更新しました
ナウエルフイユ

1

Java 8、Kevin Cruijssen

/*!FooBarFooBarFoo!*/N->{String R="",T=R;for(int I=1,J;N+2>R.length();I++){for(T="",J=(I*I+"").length();0<J;T+=(I*I+"").charAt(--J));R+=new Long(T)+"";}return R.charAt(N);}

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

変更ログ

  • に置き換えられまし.replaceAll()new Long()
  • 完全な正方形のテストを削除しました。完全な正方形を直接使用するようになりました。
  • すべての変数名を大文字に更新しました。
  • 不等式を書き直しました。
  • そして最後に、正しいLDに到達するために21バイトの先頭コメントを追加しました。

1
いいね。それは私が念頭に置いていたものとは完全に異なりますが、とにかく92 LDに到達したことは素晴らしいことです。私が念頭に置いていたソリューションでした:n->{String r="";for(int i=1;r.length()<=n+1;r+=new Long(new StringBuffer(i*i+++"").reverse()+""));return r.charAt(n);}118バイト、92 LD。私の他の回答に比べて)
ケビンCruijssen

1

オクターブスチューイー・グリフィン

@(n)regexprep(fliplr(num2str((1:n)'.^2))'(:)',' +0*','')(n)%abcdefghijk

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

私は実際に自分のOctaveの回答を試みて、既存の回答を見つけました。鉱山はすでにかなり短くなっていたため、最後にコメントを追加するだけで、必要な距離63に到達できました。


よくやった:-)私はとのループを持っていたinput()と...それに行くすべてのもの
Stewieグリフィン


0

6502マシンコード(C64)、Felix Palmen

「単純な」クラックである場合もありますが、オリジナルとして機能するようです。
LD = 1にすると、クラックしようとするのはとても魅力的です(ごめん、Felix)。:)

00 C0 20 FD AE A0 00 99 5B 00 C8 20 73 00 90 F7 99 5B 00 A2 0B CA 98 88 30 09
B9 5B 00 29 0F 95 5B 10 F2 95 5B CA 10 FB A0 20 A2 76 18 B5 E6 90 02 09 10 4A
95 E6 E8 10 F4 A2 03 76 69 CA 10 FB 88 F0 11 A2 09 B5 5C C9 08 30 04 EB 03 95
5C CA 10 F3 30 D6 A2 03 B5 69 95 57 CA 10 F9 A9 01 85 FB A2 03 A9 00 95 FB CA
D0 FB A2 03 B5 FB 95 22 95 26 CA 10 F7 A9 00 A2 03 95 69 CA 10 FB A0 20 A2 02
46 25 76 22 CA 10 FB 90 0C A2 7C 18 B5 AA 75 ED 95 ED E8 10 F7 A2 7D 06 26 36
AA E8 10 FB 88 10 DD A2 0B A9 00 95 5A CA D0 FB A0 20 A2 09 B5 5C C9 05 30 04
69 02 95 5C CA 10 F3 06 69 A2 FD 36 6D E8 D0 FB A2 09 B5 5C 2A C9 10 29 0F 95
5C CA 10 F4 88 D0 D7 E8 B5 5B F0 FB 09 30 99 5B 00 C8 E8 E0 0B F0 04 B5 5B 90
F1 88 B9 5B 00 C9 30 F0 F8 A2 7C 18 B5 DB E9 00 95 DB E8 10 F7 90 14 88 30 05
B9 5B 00 D0 EA A2 7C F6 7F D0 03 E8 10 F9 4C 68 C0 B9 5B 00 4C D2 FF

オンラインデモ、使用法:sys49152、nここで、nは0のインデックス付き入力です。


これを受け入れる必要があるかどうかはわかりません。これは、6502マシンコードでは定義E9されEBていない(減算コマンド)を置き換えますが、NMOS 6502および6510チップでも同じことを行います。このプログラムは、たとえばC64 DTV1でクラッシュします。しかし、それを正しく実行しない実際の C64 を見つける可能性は低いため、有効なクラックと見なすことができますか?私は....メタ意見を求めるかもしれない
フェリックスPalmen


@FelixPalmenこの回答はすぐに取り下げます。
ジョー。

それを維持し、メタに関する私のコメントも参照してください。コミュニティは、それが有効であるという意見を明確に表明しました。文書化された6502コードのみを必要としないのは私のせいであり、今後もそのことを念頭に置いておきます。
フェリックスパルメン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.