Fortressは、Sun Programming Language Research Group(RIP Fortress)によって開発された言語であり、独自の特性があり、プログラムをさまざまなフォントスタイル(太字、太字、斜体など)でレンダリング(「強化」)することができました。ローマなど)。目標は、HTMLマークアップで1文字のFortress変数を表すことです。
1文字の変数の強化がどのように機能したかを以下に示します(コードゴルフの目的でドキュメントを簡略化/変更)。
- 変数が繰り返し大文字(つまり
ZZ)の場合、黒板の太字(𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ)でフォーマットされます。 - 変数の前に下線が付いている場合、変数はローマ字フォントでレンダリングされます(そのまま)
- 変数の後に下線が続く場合、変数は太字フォント(
<b>v</b>)でレンダリングされます - 変数の前にも下線も付いていない場合、変数は斜体フォント(
<i>v</i>)でレンダリングされます - 黒板の太字のコードポイントは、
𝔸: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。これらはプログラム内でそれぞれ1バイトとしてカウントされます(選択した言語がこれらの文字をまったく処理できる場合)
入力は、繰り返されるASCII大文字、またはアンダースコアなし、先頭アンダースコア、末尾アンダースコア付きの単一ASCII文字のいずれかです(AKA _a_は入力されません)。これはコードゴルフですので、バイト数が最も少なくなります!
テストケース:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
リンク:仕様、バージョン0.1 alphaの直接ダウンロード。
参照実装(これはFortressにありますが、Fortressはほとんどの二重文字を好まないため、この実装は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>");
}
_____入力されません。