레 벤슈 테인 거리 및 OEIS (고무)


11

이것은 강도 게시물입니다. 경찰 포스트는 여기에있다 .


당신의 임무는 정수 입력 N 을 취하고 시퀀스 OEIS A002942N 번째 숫자를 출력하는 입니다.

순서는 거꾸로 쓴 제곱 숫자로 구성됩니다.

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

선행 0은 잘 립니다 ( 100001 이 아니라 1 이 됨 ). 이것을 문자열로 연결하면 하나의 긴 숫자가 나타납니다.

1496152639446181121441

이 문자열 / 숫자에 N 번째 숫자를 출력해야합니다 . N 을 0 인덱싱 또는 1 인덱싱으로 선택할 수 있습니다 (선택한 것을 명시하십시오).

테스트 사례 (1 인덱스) :

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 은 더 낮을 수 있음)).


강도 :

경찰의 게시물을 부수려고 노력해야합니다.

코드는 경찰 게시물과 동일한 언어로 작성되어야하며 경찰이 제공 한 거리와 정확히 동일한 거리의 레 벤슈 테인 거리를 가져야합니다. 코드는 원래 솔루션보다 길 수 없지만 크기는 동일 할 수 있습니다.

여기에서 레 벤슈 테인 거리를 확인할 수 있습니다 !

우승자는 가장 많은 게시물을 해독 한 강도가됩니다.


잠깐만 .. 강도의 결과가 원래 의도 한 프로그램과 같을 필요가 없다면 ... 경찰은 단지 하나의 프로그램을 작성하고 거리를 구성 할 수 없습니까?
매직 문어 Urn

글쎄, 경찰은 제출물을 안전하다고 표시하고 승리 할 자격이 되려면 대체 코드를 제공해야합니다. 나는 경찰 포스트에서 명확히했다. :)
Stewie Griffin 17

나는 경찰과 강도 도전을 시도하지 않았습니다. 이 모든 것이 저에게 매우 혼란 스러웠습니다.
매직 문어 Urn

답변:



3

자바 스크립트, Arnauld

/*ZZ*/m=>[...Array(m+1).keys()].map(eval(atob("eD0+K1suLi4iIit4KnhdLnJldmVyc2VgYC5qb2luYGA="))).join``[m]

1
@ Arnauld 좋아, 나는 Array(m+1)그것을 고쳤다 고 생각 한다.
Lynn

그렇습니다. FWIW, 내 게시물에 의도 된 솔루션을 추가했습니다.
Arnauld



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은 인덱스가없는 입력입니다.


당신은 몇 가지 발견하기 때문 올바른 완전히 쓸모없는 내가 알고하지 않았다 코드와 변경에 O를 : 코드
펠릭스 Palmen을

1

루아 , Katenkyo

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

파이썬 3 , 하이퍼 뉴트리노

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

온라인으로 사용해보십시오!


Ninja'd in 9 sec : P
Uriel

허 흥미로운, 내가 가지고 있지만 좋은 :)
HyperNeutrino

''대신 대신 할 수도 있습니다""
Uriel

@ Uriel 그래, 나는 많은 대안을 알고있다.
Mr. Xcoder



1

펄 5, (-p) Xcali

댓글 후 업데이트, Levenshtein 사이의 거리

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이 "무료"라는 점을 감안할 때 여기에 포함되어야한다고 생각하지 않습니다. -avs -p플래그 를 계산하는 방법을 잘 모르겠습니다 . 두 가지 솔루션 모두 동일한 플래그를 사용했습니다. 나는 깃발이 공백없이 정면에 고정 될 것이라고 생각하지만, 나는 그것에 대해 다른 사람들에 의해 기꺼이 흔들릴 것입니다.
Xcali

내 대답 업데이트
나우 Fouilleul

1

자바 8, 케빈 크루이 센

/*!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에 도착한 것이 좋습니다. 생각했던 솔루션의 I이었다 : 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()하고 ... 그것으로 일어나는 모든
스튜이 그리핀


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은 인덱스가없는 입력입니다.


이것을 수락해야하는지 잘 모르겠습니다. 그것은 대체 E9에 의해 (빼기 명령) EB하는되어 정의되지 않은 6502 기계 코드를하지만, NMOS 6502 및 6510 개 칩에 동일한 기능을 수행 할 발생합니다. 이 프로그램은 예를 들어 C64 DTV1에서 충돌합니다. 그러나 제대로 실행되지 않는 실제 C64 를 찾지 못할 것이므로 유효한 균열로 간주 수 있습니까? 나는 .... 메타에 대한 의견을 요청할 수
펠릭스 Palmen을

meta 입력에 관심이 있습니다 .
Felix Palmen

@FelixPalmen이 답변을 곧 내려 드리겠습니다.
조.

유지, 메타에 대한 내 의견을 참조하십시오. 커뮤니티는 그것이 유효하다는 의견을 분명히 표현했습니다. 문서화 된 6502 코드 만 요구하지 않는 것은 제 잘못입니다. 앞으로도이를 염두에 두겠습니다.
Felix Palmen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.