Die meisten Quadratzahlen haben mindestens eine unterschiedliche Quadratzahl, mit der ihr Levenshtein-Abstand genau 1 beträgt. Für ein gegebenes Quadrat wird jedes Quadrat, das diese Bedingung erfüllt, als Levenshtein-Nachbar von . Beispielsweise ist ein Levenshtein-Nachbar von , da nur 1 Bearbeitung ( ) erforderlich ist. Jedoch ist kein Levenshtein Nachbar von , da es ein Minimum von 2 Änderungen erfordert. Zahlen mit führenden Nullen ( ) sind keine levenshteinischen Nachbarn.
Ihre Aufgabe ist es, eine quadratische Zahl als Eingabe zu verwenden und in einem angemessenen Format die vollständige Liste der Levenshtein-Nachbarn auszugeben. Sie können wiederholte Nachbarn in die Liste aufnehmen, wenn Sie möchten, aber Sie können nicht die ursprüngliche Eingabe aufnehmen, da es sich nicht um einen Levenshtein-Nachbarn handelt.
Jedes vernünftige Format sollte eine Art Trennzeichen zwischen den Ausgaben enthalten, z. B. ,
oder eine neue Zeile, und kann Zeichen mit dem entsprechenden Unicode-Wert (z. B. Brainfuck) anstelle der Zahlen selbst ausgeben. Die Reihenfolge der Ausgabe spielt keine Rolle.
Diese Eingabe ist immer eine quadratische Zahl, die größer als . Ihr Programm sollte keine theoretische Begrenzung haben, aber wenn es aus praktischen Gründen (z. B. über 32-Bit-Zahlen hinaus) ausfällt, ist das völlig in Ordnung.
Wenn die Eingabe keine Levenshtein-Nachbarn hat, muss die Ausgabe dies deutlich widerspiegeln, z. B. nichts ausgeben, ein leeres Array / eine leere Zeichenfolge, eine negative Ganzzahl, usw.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
Testfälle
Dies sind die Ergebnisse für die Quadrate von bis :
1: 4, 9, 16, 81
4: 1, 9, 49, 64
9: 1, 4, 49
16: 1, 36, 169, 196
25: 225, 256, 625
36: 16, 361
49: 4, 9
64: 4
81: 1, 841
100: 400, 900, 1600, 8100
121: 1521
144: 1444
169: 16, 1369
196: 16, 1296, 1936
225: 25, 625, 1225, 2025, 4225, 7225
256: 25
289: 2809
324: 3249
361: 36, 961
400: 100, 900, 4900, 6400
Darüber hinaus 1024
hat keine Nachbarn, so ist ein guter Testfall.
2025
sind.32 * 32 = 1024
hat Levenshtein keine viereckigen Nachbarn.1024
haben keine Levenshtein Nachbarn, ich werde dieses Beispiel inAntworten:
05AB1E ,
11 106 Bytes-4 danke an Grimy !! (Quadrat zuerst, anstatt nach Quadraten zu suchen, ergibt 3; benutze 10 ^ n ergibt 1)
Nimmt eine Ganzzahl und gibt eine möglicherweise leere Liste aus
Probieren Sie es online! - Das ist verrückt-langsam wegen der
°
, also macht es keinen Sinn, es auch nur für zu versuchen9
.Oder versuchen Sie es mit einer etwas schnelleren Version - Diese fügt stattdessen acht hinzu
8+
und verwendet dann denselben Ansatz.Wie?
quelle
9s«
in deinem 11er hätte sein können9ì
. Trotzdem eine gute Antwort auf den Punkt! +1 von mir.т+Lnʒ.L
. Lächerlich verlangsamen 6:°Lnʒ.L
. Stufenlos langsam 5:∞nʒ.L
.∞nʒ.L
als Antwort akzeptabel ist, da die Einreichungen abgebrochen werden müssen . Unabhängig: Ihr TIO-Link wird für die 7-Byte-Version verwendet9ì
, was ~ 100x langsamer ist alsT+
für große Nummern. Mein Kommentar verwendeteт+
(addiere 100), um sicher zu gehen, aber es hat sich8+
in allen Fällen als ausreichend herausgestellt.Retina 0.8.2 ,
142138 BytesProbieren Sie es online! Erläuterung:
Versuchen Sie für jede Ziffer, a) sie zu entfernen, b) sie mit einer anderen Ziffer voranzustellen, c) sie in eine andere Ziffer zu ändern. Die andere Ziffer ist vorerst mit einem gekennzeichnet
#
.Ersetzen Sie für jede mögliche andere Ziffer jede mögliche Ziffer.
Entfernen Sie Zahlen, die jetzt mit Null beginnen.
Entfernen Sie alle doppelten Nummern. (Dies lässt nur die Zeilen leer.)
In Unary konvertieren.
Behalten Sie alle quadratischen Zahlen außer der letzten (die immer die eingegebene Nummer ist).
Konvertieren Sie die verbleibenden Zahlen zurück in Dezimalzahlen.
quelle
R ,
4241 BytesProbieren Sie es online!
quelle
Python 2 ,
173167149148147144139138 BytesProbieren Sie es online!
19 + 3 + 5 + 1 = 28! Danke an Jonathan Allan .
quelle
[p for p in...]
ist überflüssig. Wir können einen Satz (oder Duplikate) zurückgeben.'0'<v[:1]
kann sein'1'<=v
. Es ist viel langsamer,range(len(a)+1)
kann aber seinrange(n)
. Verwenden Sie eine Variable füri
undi+1
Scheiben, um die Summe zu vermeiden. Verwenden Sie ein Lambda. BEARBEITEN speichern 48 von Ihrem vorherigen.Oracle SQL, 93 Byte
Test in SQL * PLus.
quelle
PHP , 62 Bytes
Probieren Sie es online!
Dieses Skript druckt Levenshtein Nachbarn der Eingabe getrennt durch
_
ein nachstehendes Trennzeichen getrennt sind. Wenn keine Nachbarn gefunden werden, wird nichts gedruckt.Glücklicherweise hat PHP eine eingebaute Levenshtein-Distanz ! Dieses Skript durchläuft alle Quadratzahlen von 1 bis
input * 91
, da sich alle gültigen Levenshtein-Nachbarn (Abstand von 1) in diesem Bereich befinden. Dann wird jede Zahl in dem Bereich gedruckt, der mit der Eingabe einen Levenshtein-Abstand von 1 hat.quelle
JavaScript (V8) ,
129 125123 ByteÜbernimmt die Eingabe als Zeichenfolge. Gibt die Levenshtein-Nachbarn an STDOUT aus.
Probieren Sie es online!
Kommentiert
quelle
print()
aber ich wusste nicht, dass Node es auch hatte ...Jelly ,
5338 BytesProbieren Sie es online!
Es gibt keine eingebaute Levenshtein-Distanz, so dass alle möglichen 1-Distanz-Bearbeitungen generiert werden und diejenigen mit führender Null ausgeschlossen werden und nur perfekte Quadrate beibehalten werden. Filtert keine Duplikate (wie zulässig).
quelle
Wolfram Language (Mathematica) ,
6259 BytesProbieren Sie es online!
Verwendung der Schranke aus der R-Antwort .
quelle