Fortress était un langage développé par le Sun Programming Language Research Group (RIP Fortress) qui avait une propriété unique, il était possible de rendre ("Fortify") des programmes dans différents styles de police (c.-à-d. Tableau noir gras, gras, italique, romain, etc.). L'objectif est de représenter une variable Fortress d'un caractère dans le balisage HTML.
Voici comment la fortification des variables à un caractère a fonctionné (simplifiée / modifiée à partir de la documentation à des fins de golf de code):
- Si la variable est une majuscule répétée (c.-à-d.
ZZ), Elle devient formatée en gras noir (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) - Si la variable est précédée d'un trait de soulignement, la variable est rendue en police romaine (laissée seule)
- Si la variable est suivie d'un trait de soulignement, la variable est rendue en gras (
<b>v</b>) - Si la variable n'est ni précédée ni suivie d'un trait de soulignement, la variable est rendue en italique (
<i>v</i>) - Les points de code des caractères gras du tableau noir sont::
𝔸1D538,: 1D539𝔹,:ℂ2102𝔻,:𝔼1D53B𝔽,:𝔾1D53Cℍ,:𝕀1D53D𝕁,:𝕂1D53E𝕃,:𝕄210D,: 1D540,: 1D541,: 1D542,: 1D543,: 1D544,:ℕ2115,𝕆: 1D546,:ℙ2119ℚ,: 211A,:ℝ211D𝕊,:𝕋1D54A𝕌,:𝕍1D54B𝕎,:𝕏1D54C𝕐,: 1D54D,: 1D54E,: 1D54F,: 1D550,:ℤ2124. Ceux-ci comptent pour un octet chacun dans votre programme (si la langue de votre choix peut gérer ces caractères)
L'entrée sera soit une majuscule ASCII répétée, soit une seule lettre ASCII sans aucun trait de soulignement, un trait de soulignement de début ou un trait de soulignement de fin (AKA _a_ne sera pas une entrée). C'est le code-golf donc le nombre d'octets le plus bas gagne!
Cas de test:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
Liens: Spécification , Téléchargement direct de la version 0.1 alpha .
Implémentation de référence (ce serait dans Fortress, mais Fortress n'aime pas la plupart des caractères doublestruck, donc cette implémentation est en D):
dstring fortify(string arg) {
import std.string, std.conv;
alias D = to!dstring; //Convert to a string that accepts the unicode needed
dstring BB = "𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ"d; //blackboard bold capitals
string UC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //normal ASCII capitals
if(arg.length == 1)
return D("<i>" ~ arg ~ "</i>");
if(arg[0] == a[1])
return D(BB[UC.indexOf(arg[0])]);
if(arg[0] == '_')
return D(arg[1]);
return D("<b>" ~ arg[0] ~ "</b>");
}
_____ne sera pas entré.