ফোর্ট্রেস হ'ল সান প্রোগ্রামিং ল্যাঙ্গুয়েজ রিসার্চ গ্রুপ (আরআইপি ফোর্ট্রেস) দ্বারা নির্মিত একটি ভাষা যা এর একটি অনন্য সম্পত্তি ছিল, বিভিন্ন ফন্ট-শৈলীতে (যেমন ব্ল্যাকবোর্ড গা bold়, সাহসী, ইতালি,) রেন্ডার করা সম্ভব হয়েছিল " রোমান ইত্যাদি)। লক্ষ্যটি হ'ল এইচটিএমএল মার্কআপে ওয়ান-চর ফোর্ট্রেস ভেরিয়েবলের প্রতিনিধিত্ব করা।
এখানে কীভাবে এক-চর ভেরিয়েবলের সুরক্ষা কার্যকর হয়েছে (কোড-গল্ফিংয়ের উদ্দেশ্যে ডকুমেন্টেশন থেকে সরলীকৃত / সংশোধিত):
- চলকটি যদি পুনরাবৃত্তি মূলধন হয় (যেমন
ZZ), এটি ব্ল্যাকবোর্ড গা bold় আকারে ফর্ম্যাট হয় (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) - যদি ভেরিয়েবলটির পূর্বে একটি আন্ডারস্কোর হয় তবে ভেরিয়েবলটি রোমান ফন্টে রেন্ডার করা হয় (একা বামে)
- যদি ভেরিয়েবলটি একটি আন্ডারস্কোর দ্বারা অনুসরণ করা হয় তবে ভেরিয়েবলটি বোল্ড ফন্টে (
<b>v ) রেন্ডার করা হয়</b>) - যদি ভেরিয়েবলটি পূর্বে বা আন্ডারস্কোর অনুসরণ না করে হয় তবে ভেরিয়েবলটি ইতালি ফন্টে রেন্ডার করা হয় (
<i>v</i>) - বিদ্যালয়ে লিপির জন্য তক্তা bolds এর codepoints আছেন:
𝔸: 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। আপনার প্রোগ্রামের প্রতিটি বাইট হিসাবে এই গণনাগুলি (যদি আপনার পছন্দের ভাষাটি এই অক্ষরগুলি হ্যান্ডেল করতে পারে)
ইনপুট হয় হয় পুনরাবৃত্ত ASCII মূলধন, বা কোনও আন্ডারস্কোর, একটি শীর্ষস্থানীয় আন্ডারস্কোর বা একটি পিছনের আন্ডারস্কোর (একে _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 আলফা সংস্করণটির সরাসরি ডাউনলোড ।
রেফারেন্স বাস্তবায়ন (এটি ফোর্ট্রেসে হবে, তবে ফোর্ট্রেস ডাবলস্ট্রাকের বেশিরভাগ চরিত্র পছন্দ করে না, সুতরাং এই প্রয়োগটি ডি তে রয়েছে):
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>");
}
_____ইনপুট হবে না।