Fortress era un linguaggio sviluppato dal Sun Programming Language Research Group (RIP Fortress) che aveva una proprietà unica, era possibile rendere ("fortificare") programmi in diversi stili di carattere (lavagna, grassetto, grassetto, corsivo, romano, ecc.). L'obiettivo è rappresentare una variabile Fortress a un carattere nel markup HTML.
Ecco come ha funzionato la fortificazione delle variabili a un carattere (semplificata / modificata dalla documentazione ai fini del code-golf):
- Se la variabile è una maiuscola ripetuta (cioè
ZZ), viene formattata in grassetto lavagna (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) - Se la variabile è preceduta da un trattino basso, la variabile viene visualizzata in caratteri romani (lasciata sola)
- Se la variabile è seguita da un trattino basso, la variabile viene visualizzata in grassetto (
<b>v</b>) - Se la variabile non è né preceduta né seguita da un trattino basso, la variabile viene visualizzata in corsivo (
<i>v</i>) - I punti di codice dei grassetti della lavagna sono::
𝔸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. Questi contano come un byte ciascuno nel tuo programma (se la tua lingua preferita può gestire questi caratteri)
L'input sarà una capitale ASCII ripetuta o una singola lettera ASCII senza carattere di sottolineatura, un carattere di sottolineatura iniziale o un carattere di sottolineatura finale (AKA _a_non sarà un input). Questo è code-golf, quindi vince il conteggio di byte più basso!
Casi test:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
Collegamenti: specifica , download diretto della versione 0.1 alfa .
Implementazione di riferimento (questo sarebbe in Fortezza, ma a Fortezza non piace la maggior parte dei personaggi duplicati, quindi questa implementazione è in 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>");
}
_____non verrà inserito.