এই… এটি ... ক্ষমা!


11

ফোর্ট্রেস হ'ল সান প্রোগ্রামিং ল্যাঙ্গুয়েজ রিসার্চ গ্রুপ (আরআইপি ফোর্ট্রেস) দ্বারা নির্মিত একটি ভাষা যা এর একটি অনন্য সম্পত্তি ছিল, বিভিন্ন ফন্ট-শৈলীতে (যেমন ব্ল্যাকবোর্ড গা 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>");
}

আমি সেগুলি স্যান্ডবক্স লিঙ্কটি সরিয়ে দিতে ভুলে গেছি: কোড golf.meta.stackexchange.com/a/13383/55550
জাকারি

কেবলমাত্র বড় হাতের অক্ষরগুলি দ্বিগুণ পুনরাবৃত্তি হয়েছে এবং কেবল তিনটিই কেবল ছোট ছোট অক্ষর রয়েছে?
জোনাথন অ্যালান

বড় হাতের অক্ষর স্বাভাবিক, তির্যক এবং সাহসী হতে পারে। লোয়ারকেস ডাবলস্টার হতে পারে না।
জাকারি

_____ইনপুট হবে না।
জাকারি

ওহ ... সুতরাং এটি রূপান্তরিত অক্ষরের একটি স্ট্রিং নয়, কেবল একটিই?
ম্যাজিক অক্টোপাস উরান

উত্তর:


1

জেলি , 73 বাইট

দেখা যাচ্ছে যে কোডটিতে বিবিবি বর্ণগুলি ব্যবহার করতে সক্ষম না হওয়া বেশ ব্যয়বহুল।

5ŀ”i
“Ðñṡ’Dẋ@€“¡ḞḄ’ż“¿¿Æ€¢¬µ‘+⁽ø³F⁸ṪO¤+ị¥Ọ
Ṫ
Ḣ5ŀ”b
;j“<>/”ṃ@“¢ʠf’
i”_+LµĿ

একটি সম্পূর্ণ প্রোগ্রাম একটি যুক্তি গ্রহণ করে ফলাফল মুদ্রণ করে।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষার স্যুটটি দেখুন

কিভাবে?

প্রধান প্রবেশের পয়েন্টটি কোডের শেষ লাইন ("মূল লিঙ্ক")।

5ŀ”i - Link 1: list of characters, s (length 1 & no underscore)
  ”i - literal character 'i'
5ŀ   - call link 5 as a dyad with s on the left and 'i' on the right

“Ðñṡ’Dẋ@€“¡ḞḄ’ż“¿¿Æ€¢¬µ‘+⁽ø³F⁸ṪO¤+ị¥Ọ - Link 2: list of characters, s (length 2 & no underscore)
“Ðñṡ’                                 - base 250 literal              1007245
     D                                - to decimal list               [1,0,0,7,2,4,5]
         “¡ḞḄ’                        - base 250 literal              111673
      ẋ@€                             - repeat with reversed @rguments for €ach -> [[111673],[],[],[111673,111673,111673,111673,111673,111673,111673],[111673,111673],[111673,111673,111673,111673],[111673,111673,111673,111673,111673]]
               “¿¿Æ€¢¬µ‘              - code page index list          [11,11,13,12,1,7,9]
              ż                       - zip together                  [[111673,11],[11],[13],[[111673,111673,111673,111673,111673,111673,111673],12],[[111673,111673],1],[[111673,111673,111673,111673],7],[[111673,111673,111673,111673,111673],9]]
                         ⁽ø³          - base 250 literal              8382
                        +             - addition (vectorises)         [[120055,8393],[8393],[8395],[[120055,120055,120055,120055,120055,120055,120055],8394],[[120055,120055],8383],[[120055,120055,120055,120055],8389],[[120055,120055,120055,120055,120055],8391]]
                            F         - flatten                       [120055,8393,8393,8395,120055,120055,120055,120055,120055,120055,120055,8394,120055,120055,8383,120055,120055,120055,120055,8389,120055,120055,120055,120055,120055,8391]
                                ¤     - nilad followed by link(s) as a nilad:                                                                                    ^
                             ⁸        -   chain's left argument, s  e.g.    "CC"                                                                                 |
                              Ṫ       -   tail (last character)             'C'                                                                                  |
                               O      -   cast to ordinal                   67                                                                                   |
                                   ¥  - last two links as a dyad:                                                                                                |
                                  ị   -   index into (1-indexed & modular)  8383 (this is at index 67%26=15 -----------------------------------------------------+ )
                                 +    -   add the ordinal                   8450
                                    Ọ - convert from ordinal to character   'ℂ'

