यह ... है ... आगे!


11

किले सन प्रोग्रामिंग लैंग्वेज रिसर्च ग्रुप (RIP फोर्ट्रेस) द्वारा विकसित की जा रही एक भाषा थी जिसकी एक अनूठी संपत्ति थी, इसे अलग-अलग फ़ॉन्ट-शैलियों (यानी ब्लैकबोर्ड बोल्ड, बोल्ड, इटैलिक्स) में प्रस्तुत करना ("फोर्टीज़") कार्यक्रम संभव था। रोमन, आदि)। लक्ष्य HTML मार्कअप में एक-चार किले चर का प्रतिनिधित्व करना है।

यहां बताया गया है कि कैसे एक-चर चर की किलेबंदी (कोड-गोल्फ उद्देश्यों के लिए प्रलेखन से सरलीकृत / संशोधित):

  • यदि चर दोहराई गई पूंजी (यानी ZZ) है, तो यह ब्लैकबोर्ड में बोल्ड हो जाता है ( 𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ)
  • यदि चर को अंडरस्कोर से पहले रखा गया है, तो चर को रोमन फ़ॉन्ट (अकेले छोड़ दिया) में प्रस्तुत किया गया है
  • यदि किसी अंडरस्कोर के द्वारा वेरिएबल का अनुसरण किया जाता है, तो वैरिएबल को बोल्ड फॉन्ट ( <b>v </b>) में प्रस्तुत किया जाता है
  • यदि चर न तो पूर्ववर्ती है और न ही अंडरस्कोर द्वारा अनुसरण किया गया है, तो चर इटैलिक फ़ॉन्ट ( <i>v </i>) में प्रदान किया गया है
  • ब्लैकबोर्ड bolds का कोड पॉइंट्स हैं: 𝔸: 1D538, 𝔹: 1D539, : 2102, 𝔻: 1D53B, 𝔼: 1D53C, 𝔽: 1D53D, 𝔾: 1D53E, : 210D, 𝕀: 1D540, 𝕁: 1D541, 𝕂: 1D542, 𝕃: 1D543, 𝕄: 1D544, : 2115, 𝕆: 1D546, 2119, 211A, 211D 𝕊,: 1D54A 𝕋,: 1D54B 𝕌,: 1D54C 𝕍,: 1D54D 𝕎,: 1D54E 𝕏,: 1D54F 𝕐,: 1D550F ,: 2124। ये आपके प्रोग्राम में प्रत्येक बाइट के रूप में गिना जाता है (यदि आपकी पसंद की भाषा इन वर्णों को पूरी तरह से संभाल सकती है)

इनपुट या तो एक दोहराया ASCII पूंजी होगी, या कोई भी अंडरस्कोर, एक अग्रणी अंडरस्कोर, या एक अनुरेखक अंडरस्कोर (AKA _a_एक इनपुट नहीं होगा) के साथ एक एकल ASCII पत्र होगा। यह कोड-गोल्फ तो सबसे कम बाइट गिनती जीत है!

परीक्षण के मामलों:

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>");
}

मैं उन्हें निकालना भूल गया, सैंडबॉक्स लिंक: codegolf.meta.stackexchange.com/a/13383/55550
Zacharý

क्या केवल अपरकेस डबल दोहराए जाने वाले चर हैं, और केवल अन्य तीन वाले लोअरकेस हैं?
जोनाथन एलन

अपरकेस सामान्य, इटैलिक और बोल्ड हो सकता है। लोअरकेस डबलट्रैक नहीं हो सकता है।
जकार्इ

_____इनपुट नहीं होगा
जकार्इ

ओह ... तो यह हमारे द्वारा परिवर्तित किए जा रहे पात्रों की एक स्ट्रिंग नहीं है, बस एक ही है?
मैजिक ऑक्टोपस Urn

जवाबों:


1

जेली , 73 बाइट्स

यह बताता है कि कोड में BBB अक्षरों का उपयोग नहीं कर पाना काफी महंगा है।

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 बाइट @ Zacharý की बदौलत बच गई

3 बाइट्स @ VаlueInk की बदौलत बच गए

28 बाइट्स ने @Rod को धन्यवाद दिया

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
Zacharý

पोस्ट के नए संपादन को देखें, प्रत्येक 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-बाइट की बचत के लिए अपने TIO लिंक को अपडेट नहीं किया। इसके अलावा, यह रेटिना में बुरी तरह से विफल हो जाता है जो यूटीएफ -16 का उपयोग करता है और इसलिए एक एकल एआई को दो-चार16_t ब्लैकहोल्ड चरित्र में अनुवाद नहीं कर सकता है।
नील

@ नील उफ़। निश्चित लिंक।
मूल्य इंक 20

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)


क्या यह ईएस 6, या ईएस 7 है?
जकार्इ

uRegExp में झंडा ES6 फीचर है। String.prototype.italicsऔर String.prototype.boldसिर्फ कुछ विरासत विशेषताएं हैं।
tsh 27'17

मुझे पता था कि यह ES6 था ... 'वसा तीर।
जकार्इ

उपरोक्त टिप्पणी में "ES6" को "ES6 या ES7" में बदलें।
ज़ाचरी

[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']आपको कुछ बाइट्स बचानी चाहिए।
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.