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.Jawaban:
Jelly , 73 byte
Ternyata tidak bisa menggunakan huruf BBB dalam kode itu cukup mahal.
Program lengkap mengambil satu argumen dan mencetak hasilnya.
Cobalah online! atau lihat test suite .
Bagaimana?
Titik masuk utama adalah baris kode terakhir ("Tautan utama").
sumber
ZZ
.C
H
N
P
Q
R
danZ
berada di tempat yang berbeda di unicode.Python 3.6,
159131128 byte1 byte disimpan berkat @ ZacharΓ½
3 byte disimpan berkat @ VΠ°lueInk
28 byte disimpan berkat @Rod
Cobalah online!
sumber
len(s)<2 and
=>len(s)<2and
Ruby ,
104106105 + 1 =105107106 "byte"Mungkin bekerja lebih baik di Retina. Menggunakan
-p
bendera-1 byte dari ZacharΓ½.
Cobalah online!
sumber
JJ
,KK
,LL
,TT
,UU
,VV
danWW
. !! (Yang mungkin mengapaMM
memberiβ
)π-ππ
π-π
.JavaScript, 97 karakter
Mengapa bahasa memiliki metode seperti
String.prototype.italics
danString.prototype.bold
?Berkat Neil, simpan 9 byte, gunakan
[...s]
sebagai gantis.match(/./u)
.sumber
u
flag di RegExp adalah fitur ES6.String.prototype.italics
danString.prototype.bold
hanya beberapa fitur warisan.[...'πΈπΉβπ»πΌπ½πΎβπππππβπβββπππππππβ€']
harus menghemat beberapa byte.