Fortress war eine Sprache, die von der Sun Programming Language Research Group (RIP Fortress) entwickelt wurde und eine einzigartige Eigenschaft hatte. Es war möglich, Programme in verschiedenen Schriftstilen (z. B. fett, fett, kursiv) zu rendern ("Fortify"). römisch usw.). Ziel ist es, eine Fortress-Variable mit einem Zeichen im HTML-Markup darzustellen.
So funktionierte die Anreicherung von Ein-Zeichen-Variablen (vereinfacht / modifiziert aus der Dokumentation für Code-Golf-Zwecke):
- Wenn die Variable ein wiederholtes Großbuchstaben ist (dh
ZZ), wird sie in Fettdruck (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) formatiert. - Wenn der Variablen ein Unterstrich vorangestellt ist, wird die Variable in römischer Schrift gerendert (in Ruhe gelassen).
- Wenn auf die Variable ein Unterstrich folgt, wird die Variable in Fettdruck (
<b>v</b>) gerendert. - Wenn der Variablen weder ein Unterstrich vorangestellt noch gefolgt wird, wird die Variable in Kursivschrift (
<i>v</i>) gerendert. - Die Codepunkte der Fettdrucke sind
𝔸:: 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. Diese zählen in Ihrem Programm jeweils als ein Byte (wenn die Sprache Ihrer Wahl diese Zeichen überhaupt verarbeiten kann)
Die Eingabe ist entweder ein wiederholtes ASCII-Großbuchstaben oder ein einzelner ASCII-Buchstabe ohne Unterstrich, einen führenden Unterstrich oder einen nachfolgenden Unterstrich (AKA _a_ist keine Eingabe). Dies ist Code-Golf, also gewinnt die niedrigste Byteanzahl!
Testfälle:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
Links: Spezifikation , Direkter Download von Version 0.1 Alpha .
Referenzimplementierung (Dies wäre in Fortress, aber Fortress mag die meisten doppelt getroffenen Charaktere nicht, daher befindet sich diese Implementierung 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>");
}
_____wird nicht eingegeben.