Ṫ - Link 3: list of characters, s (length 2 & underscore at index 1)
Ṫ - tail (get the first character

Ḣ5ŀ”b - Link 4: list of characters, s (length 2 & underscore at index 2)
Ḣ     - head s (the non-_ character)
   ”b - literal character 'b'
 5ŀ   - call link 5 as a dyad with the non-_ character on the left and 'b' on the right

;j“<>/”ṃ@“¢ʠf’ - Link 5, wrap in a tag: element, tagName      e.g. 'a', 'i'
;              - concatenate the element with the tagName          "ai"
  “<>/”        - literal list of characters                        "<>/"
 j             - join                                              "a<>/i"
         “¢ʠf’ - base 250 literal                                  166603
       ṃ@      - base decompression with reversed @rguments
               -   "a<>/i" is 5 long, so 166603 is converted to
               -   base 5 [2,0,3,1,2,4,0,3] with digits "a<>/i"    "<i>a</i>"

i”_+LµĿ - Main link: list of characters, s (as specified only):
 ”_     - literal '_'
i       - index of '_' in s (1-indexed; 0 if not found)
    L   - length of s
   +    - addition
     µĿ - call link with that number as a monad with argument s
        - implicit print

ইনপুট ব্যর্থ ZZ
জাকারি

ওহ, এটি কি ইউনিকোডের আলাদা জায়গায় আছে? উদ্ভট পছন্দ তারা করেছে।
জোনাথন অ্যালান

হ্যাঁ, ডাবলস্ট্রাক C H N P Q Rএবং Zইউনিকোডে বিভিন্ন স্থানে রয়েছে।
জাকারি

(পঞ্চম বুলেট পয়েন্ট পড়ুন)
জাকারি

LOL, জেলি এর মতো ফ্লপ দেখতে মজা লাগে!
জাকারি

4

পাইথন 3.6, 159 131 128 বাইট

1 জ্যাকেট @ জ্যাচারকে ধন্যবাদ বাইট সংরক্ষণ করা হয়েছে ý

3 ভাইট সংরক্ষণ করেছেন @ ভেলিউইঙ্ককে ধন্যবাদ

২৮ বাইট সংরক্ষিত হয়েছে @ রডকে ধন্যবাদ

lambda s:len(s)<2and f"<i>{s}</i>"or s[0]==s[1]and"𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ"[ord(s[0])-65]or[f"<b>{s[0]}</b>",s[1]][s[0]=='_']

এটি অনলাইন চেষ্টা করুন!


len(s)<2 and=>len(s)<2and
জাকারি

পোস্টটিতে নতুন সম্পাদনাটি দেখুন, each প্রতি 1 বাইট হিসাবে গণনা করুন।
জাকারি


2

রুবি , 104 106 105 + 1 = 105 107 106 "বাইট"

সম্ভবত রেটিনাতে আরও ভাল কাজ করে। -pপতাকা ব্যবহার করে ।

জাকারিয়া থেকে -1 বাইট।

gsub /^.$/,'<i>\0</i>'
gsub(/(.)\1/){$1.tr"A-Z","𝔸𝔹ℂ𝔻-𝔾ℍ𝕀-𝕄ℕ𝕆ℙℚℝ𝕊-𝕐ℤ"}
gsub /(.)_/,'<b>\1</b>'
gsub ?_,''

এটি অনলাইন চেষ্টা করুন!


তুমি ভুলে গেছ JJ, KK, LL, TT, UU, VVএবং WW। !! (সম্ভবত এটি কেন MMদেয় )
জাকারি

@ জাকারি স্থির হয়েছে।
মান কালি

2
আমি মনে করি আপনি তৈরি করে একটি বাইট সংরক্ষণ করতে পারেন 𝕊-𝕏𝕐 𝕊-𝕐
জাকারি

আপনি 1 টি বাইট সংরক্ষণের জন্য আপনার টিআইও লিঙ্কটি আপডেট করেননি। এছাড়াও, এটি রেটিনাতে খারাপভাবে ব্যর্থ হয় যা ইউটিএফ -16 ব্যবহার করে এবং তাই একটি একক AY কে দ্বি-চার্জ 16_t ব্ল্যাকবোল্ড অক্ষরে অনুবাদ করতে পারে না।
নীল

নিল উফ স্থির লিঙ্ক।
মূল্য কালি

1

জাভাস্ক্রিপ্ট, 97 টি অক্ষর

([a,b])=>a==b?[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ'][a.charCodeAt()-65]:b?b=='_'?a.bold():b:a.italics()

কেন একটি ভাষার মতো পদ্ধতি রয়েছে String.prototype.italicsএবংString.prototype.bold ?

নীলকে ধন্যবাদ, 9 টি বাইট সংরক্ষণ করুন, [...s]পরিবর্তে ব্যবহার করুন s.match(/./u)


এটি কি ES6, বা ES7?
জাকারি

uRegExp এ পতাকা ES6 বৈশিষ্ট্য। String.prototype.italicsএবং String.prototype.boldকেবলমাত্র কিছু উত্তরাধিকার বৈশিষ্ট্য।
tsh

আমি জানতাম এটি ES6 ... 'চর্বিযুক্ত তীরগুলির কারণ ছিল।
জাকারি

উপরের মন্তব্যে "ES6" কে "ES6 বা ES7" এ পরিবর্তন করুন।
জাকারি

[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']আপনার কিছু বাইট সংরক্ষণ করা উচিত
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.