স্ট্যাক এক্সচেঞ্জে কোড স্নিপেটগুলি ব্যাকটিকিফাই করুন


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: `, n2, এবং ` `` ``` ````` ``````, n4. হয়)

    • পদক্ষেপ 2: nব্যাকটিক্সে স্ট্রিং মোড়ানো । যদি স্ট্রিংটি ব্যাকটিক দিয়ে শুরু হয় বা শেষ হয়, আপনার অবশ্যই স্পেসগুলি দিয়ে মোড়ানো আবশ্যক। (উদাহরণস্বরূপ, potatoহয়ে `potato`, this is a backtick: `হয়ে `` this is a backtick: ` ``, এবং ` `` ``` ````` ``````হয়ে ```` ` `` ``` ````` `````` ````

  • মন্তব্য (মিনি-মার্কডাউন)

    • মোড়ানো মধ্যে `এবং সমস্ত অব্যাহতি `দিয়ে এর \`। (উদাহরণস্বরূপ, potatoহয়ে `potato`, this is a backtick: `হয়ে this is a backtick: \`, এবং ` `` ``` ````` ``````হয়ে \` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`

এই ; বাইট গণনা মধ্যে সংক্ষিপ্ত উত্তর।


স্থান সম্পর্কে কি? `code কোড-ফর্ম্যাটিংটি পায় না ...
জাস্টিন

@ কুইনকুনস হুম ... কীভাবে আপনার কোডগুলিতে ফাঁকা স্থান ফর্ম্যাট করার কথা?
ডুরকনব

আমার কোন ধারণা নাই. এই পোস্টটি যেখানে আমি শিখেছি কিভাবে ব্যাকটিক্স এবং এই জাতীয় বিন্যাস করতে হয়।
জাস্টিন

2
মন্তব্য ফর্মটিও কাজ করে না \; একটি বিন্যাস \করতে, আপনার করা প্রয়োজন ``\``। এছাড়াও, \একই সমস্যার মধ্যে রান দিয়ে শেষ হওয়া যে কোনও কিছুই : 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.