Ihre Aufgabe ist es, zwei fehlende Zeichen in einem Columbo-Episodentitel zu finden.
Eingang
Einer der 69 Columbo-Episodentitel (wie unten aufgeführt), bei dem genau zwei Zeichen durch ersetzt wurden *
.
Beispiel :
"Ran*om for a *ead Man"
Ausgabe
Sie können entweder den vollständigen Episodentitel oder nur die beiden fehlenden Zeichen in einem angemessenen Format zurückgeben, sofern die Reihenfolge der Zeichen eindeutig ist.
Einige gültige Ausgaben :
"Ransom for a Dead Man"
"sD"
["s", "D"]
Folgen
Bitte folgen Sie diesem Link , um die unformatierte Liste zu erhalten.
Prescription: Murder Swan Song Murder, Smoke and Shadows
Ransom for a Dead Man A Friend in Deed Sex and the Married Detective
Murder by the Book An Exercise in Fatality Grand Deceptions
Death Lends a Hand Negative Reaction Murder: A Self Portrait
Dead Weight By Dawn's Early Light Columbo Cries Wolf
Suitable for Framing Troubled Waters Agenda for Murder
Lady in Waiting Playback Rest in Peace, Mrs. Columbo
Short Fuse A Deadly State of Mind Uneasy Lies the Crown
Blueprint for Murder Forgotten Lady Murder in Malibu
Etude in Black A Case of Immunity Columbo Goes to College
The Greenhouse Jungle Identity Crisis Caution: Murder Can Be Hazardous to Your Health
The Most Crucial Game A Matter of Honor Columbo and the Murder of a Rock Star
Dagger of the Mind Now You See Him... Death Hits the Jackpot
Requiem for a Falling Star Last Salute to the Commodore No Time to Die
A Stitch in Crime Fade in to Murder A Bird in the Hand...
The Most Dangerous Match Old Fashioned Murder It's All in the Game
Double Shock The Bye-Bye Sky High IQ Murder Case Butterfly in Shades of Grey
Lovely But Lethal Try and Catch Me Undercover
Any Old Port in a Storm Murder Under Glass Strange Bedfellows
Candidate for Crime Make Me a Perfect Murder A Trace of Murder
Double Exposure How to Dial a Murder Ashes to Ashes
Publish or Perish The Conspirators Murder With Too Many Notes
Mind Over Mayhem Columbo Goes to the Guillotine Columbo Likes the Nightlife
Erläuterungen und Regeln
- Das Speichern der Episodenliste (oder das Speichern von genügend Informationen, um die fehlenden Zeichen zu erraten) ist Teil der Herausforderung. Mit anderen Worten, Sie erhalten die Liste nicht "kostenlos". Wenn Sie externe Dateien verwenden, müssen Sie deren Länge zu Ihrer Byteanzahl hinzufügen.
- Ihr Programm / Ihre Funktion muss die oben aufgeführten Titel genau unterstützen:
- Die Groß- und Kleinschreibung jedes Buchstabens muss genau übereinstimmen.
- Die Interpunktion muss ebenfalls genau übereinstimmen.
- Etc...
- Alle Zeichen im Titel können durch ersetzt werden
*
, nicht nur Buchstaben. Sie können zusammenhängend sein. - Sie können stattdessen ein anderes 'leeres' Zeichen erwarten
*
, solange es in keinem Titel irgendwo vorkommt. (Wenn ja, erwähnen Sie es bitte in Ihrer Antwort.)
Ah, es gibt nur noch eine Sache. Ich habe es fast vergessen...
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Testset
Hier ist ein Link zu allen 14252 möglichen Eingaben.
code-golf
string
error-correction
Arnauld
quelle
quelle
error-correction
Tag hinzugefügt , der meiner Meinung nach hier angebracht ist.A
als aucha
in der Liste der eindeutigen Zeichenfolgen, die vorhanden sind.',-.:ABCDEFGHIJLMNOPQRSTUWYabcdefghiklmnopqrstuvwxyz
(und<space>
natürlich).Antworten:
Stax , 294 Bytes
Führen Sie es aus und debuggen Sie es
Hier ist der Ansatz:
Um sicherzustellen, dass kein falsches Ergebnis erzeugt wird, habe ich ein C # -Programm verwendet, um die Ausgabe für alle möglichen Eingaben zu überprüfen. Es ist nicht sehr portabel und läuft ziemlich lange. Ich habe es bisher mehr als 24 Stunden lang nach Kandidaten für Nenner suchen lassen, daher ist es für TIO nicht wirklich geeignet. Ich führe es in LINQPad aus.
Ein weiterer Hinweis zur Speicherung der eingebetteten Hash-Werte im Programm. Die Hashes werden vor dem Einbetten in das Array sortiert. Ich verwende eine Stax-Funktion namens "Crammed Integer Arrays", mit der sich Integer Arrays effizient darstellen lassen. In dieser Darstellung können Unterschiede zwischen Elementen gespeichert werden, wenn dies effizienter ist. Durch das Vorsortieren der Werte werden also einige Bytes gespart.
Hier ist die entpackte Darstellung mit einigen minimalen Kommentaren.
quelle
Python 2, 862 Bytes
Hier ist ein Bash-Skript, das dieses Programm zusammenstellt und dessen Ausführung demonstriert.
Erläuterung
Dies ist eine ziemlich einfache Lösung: Ich habe nach der komprimierbarsten Permutation der Titel gesucht, die durch Leerzeichen verbunden sind. Dieses Programm ersetzt einfach
*
in der Eingabe durch.
und sucht nach einer Übereinstimmung eines regulären Ausdrucks in der Zeichenfolge.Die Zeichenfolge wird dekomprimiert, um:
quelle
JavaScript (ES6), 634 Byte
Diese Übermittlung sollte verborgen bleiben, bis eine Antwort von weniger als 500 Bytes veröffentlicht wurde. Welches ist jetzt getan worden .
Probieren Sie es online! (ein zufälliger Testfall pro Folge)
Wie?
Wir definieren chr , die Liste der in den Episodentiteln verwendeten Zeichen.
Wir definieren Hash , eine Zeichenfolge, die die Hashes aller nicht verschleierten Titel enthält. Jeder Hash besteht aus einer 6-stelligen Zahl in der Basis 36.
Wir definieren H () , eine einfache Hash-Funktion.
Dies ergibt log 2 (36 6 ) ~ = 31 Entropiebits. Durch Runden auf 4 Bytes und Addieren der Größe von chr ergibt sich eine Gesamtgröße der Nutzdaten von 4 * 69 + 53 = 329 Bytes .
Die Hauptfunktion lautet nun:
(Dies wurde ausführlich gegen alle möglichen Eingaben getestet .)
quelle
Wolfram Language
13831226 BytesEditDistance ermittelt den Levenshtein-Abstand zwischen Zeichenfolgen.
quelle
Jelly , 752 Bytes
Probieren Sie es online!
Verwendet diese Liste zu komprimieren.
Dies setzt voraus , dass es kein Film ist , die genau 2 Zeichen anders als ein anderer Film hat, die nachgewiesen wird hier (Ausgang
1
).quelle
Ruby ,
1185 -1165 BytesProbieren Sie es online!
Ein Lambda, das eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt. Verwendet eine eigene String-Erweiterung. Es gibt wahrscheinlich Raum zum Golfen, sowohl bei der Auswahl des Titels aus der erweiterten Liste als auch bei der Komprimierung der Liste.
-20 Bytes: Ordnen Sie die Reihenfolge der Liste neu (von Hand), um die Wiederholung der Unterzeichenfolgen zu erhöhen
Ungolfed:
Hier ist ein Ausschnitt aus dem Auswahlalgorithmus für gierige Substitutionen, mit dem ich diesen Code generiert habe. Ich habe einige Details weggelassen, damit es nicht so funktioniert, wie es ist, aber es sollte das Wesentliche geben.
quelle
Java 10,
142614051381131513131298 Bytes-66 Bytes dank @ OlivierGrégoire durch Codierung des Strings .
Erläuterung:
Probieren Sie es online aus.
Hier ist der Code für den Encoder.
quelle
java.nio.Files.readAllBytes(java.nio.Paths.get("a"))
. Auf diese Weise ist kein bas64 erforderlich.796
und1397
ermittelt?d.deflate(b)
undi.inflate(b)
durchSystem.out.println(d.deflate(b))
und bestimmtSystem.out.println(i.inflate(b))
. Wenn Sie den Text spielen, sollten Sie die Array-Größen aktualisieren.var bytes = new byte[9999]
und geben Sie die Nummer aus. Zweiter Lauf: Ersetzen Sie den9999
durch den ausgegebenen Wert und entfernen Sie denSystem.out.println()
. Wenn Sie dies nicht tun, wird Ihre Saite höchstwahrscheinlich eine falsche Größe haben und die Ausgabe wird durcheinander gebracht. Dies ist wahrscheinlich beim 1290 Golf passiert. Die API soll mit Puffern arbeiten, aber in unserem Fall wollen wir Golf spielen, also müssen wir diese Werte vorberechnen. Wenn wir das nicht tun, verlieren wir Bytes.Python 2 , 621 Bytes
Probieren Sie es online!
Hinweis: Dang! Ich habe gerade gesehen, dass dies im Wesentlichen dasselbe ist wie Arnauds Lösung ...
Noch nicht voll bespielt ...
Die Grundidee hier: Erstellen Sie eine Liste der Hashes der Titel, Modulo 36 ^ 6 (dies erfordert 6 Bytes pro Titel; plus etwas Overhead).
Wenn Sie nun einen Titel mit zwei fehlenden Zeichen erhalten, ersetzen Sie die beiden möglichen Buchstaben durch Brute Force und überprüfen Sie, ob der Hash der resultierenden Zeichenfolge in der Liste enthalten ist.
Indem wir den Titeln 'B' voranstellen und die Python-
hash
Funktion verwenden, erhalten wir eine Liste, die in dieser Aufgabe niemals Kollisionen aufweist. Es wird also immer nur eine Antwort geben.quelle