Stack Exchange पर Backtickify कोड स्निपेट


9

आपका लक्ष्य किसी भी मनमाने पाठ को इनपुट करना है, जैसे:

This is some text

और आउटपुट जो पाठ को पदों के लिए कोड के रूप में स्वरूपित करता है (एसई-फ्लेवर्ड मार्कडाउन) और स्टैक एक्सचेंज पर टिप्पणियां (मिनी-मार्कडाउन), जैसे:

`This is some text`
`This is some text`

हालांकि, यह मुश्किल हो जाता है। इनपुट पर विचार करें:

Perl has a variable called $`

आउटपुट होना चाहिए

`` Perl has a variable called $` ``
`Perl has a varaible called $\``

प्रारूपण के पूर्ण नियम हैं:

  • पूर्ण पोस्ट (पूर्ण एसई मार्कडाउन)

    • चरण 1: कम से कम संख्या की गणना करें जिसके लिए स्ट्रिंग में लगातार कई बैकटिक्स नहीं हैं। इसको बुलाते हैं n। (उदाहरण के लिए, स्ट्रिंग के लिए potato, n1 है, के लिए this is a backtick: `, nके लिए 2 है, और ` `` ``` ````` ``````, n4. है)

    • चरण 2: स्ट्रिंग को nबैकटिक्स में लपेटें । यदि स्ट्रिंग एक बैकटिक के साथ शुरू या समाप्त होती है, तो आपको रिक्त स्थान के साथ भी लपेटना चाहिए। (उदाहरण के लिए, potatoहो जाता है `potato`, this is a backtick: `हो जाता है `` this is a backtick: ` ``, और ` `` ``` ````` ``````हो जाता है ```` ` `` ``` ````` `````` ````

  • टिप्पणियाँ (मिनी-मार्कडाउन)

    • में लपेटें `और सभी `के साथ बच \`। (उदाहरण के लिए, potatoहो जाता है `potato`, this is a backtick: `हो जाता है this is a backtick: \`, और ` `` ``` ````` ``````हो जाता है \` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`

ये है ; बाइट गिनती जीत में सबसे छोटा जवाब।


अंतरिक्ष के बारे में क्या? `` कोड-स्वरूपण नहीं मिलता ...
जस्टिन

@Quincunx हम्म ... आप वैसे भी कोड में रिक्त स्थान कैसे प्रारूपित करने वाले हैं?
दरवाज़े

मुझे पता नहीं है। यह पोस्ट वह है जहाँ मैंने सीखा कि कैसे backticks को फॉर्मेट किया जाता है और इस तरह।
जस्टिन

2
टिप्पणी फ़ॉर्म भी काम नहीं करता है \; स्वरूपित करने के लिए \, आपको करने की आवश्यकता है ``\``। इसके अलावा, एक \ही समस्या में एक रन के साथ समाप्त होने वाला कुछ भी : asdf\`asdf`
जस्टिन

जवाबों:


4

एपीएल (90)

(हां, एपीएल चारसेट एक बाइट में फिट होता है, यहां आईबीएम का कोडपेज 907 है ।)

{⎕ML←3⋄(,/m,m,⍨{⍵=m:'\`'⋄⍵}¨⍵),⊂(⌽g),⍵,g←(''↑⍨∨/t[1,⍴t]),m/⍨0⍳⍨z∊⍨⍳⌈/0,z←,⊃⍴¨⍵⊂⍨t←⍵=m←'`'}

यह एक फ़ंक्शन है जो एक स्ट्रिंग लेता है, और दो स्ट्रिंग्स की एक सरणी देता है, जहां पहला स्ट्रिंग टिप्पणी प्रतिनिधित्व है और दूसरा स्ट्रिंग पूर्ण पोस्ट प्रतिनिधित्व है।

टेस्ट:

      backtickify←{⎕ML←3⋄(,/m,m,⍨{⍵=m:'\`'⋄⍵}¨⍵),⊂(⌽g),⍵,g←(''↑⍨∨/t[1,⍴t]),m/⍨0⍳⍨z∊⍨⍳⌈/0,z←,⊃⍴¨⍵⊂⍨t←⍵=m←'`'}
      ↑backtickify 'potato'
`potato`
`potato`

      ↑backtickify 'this is a backtick: `'
`this is a backtick: \``   
`` this is a backtick: ` ``

      ↑backtickify '` `` ``` ````` ``````'
`\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\``
```` ` `` ``` ````` `````` ````  

      ⍝ testcase for not wrapping with spaces
      ↑backtickify 'no`spaces``at````the`edges'
`no\`spaces\`\`at\`\`\`\`the\`edges`
```no`spaces``at````the`edges``` 

नोट: मैंने फ़ंक्शन को पठनीयता के लिए एक नाम दिया है, इसका उपयोग करने के लिए कड़ाई से आवश्यक नहीं है (आप अनाम फ़ंक्शन के बगल में तर्क को डाल सकते हैं) इसलिए मैंने इसे नहीं गिना।


2

रूबी, 119

s=gets.chop
c=1
c+=1while s=~/([^`]|\A)#{?`*c}([^`]|\z)/
puts ?`+s.gsub('`','\\\\`')+'`
'+?`*c+(s=~/$`|`^/?" #{s} ":s)+?`*c

Ungolfed:

def backtickify str, comment = false
  return "`#{str.gsub '`', '\\\\`'}`" if comment
  c = 1
  c += 1 while str =~ /([^`]|\A)#{?` * c}([^`]|\z)/
  str = ' ' + str + ' ' if str[0] == ?` || str[-1] == ?`
  return ?` * c + str + ?` * c
end
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.