Le but est vraiment simple. En recevant une chaîne en entrée, analysez toutes les entités HTML qui correspondent aux caractères suivants (y compris leurs variantes majuscules):
áàãâäéèêëíìîïóòõôöúùûüýÿ
Règles d'analyse:
- Chaque entité commence par
&
et se termine par;
- Le premier caractère après le
&
sera le caractère modifié (la casse est importante!) - Les caractères restants font référence au nom de l'accent à utiliser (
acute
,grave
,circ
,tilde
etuml
). Le nom d'accent DOIT être en minuscules! * - Toute entité HTML qui produit un caractère qui ne figure pas sur cette liste, ou qui est invalide, doit être laissée intacte (ex:
&
,&etilde;
,&a;
) - Les entités numériques doivent être ignorées, car elles ne correspondent pas aux règles ci-dessus
Cette modification a été introduite le 18-02-2016. Toutes les réponses existantes qui acceptent les entités HTML avec des noms d'accent majuscules sont valides. Toute réponse future doit suivre cette règle.
Exemples:
á //á
Téhèh //Téhèh
an & //an &
Production:
La sortie peut être en ISO-8859- X (1-15), windows-1252 ou UTF-8/16/32.
Vous pouvez choisir un et un seul des encodages valides et l'utiliser pour n'importe quelle sortie. Vous pouvez supposer en toute sécurité que l'entrée sera en ASCII.
L'un des éléments suivants est une sortie valide pour á
:
á
(ISO-8859-1 / 15 ou windows-1252, équivalent à\xE1
)á
(UTF-8, équivalent à\xC3\xA1
ou\u00E1
)aÌ
(UTF-8, équivalent àa\xCC\x81
oua\u0301
)- Toute combinaison de signes diacritiques, sans utiliser d'entités HTML.
La sortie doit être visuellement similaire, lorsqu'elle est rendue / affichée, aux caractères de la liste.
N'oubliez pas que toutes les failles standard et intégrées * sont interdites . Puisqu'il s'agit de code-golf , la réponse la plus courte l'emporte.
* Ce changement a été effectué en raison de la grande désapprobation des bonus et pénalités, et au moment de la rédaction, n'invalide aucune réponse
Réponses:
Japt,
8175 octetsLes six
?
s représentent des caractères non imprimables. Testez-le en ligne!Remarque: Cela génère la troisième option d'encodage; c'est-à-dire la lettre suivie du codage UTF-8 brut de la marque diacritique combinée correspondante.
Comment ça fonctionne
Hexdump du code:
la source
Ý
seul, mais il devrait être changé en Ý ...JavaScript (ES6),
141122134 octetsJ'ai suivi l'exemple de daavko en utilisant des signes diacritiques, et je me sens comme un idiot de ne pas penser à l'utiliser plus tôt. En fait, il devient étonnamment court pour JavaScript.
EDIT: Neil a détecté de mauvais cas d'indéfinis, qui sont maintenant corrigés.
la source
String.prototype.replace
est tellement ridiculement jouable au golf pour la traversée des cordes.É
(quelle que soit la bonne chose).Rétine , 115 octets
Je suis nouveau au code-golf, mais je pense que cela pourrait fonctionner.
Cette version a été faite avant la règle, qui ne permet pas de remplacer les entités html majuscules (par exemple
Á
) a été introduite.Recherche et remplacement assez simples. Utilise UTF-8.
Utilise l'approche [lettre] \ xCC \ x [code hexadécimal diacritique]. La marque diacritique est ajoutée après chaque lettre pertinente.
Pour une raison quelconque, la police Droid Sans Mono par défaut dans l'interpréteur ne peut pas rendre correctement les lettres "circ" et "uml". Si vous le modifiez via des outils de développement pour quelque chose comme DejaVu Sans, cela se montre très bien. Je pense que c'est une limitation de la police, pas du programme. Mais si c'est la faute du programme, je vais essayer de le réparer.
Voici une version de 129 octets, qui ne remplace pas les entites HTML majuscules (par exemple
Á
)Essayez-le en ligne!
Essayez-le en ligne! Version 129 octets
la source
JavaScript (ES6), 288 octets
Crée un objet de mappage de caractères (avec le code numérique de base pour chaque caractère) et utilise des décalages (ou 0 s'il n'existe pas) pour déterminer si une entité doit être convertie et quel est son code de caractère. La symétrie dans les cas signifie ajouter 32 en minuscules, sauf pour
Ÿ
, où il utilise un décalage différent pour UTF8.la source
Ÿ
UTF8: c'est juste dans un endroit bizarre. Tout de même, je pensais avoir condensé et optimisé plutôt bien, étant donné qu'une liste de remplacement littérale serait plus de deux fois plus longue. Voyez-vous quelque chose que je ne suis pas?.toLowerCase()
. Ce nom est ÉNORME !!! En outre,String.fromCharCode
peut accepter plusieurs paramètres ou être appelé commeString.fromCharCode.call([...])
i
drapeau.