Défi
Salut, étant donné une chaîne en entrée, supprimez toutes les salutations trouvées au début de la chaîne.
Le programme qui effectue les substitutions les plus correctes en moins de 50 octets gagne.
Salutations
Hé, une salutation est définie comme l'un des mots suivants:
- salut
- Hey
- Bonjour
- cher
- salutations
- hai
- les gars
- salut
- salut
- hiya
- foins
- heya
- hola
- hihi
- salutations
La première lettre peut être en majuscule.
Il y aura toujours une virgule et / ou un seul espace après la salutation qui devra également être supprimé. La virgule et l'espace peuvent être dans n'importe quel ordre ( ,<space>
ou <space>,
) et les deux doivent être supprimés.
Le message d'accueil et le mot suivant ne seront séparés que par une virgule et / ou un seul espace.
Vous devez alors mettre en majuscule la première lettre du mot qui aurait suivi la salutation. Même si aucun remplacement n'a eu lieu, vous devez toujours mettre en majuscule le premier mot de la sortie.
La mise en majuscule s'applique uniquement aux caractères alphabétiques en minuscules ( abcdefghijklmnopqrstuvwxyz
). Vous devez laisser tout autre personnage tel quel.
La salutation sera toujours au début de la chaîne. Vous ne devez pas remplacer une salutation qui n'est pas au début.
Il n'y a pas toujours de salut.
Votre code doit être inférieur à 50 octets.
Exemples
Input > Output
Salutations, what's going on? > What's going on?
hello i have quetions how does juice an avocado > I have quetions how does juice an avocado
How d'you do > How d'you do
Hey,You! > You!
hola cows eat hay > Cows eat hay
hey Hi there! > Hi there!
hihi ,guys > Guys
Test de la batterie
Hola, il y a 1000 entrées différentes au total:
La batterie de test peut être trouvée ici où chaque entrée est séparée par une nouvelle ligne: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/inputs.txt
Les sorties correctes correspondantes sont ici: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/replaced.txt
Une commande Bash pour récupérer les deux ci-dessus est
wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt
Gagnant
Howdy, le programme avec les substitutions les plus correctes des 1000 entrées ci-dessus gagne.
Vous devez mettre le pourcentage des entrées que votre programme gère correctement dans votre en-tête comme ceci:
# Language Name, percentage%
Je ne sais pas vraiment pourquoi Jeff en a fait une chose, mais cela représente quand même un beau défi.
la source
s=>System.Text.RegularExpressions.Regex.Replace();
50 octets avant même qu'un modèle ne soit spécifié, c'est alors C # out. (Avec une approche regex bien sûr)Réponses:
GNU sed,
78%100%(49 octets)
La batterie de test est assez limitée: on peut compter quels mots apparaissent en premier sur chaque ligne:
Les saluts à enlever commencent par
d
,g
,h
ous
(ou majuscule versions de celui - ci); les non-salutations commençant par ces lettres sontIgnorer les lignes où elles apparaissent seules, c'est 220 faux positifs. Supprimons donc les premiers mots commençant par l'une de ces quatre lettres.
Lorsque nous voyons un mot initial commençant par l'un de ceux (
/ ^[dghs]\w*
), insensible à la casse (/i
), et suivi d'au moins un caractère non-mot (\W\+
), remplacez-le par une chaîne vide. Ensuite, remplacez le premier caractère par son équivalent majuscule (s/./\U&/
).Cela nous donne
Nous pouvons maintenant affiner un peu ceci:
Le plus grand ensemble de faux positifs est
how
donc nous conditionnons la substitution en préfixant avec un test négatif:Nous pouvons également filtrer sur la deuxième lettre, pour éliminer
g'd
,speak
etsweet
:Cela ne laisse qu'un
good
faux positif. Nous pouvons ajuster le test de préfixe pour éliminer les mots se terminant parw
oud
:Manifestation
la source
Rétine ,
68%72,8% (ancienne)74,8%77,5% (nouvelle batterie de test)Essayez-le en ligne! Edit: Gain de 4,8% (ancien) 2,7% (nouveau) couverture avec l'aide des conseils de @ MartinEnder.
la source
[ ,]+
pour extraire quelques octets de plus. Vous pouvez également extraire leh
de l'alternance.i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+
pourrait fonctionner, ce qui signifie que vous avez 8 octets de rechangeh?i?
sauvegarde rienh?i|
et cela correspondraithih
(même si je ne sais pas si c'est même dans les cas de test).ih?i?|iya
.i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+
alorsPHP, 60,6%
50 octets
Essayez-le en ligne!
PHP, 59,4%
49 octets
Essayez-le en ligne!
PHP, 58,4%
50 octets
Essayez-le en ligne!
la source
#^[gh]\w+.#
Vim,
55,4%44,4%Explication:
la source