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é.Réponses:
Gelée , 73 octets
Il s'avère que ne pas pouvoir utiliser les lettres BBB dans le code coûte assez cher.
Un programme complet prenant un argument et imprimant le résultat.
Essayez-le en ligne! ou consultez la suite de tests .
Comment?
Le point d'entrée principal est la dernière ligne de code ("Lien principal").
la source
ZZ
.C
H
N
P
Q
R
etZ
sont à différents endroits en unicode.Python 3.6,
159131128 octets1 octet enregistré grâce à @ Zacharý
3 octets enregistrés grâce à @ VаlueInk
28 octets économisés grâce à @Rod
Essayez-le en ligne!
la source
len(s)<2 and
=>len(s)<2and
Ruby ,
104106105 + 1 =105107106 "octets"Fonctionne probablement encore mieux dans la rétine. Utilise le
-p
drapeau.-1 octet de Zacharý.
Essayez-le en ligne!
la source
JJ
,KK
,LL
,TT
,UU
,VV
etWW
. !! (C'est probablement pourquoiMM
donneℙ
)𝕊-𝕏𝕐
𝕊-𝕐
.JavaScript, 97 caractères
Pourquoi une langue a des méthodes comme
String.prototype.italics
etString.prototype.bold
?Grâce à Neil, économisez 9 octets, utilisez
[...s]
au lieu des.match(/./u)
.la source
u
drapeau dans RegExp est la fonctionnalité ES6.String.prototype.italics
et neString.prototype.bold
sont que quelques fonctionnalités héritées.[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']
devrait vous faire économiser quelques octets.