Dystans Levenshtein i OEIS (Rabusie)


11

To jest post Rabusia. Cop post jest tutaj .


Twoim zadaniem jest, aby wejście całkowitą N i wysyłać Pn cyfrowy w sekwencji OEIS A002942 .

Sekwencja składa się z kwadratowych liczb zapisanych wstecz:

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

Zauważ, że zera wiodące są usuwane ( 100 zmienia się na 1 , a nie 001 ). Łączenie tego w ciąg (lub jedną długą liczbę daje):

1496152639446181121441

Wyrzucisz N - cyfrę w tym ciągu / numerze. Możesz wybrać N jako 0 lub 1 indeks (proszę podać, który wybierzesz).

Przypadki testowe (indeksowane 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

Twój kod powinien działać dla liczb do N = 2 ^ 15 (chyba że twój język domyślnie nie obsługuje 32-bitowych liczb całkowitych, w którym to przypadku N może być niższy).


Rabusie:

Powinieneś spróbować złamać posty gliniarzy.

Twój kod musi być w tym samym języku co posterunek gliny i mieć odległość Levenshteina dokładnie równą odległości podanej przez gliniarza. Twój kod nie może być dłuższy niż oryginalne rozwiązanie (ale może mieć ten sam rozmiar).

Tutaj możesz sprawdzić odległość Levenshtein!

Zwycięzcą zostanie złodziej, który złamał najwięcej postów.


Poczekaj ... więc jeśli wynik rabunku nie musi być taki sam jak pierwotnie zamierzony program ... Czy policjant nie może napisać jednego programu i nadrobić dystansu ...?
Magic Octopus Urn

Cóż, gliniarze muszą podać alternatywny kod, aby oznaczyć zgłoszenie jako bezpieczne i kwalifikować się do wygranej. Wyjaśniłem w poście gliniarza. :)
Stewie Griffin

Nigdy nie próbowałem wyzwania gliniarza i rabusia. Wszystko to było dla mnie bardzo mylące, hah!
Magic Octopus Urn

Odpowiedzi:



3

JavaScript, Arnauld

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

1
@Arnauld OK, myślę, że Array(m+1)to naprawiłem.
Lynn

To robi. FWIW, dodałem zamierzone rozwiązanie do mojego postu.
Arnauld,



2

6502 Kod maszynowy (C64), Felix Palmen

Przetestowałem to ze wszystkimi testowymi pytaniami i kilkoma dodatkami (np. 2 ^ 15 ... które zajęły trochę czasu) i wydaje się, że działa tak samo jak oryginał z 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

Demo online , użycie: sys49152, n gdzie n oznacza wejście indeksowane 0.


Jest to poprawne, ponieważ znalazłeś całkowicie niepotrzebny kod, o którym nie wiedziałem, a zmiana dotyczy tego kodu: o
Felix Palmen

1

Lua , Katenkyo

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

Wypróbuj online!

Nie znam Lua, ale to było proste, po prostu zastąpiłem spację nową linią.


Hum, nie myśleć o tym, że oryginał był o wymianie (0+)(%d+)$z (0+)(%d+), więc było o regex ^^”
Katenkyo


1

Python 2 , dylnan

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

Wypróbuj online!

Uwaga: to zgłoszenie policjanta było błędne i nie działało dla danych wejściowych niższych niż 5. Podczas gdy ja byłem przy nim, zbudowałem to rozwiązanie, które ma prawidłową odległość Levenshteina ORAZ naprawia błąd.


1

Perl 5, (-p) Xcali

Zaktualizowano po komentarzu, Levenshtein Odległość między

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

i

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

ma 55 lat

Wypróbuj online


Biorąc pod uwagę, że M5.010 jest „darmowy”, nie sądzę, że powinien się tutaj liczyć. Nie jestem do końca pewien, jak liczyć flagi -akontra -p. Dwa rozwiązania, które wymyśliłem, wykorzystywały te same flagi. Sądzę, że flaga zostanie po prostu przyczepiona do frontu bez spacji, ale jestem skłonny dać się zwieść innym.
Xcali,

zaktualizowałem moją odpowiedź
Nahuel Fouilleul

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);}

Wypróbuj online!

Zmień dziennik

  • Zastąpiony .replaceAll() z new Long().
  • Usunięto test na idealne kwadraty. Teraz bezpośrednio używają idealnych kwadratów.
  • Zaktualizowano wszystkie nazwy zmiennych na wielkie litery.
  • Przepisz nierówności.
  • I w końcu dodał 21-bajtowy wiodący komentarz, aby osiągnąć poprawną LD.

1
Och, miło. To zupełnie inne niż myślałem, ale fajnie, że i tak osiągnąłeś 92 LD. Rozwiązanie, o którym myślałem, to: n->{String r="";for(int i=1;r.length()<=n+1;r+=new Long(new StringBuffer(i*i+++"").reverse()+""));return r.charAt(n);}( 118 bajtów, 92 LD w porównaniu z moją inną odpowiedzią).
Kevin Cruijssen

1

Oktawa , Stewie Griffin

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

Wypróbuj online!

Próbowałem własnej odpowiedzi Octave i zauważyłem już istniejącą. Mój był już znacznie krótszy, więc dodanie komentarza na końcu wystarczyło, aby dostać się na wymaganą odległość 63.


Dobra robota :-) Miałem pętlę input()i wszystko, co się z tym wiąże ...
Stewie Griffin

1

PHP, Jo.

<?for($j++;strlen($p)<$argv[1];$j++)$p.=(int)strrev($j**2);echo($p[$argv[1]+2-3]);

Wypróbuj online!

(Planowałem zmienić nierówność, aby uzyskać jeszcze większy LD ...)


0

6502 Kod maszynowy (C64), Felix Palmen

Może być również „prostym” pęknięciem, ale wydaje się, że działa jak oryginał.
Posiadanie LD = 1 jest tak kuszące, aby spróbować go złamać (przepraszam, 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

Demo online , użycie: sys49152, n gdzie n oznacza wejście indeksowane 0.


Nie jestem pewien, czy muszę to zaakceptować. Zastępuje on E9(polecenie odejmowania) przez EBktóry jest niezdefiniowany w 6502 kodu maszynowego, ale dzieje się to samo na NMOS 6502 i 6510 żetonów. Ten program mógłby na przykład ulec awarii na C64 DTV1. Ale jest mało prawdopodobne, aby znaleźć prawdziwy C64, który nie wykona go poprawnie, więc można go uznać za prawidłowy crack? Mogę poprosić o opinię na temat meta ....
Felix Palmen

Byłbym zainteresowany wkładem tutaj na meta .
Felix Palmen,

@FelixPalmen Wkrótce usunę tę odpowiedź.
Jo.

zachowaj to, zobacz także mój komentarz do meta. Społeczność wyraźnie wyraziła opinię, że jest ważna. To moja wina, że ​​nie wymagam tylko udokumentowanego kodu 6502 i będę o tym pamiętać na przyszłość.
Felix Palmen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.