Fortress adalah bahasa yang dikembangkan oleh Grup Penelitian Bahasa Pemrograman Sun (RIP Fortress) yang memiliki properti unik di dalamnya, dimungkinkan untuk membuat program ("Fortify") dalam berbagai gaya font (yaitu papan tulis tebal, tebal, cetak miring, roman, dll.). Tujuannya adalah untuk mewakili variabel Benteng satu karakter di markup HTML.
Inilah cara fortifikasi variabel satu-char bekerja (disederhanakan / dimodifikasi dari dokumentasi untuk keperluan kode-golf):
- Jika variabel adalah modal berulang (yaitu
ZZ), itu menjadi diformat dalam papan tulis tebal (πΈπΉβπ»πΌπ½πΎβπππππβπβββπππππππβ€) - Jika variabel didahului dengan garis bawah, variabel tersebut diterjemahkan dalam font roman (dibiarkan sendiri)
- Jika variabel diikuti oleh garis bawah, variabel tersebut diterjemahkan dalam huruf tebal (
<b>v</b>) - Jika variabel tidak didahului atau diikuti oleh garis bawah, variabel tersebut dibuat dalam huruf miring (
<i>v</i>) - Codepoint dari papan tulis tebal adalah::
πΈ1D538,: 1D539πΉ,:β2102π»,: 1D53B,: 1D53C,: 1D53DπΌ,:π½1D53EπΎ,:β210Dπ,:π1D540π,:π1D541π,: 1D543,: 1D544,: 1D544,: 1155β: 2115,π: 1D546,:β2119β,:β211Aπ,:π211Dπ,:π1D54Aπ,:π1D54Bπ,: 1D54C,: 1D54D,: 1D54E,: 1D54F,: 1D550,: 1D550,:β€2124. Ini dihitung sebagai masing-masing satu byte dalam program Anda (jika bahasa pilihan Anda dapat menangani karakter ini sama sekali)
Input akan berupa modal ASCII yang diulang, atau satu huruf ASCII tanpa garis bawah, garis bawah terkemuka, atau garis bawah trailing (AKA _a_tidak akan menjadi input). Ini adalah kode-golf sehingga jumlah byte terendah menang!
Kasus uji:
a => <i>a</i>
BB => πΉ
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => β€
Tautan: Spesifikasi , Unduh langsung versi 0.1 alpha .
Implementasi referensi (Ini akan di Fortress, tetapi Fortress tidak suka sebagian besar karakter doublestruck, jadi implementasi ini di 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>");
}
_____tidak akan menjadi input.