Votre tâche consiste à trouver deux personnages manquants dans un titre d'épisode Columbo.
Contribution
Un des 69 titres d'épisode de Columbo (comme indiqué ci-dessous), avec exactement deux caractères remplacés par *
.
Exemple :
"Ran*om for a *ead Man"
Production
Vous pouvez soit renvoyer le titre complet de l'épisode, soit simplement les deux personnages manquants dans un format raisonnable, à condition que l'ordre des personnages soit sans ambiguïté.
Quelques sorties valides :
"Ransom for a Dead Man"
"sD"
["s", "D"]
Épisodes
Veuillez suivre ce lien pour obtenir la liste non formatée.
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
Clarifications et règles
- Stocker la liste des épisodes (ou stocker suffisamment d'informations pour deviner les personnages manquants) fait partie du défi. En d'autres termes, vous n'obtenez pas la liste «gratuitement». Si vous utilisez des fichiers externes, leur longueur doit être ajoutée à votre nombre d'octets.
- Votre programme / fonction doit prendre en charge les titres exactement comme indiqué ci-dessus:
- La casse de chaque lettre doit correspondre exactement.
- La ponctuation doit également correspondre exactement.
- Etc...
- Tous les caractères du titre peuvent être remplacés par
*
, pas seulement des lettres. Ils pourraient être contigus. - Vous pouvez vous attendre à un autre caractère «vide» au lieu de
*
, tant qu'il n'apparaît nulle part dans aucun titre. (Si oui, veuillez le mentionner dans votre réponse.)
Ah, il y a encore une chose. J'ai presque oublié...
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
Ensemble d'essai
Voici un lien vers toutes les 14252 entrées possibles.
code-golf
string
error-correction
Arnauld
la source
la source
error-correction
balise qui, je pense, est appropriée ici.A
eta
dans la liste des chaînes uniques qui existent.',-.:ABCDEFGHIJLMNOPQRSTUWYabcdefghiklmnopqrstuvwxyz
(et<space>
, bien sûr).Réponses:
Stax , 294 octets
Exécuter et déboguer
Voici l'approche:
Afin de vérifier qu'aucun résultat incorrect ne serait produit, j'ai utilisé un programme C # pour vérifier la sortie pour toutes les entrées possibles. Ce n'est pas très portable et il fonctionne assez longtemps. Je l'ai laissé rechercher pendant plus de 24 heures pour les dénominateurs candidats jusqu'à présent, donc ce n'est pas vraiment approprié pour TIO. Je l'exécute dans LINQPad.
Une autre note sur le stockage des valeurs de hachage intégrées dans le programme. Les hachages sont triés avant d'être incorporés dans le tableau. J'utilise une fonction stax appelée "tableaux entiers entassés" qui est un moyen de représenter efficacement les tableaux entiers. Cette représentation est capable de stocker les différences entre les éléments si cela est plus efficace, donc le tri préalable des valeurs permet d'économiser quelques octets.
Voici la représentation décompressée avec quelques commentaires minimes.
la source
Python 2, 862 octets
Voici un script bash qui assemble ce programme et montre son exécution.
Explication
C'est une solution assez simple: j'ai recherché la permutation la plus compressible des titres réunis par des espaces. Ce programme remplace simplement
*
dans l'entrée par.
, et recherche une correspondance de cela une expression régulière à l'intérieur de la chaîne.La chaîne se décompresse pour:
la source
JavaScript (ES6), 634 octets
Cette soumission devait rester cachée jusqu'à ce qu'une réponse de moins de 500 octets soit publiée. Ce qui est maintenant fait .
Essayez-le en ligne! (un cas de test aléatoire par épisode)
Comment?
Nous définissons chr , la liste des personnages utilisés dans les titres des épisodes.
Nous définissons le hachage , une chaîne contenant les hachages de tous les titres non masqués. Chaque hachage se compose d'un nombre à 6 chiffres en base 36.
Nous définissons H () , une simple fonction de hachage.
Cela donne log 2 (36 6 ) ~ = 31 bits d'entropie. En arrondissant cela à 4 octets et en ajoutant la taille de chr , la taille totale des données de charge utile est: 4 * 69 + 53 = 329 octets .
La fonction principale se lit désormais comme suit:
(Cela a été testé de manière exhaustive par rapport à toutes les entrées possibles .)
la source
Langue Wolfram
13831226 octetsEditDistance trouve la distance Levenshtein entre les chaînes.
la source
Gelée , 752 octets
Essayez-le en ligne!
Utilisé ce pour compacter la liste.
Cela suppose qu'aucun film n'a exactement 2 caractères différents d'un autre film, ce qui est prouvé ici (sortie
1
).la source
Rubis ,
11851165 octetsEssayez-le en ligne!
Un lambda acceptant une chaîne et renvoyant une chaîne. Utilise une certaine extension de chaîne homebrewed. Il y a probablement de la place pour jouer au golf à la fois dans la façon dont le titre est choisi dans la liste développée et dans la façon dont la liste est compressée.
-20 octets: réorganiser l'ordre de la liste (à la main) pour augmenter la répétition de la sous-chaîne
Non golfé:
Voici un extrait de l'algorithme de sélection de substitution gourmand que j'ai utilisé pour générer ce code. J'ai omis certains détails pour que cela ne fonctionne pas tel quel, mais cela devrait donner l'essentiel.
la source
Java 10,
142614051381131513131298 octets-66 octets grâce à @ OlivierGrégoire en encodant la String.
Explication:
Essayez-le en ligne.
Voici le code de l'encodeur.
la source
java.nio.Files.readAllBytes(java.nio.Paths.get("a"))
. De cette façon, aucun bas64 n'est requis.796
et1397
déterminés?d.deflate(b)
eti.inflate(b)
parSystem.out.println(d.deflate(b))
etSystem.out.println(i.inflate(b))
. Si vous jouez au texte, vous devez mettre à jour les tailles de tableau.var bytes = new byte[9999]
et affichez le nombre. Deuxième exécution: remplacez le9999
par la valeur sortie et supprimez leSystem.out.println()
. Si vous ne le faites pas, votre chaîne aura très probablement une mauvaise taille et la sortie sera gâchée, c'est probablement ce qui s'est produit avec le golf 1290. L'API est censée fonctionner avec des tampons, mais dans notre cas, nous voulons jouer au golf, nous devons donc précalculer ces valeurs. Sinon, nous perdons des octets.Python 2 , 621 octets
Essayez-le en ligne!
Remarque: Dang! Je viens de voir que c'est essentiellement la même chose que la solution Arnauds ...
Pas encore entièrement golfé ...
L'idée de base ici: créer une liste de hachage des titres, modulo 36 ^ 6 (cela nécessite 6 octets par titre; plus une surcharge).
Maintenant, étant donné un titre avec deux caractères manquants, la force brute substitue les deux lettres possibles et vérifie si le hachage de la chaîne résultante est dans la liste.
En ajoutant «B» aux titres et en utilisant la
hash
fonction de Python , nous obtenons une liste qui n'a jamais de collisions dans cette tâche; il y aura donc toujours une et une seule réponse possible.la source