সরল মার্কডাউন রেন্ডারিং


20

স্ট্যাক এক্সচেঞ্জ নেটওয়ার্কে পোস্টগুলিতে শিরোনাম তৈরির বিভিন্ন উপায় রয়েছে। বিন্যাস হিসেবে সবচেয়ে বেশি যে যে 1 PPCG ব্যবহৃত হতে পারে বলে মনে হয়:

# Level one header
## Level two header
### Level three header

হ্যাশ চিহ্নের পরে স্থানটি নোট করুন। এছাড়াও, নোট করুন যে পিছনে থাকা হ্যাশ চিহ্নগুলি অন্তর্ভুক্ত নয়।

চ্যালেঞ্জ:

ইনপুট হিসাবে একটি (সম্ভবত বহু লাইন) স্ট্রিং নিন এবং নীচের ফর্ম্যাটটিতে স্ট্রিং আউটপুট করুন:

  • যদি শিরোনাম স্তর 1 হয় তবে প্রতিটি অক্ষর 4-বাই-4 বার আউটপুট করুন
  • যদি শিরোনাম স্তর 2 হয় তবে প্রতিটি অক্ষর 3-বাই-3 বার আউটপুট করুন
  • যদি শিরোনাম স্তর 3 হয় তবে প্রতিটি অক্ষর 2-বাই-2 বার আউটপুট করুন
  • যদি একটি লাইন শিরোনাম না হয় তবে এটি যেমন হয় তেমন আউটপুট।

বর্ণনা করা:

--- Level 1 ---
# Hello
--- Output---
HHHHeeeelllllllloooo    
HHHHeeeelllllllloooo
HHHHeeeelllllllloooo
HHHHeeeelllllllloooo

--- Level 2 ---
## A B C def
--- Output ---
AAA   BBB   CCC   dddeeefff
AAA   BBB   CCC   dddeeefff
AAA   BBB   CCC   dddeeefff

--- Level 3 ---
### PPCG!
--- Output---
PPPPCCGG!!
PPPPCCGG!!

যে হিসাবে সহজ!


নিয়মাবলী:

  • আপনাকে অবশ্যই একাধিক লাইনে ইনপুট সমর্থন করবে। ব্যবহার \nনতুন লাইন জন্য ইত্যাদি ঠিক আছে।
    • #একটি একক স্থান অনুসরণ করে কেবল লাইন থাকবে না
  • আউটপুট একাধিক লাইনের উপরে উপস্থাপন করতে হবে। আপনি \nআক্ষরিক নতুন লাইনের পরিবর্তে আউটপুট নাও পেতে পারেন ।
    • ট্রেলিং স্পেস এবং নিউলাইনগুলি ঠিক আছে।

পরীক্ষার কেস:

ইনপুট এবং আউটপুট একটি লাইন দ্বারা পৃথক করা হয় ...

# This is a text
with two different
### headers!
........................................................    
TTTThhhhiiiissss    iiiissss    aaaa    tttteeeexxxxtttt
TTTThhhhiiiissss    iiiissss    aaaa    tttteeeexxxxtttt
TTTThhhhiiiissss    iiiissss    aaaa    tttteeeexxxxtttt
TTTThhhhiiiissss    iiiissss    aaaa    tttteeeexxxxtttt
with two different
hheeaaddeerrss!!
hheeaaddeerrss!!

This input has
## trailing hash marks ##
#and a hash mark without a space after it.
........................................................    
This input has
tttrrraaaiiillliiinnnggg   hhhaaassshhh   mmmaaarrrkkksss   ######
tttrrraaaiiillliiinnnggg   hhhaaassshhh   mmmaaarrrkkksss   ######
tttrrraaaiiillliiinnnggg   hhhaaassshhh   mmmaaarrrkkksss   ######
#and hash marks without a space after it.

# This ## is ### strange
#### ###
........................................................
TTTThhhhiiiissss    ########    iiiissss    ############    ssssttttrrrraaaannnnggggeeee
TTTThhhhiiiissss    ########    iiiissss    ############    ssssttttrrrraaaannnnggggeeee
TTTThhhhiiiissss    ########    iiiissss    ############    ssssttttrrrraaaannnnggggeeee
TTTThhhhiiiissss    ########    iiiissss    ############    ssssttttrrrraaaannnnggggeeee
#### ###

Multiple


### newlines! # 
:)
........................................................    
Multiple


nneewwlliinneess!!  ##
nneewwlliinneess!!  ##
:)

Line with only a hash mark:
#
### ^ Like that!
........................................................    
Line with only a hash mark:
#
^^  LLiikkee  tthhaatt!!
^^  LLiikkee  tthhaatt!!

1: আমি সত্যিই পরীক্ষা করে দেখিনি, তবে আমি মনে করি এটি সত্য।


আমরা কি স্ট্রিং অ্যারে হিসাবে ইনপুট নিতে পারি?
ইয়ান এইচ।

উত্তর:


7

সজ্জিত , 51 50 বাইট

রিকহিচকক - গল্ফড রেজেক্সকে 1 বাইট সংরক্ষণ করা হয়েছে

['^(##?#?) (.+)'[\#'5\-@k CS k*k rep LF#`]3/mrepl]

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

বেনামে ফাংশন যা স্ট্যাক থেকে ইনপুট নেয় এবং স্ট্যাকের উপরে ফেলে দেয়।

ব্যাখ্যা

['^(##?#?) (.+)'[\#'5\-@k CS k*k rep LF#`]3/mrepl]
[                                            mrepl]   perform multiline replacement
 '^(##?#?) (.+)'                                     regex matching headers
                [                        ]3/         on each match:
                 \#'                                   count number of hashes
                    5\-                                5 - (^)
                       @k                              set k to number of repetitions
                          CS                           convert the header to a char string
                             k*                        repeat each char `k` times
                               k rep                   repeat said string `k` times
                                     LF#`              join by linefeeds

3

জাভাস্ক্রিপ্ট (ES6), 111 105 বাইট

@ শেগি ধন্যবাদ 6 বাইট সংরক্ষণ করা

s=>s.replace(/^(##?#?) (.+)/gm,(_,a,b)=>`
${b.replace(/./g,e=>e.repeat(l=5-a.length))}`.repeat(l).trim())

স্ট্রিংয়ের শুরুতে বা নতুন লাইনের আগে 1-3 টি হ্যাশগুলি ম্যাচ করে, তারপরে ম্যাচের পাশাপাশি প্রতিটি ম্যাচটিতে প্রতিটি অক্ষর পুনরাবৃত্তি করে, হ্যাশের দৈর্ঘ্যের উপর ভিত্তি করে।

পরীক্ষার কেস:


2

রেটিনা , 125 104 বাইট

m(`(?<=^# .*).
$0$0$0$0
(?<=^## .*).
$0$0$0
(?<=^### .*).
$0$0
^# 
$%'¶$%'¶$%'¶
^## 
$%'¶$%'¶
^### 
$%'¶

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

নীলকে ধন্যবাদ 21 বাইট সংরক্ষণ করা হয়েছে।


%)তৃতীয় পর্যায়ে ব্যবহার করে 3 বাইট সংরক্ষণ করুন যা আপনাকে %প্রথম দুটি পর্যায়ে এস অপসারণ করতে দেয় । এছাড়াও একজন সাধারণত হেডারে s এর Gপরে রাখে ((যার মধ্যে আপনার এখন দুটি প্রয়োজন হবে)।
নিল

আরও ভাল, আপনি ব্যবহার করতে পারেন m)বা m(যা এখন 9 বাইট সংরক্ষণ করে কারণ আপনি অন্য সমস্ত mগুলি মুছে ফেলতে পারেন ।
নিল

শিরোনামটি অপ্রয়োজনীয় হতে দেখা গেল। এছাড়াও, আমি আরও 12 টি বাইট সংরক্ষণ করেছি: এটি অনলাইনে চেষ্টা করুন!
নিল

ওহ, হ্যাঁ আমি একাধিক পরীক্ষার ক্ষেত্রে শিরোনামটি ব্যবহার করতে অভ্যস্ত ছিলাম।
mbomb007

2

এমএটিএল , 43 42 40 বাইট

রিক হিচকককে ধন্যবাদ 1 বাইট সরানো !

`j[]y'^##?#? 'XXgn:(2M4:QP&mt~+t&Y"0YcDT

এটি প্রতিটি লাইনে একটি ট্রেলিং স্পেস আউট করে (চ্যালেঞ্জের দ্বারা অনুমোদিত), এবং আউটপুট উত্পাদন করার পরে একটি ত্রুটি (ডিফল্টরূপে অনুমোদিত) দিয়ে প্রস্থান করে।

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

ব্যাখ্যা

`            % Do...while loop
  j          %   Input a line as unevaluated string
  []         %   Push empty array
  y          %   Duplicate from below: push input line again
  '^##?#? '  %   Push string for regexp pattern
  XX         %   Regexp. Returns cell array with the matched substrings
  g          %   Get cell array contents: a string, possibly empty
  n          %   Length, say k. This is the title level plus 1, or 0 if no title
  :(         %   Assign the empty array to the first k entries in the input line
             %   This removing those entries from the input
  2M         %   Push k again
  4:QP       %   [1 2 3 4], add 1 , flip: pushes [5 4 3 2]
  &m         %   Push index of k in that array, or 0 if not present. This gives
             %   4 for k=2 (title level 1), 3 for k=3 (tile level 2), 2 for k=2
             %   (title level 1), and 0 for k=0 (no title). The entry 5 in the
             %   array is only used as placeholder to get the desired result.
  t~+        %   Duplicate, negate, add. This transforms 0 into 1
  t&Y"       %   Repeat each character that many times in the two dimensions
  0Yc        %   Postpend a column of char 0 (displayed as space). This is 
             %   needed in case the input line was empty, as MATL doesn't
             %   display empty lines
  D          %   Display now. This is needed because the program will end with
             %   an error, and so implicit display won't apply
  T          %   True. This is used as loop condition, to make the loop infinite
             % End (implicit)

আমি ভাবছিলাম যে ম্যাটল্যাবে এটি করার সর্বোত্তম উপায়টি কী ছিল ... ক্রোনেকার পণ্য অবশ্যই এটি করার সর্বোত্তম উপায় ছিল :) দুর্দান্ত!
স্টিভি গ্রিফিন

@ স্টিভিগ্রিফিন যখন আমি চ্যালেঞ্জটি দেখলাম তখনই আমি ক্রোনেক্কার পণ্যটি সম্পর্কে অবিলম্বে ভেবেছিলাম। তবে আমি সবেমাত্র একটি উপায় খুঁজে পেয়েছি যা ব্যবহার করে 2 বাইট কম খাটো repelem( Y"এমএটিএল) in kronএখনও ম্যাট্লাবের সবচেয়ে সংক্ষিপ্ততম রাস্তা
লুইস মেন্ডো


1

কাঠকয়লা , 46 বাইট

FN«Sι≔⊕⌕E³…⁺×#κι⁴### θF⎇θ✂ι⁻⁵θLι¹ι«G↓→↑⊕θκ→»D⎚

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। চারকোল সত্যই স্ট্রিং অ্যারে ইনপুট করে না, তাই আমাকে ইনপুট হিসাবে অ্যারের দৈর্ঘ্য যুক্ত করতে হয়েছিল। ব্যাখ্যা:

FN«Sι

ইনপুট স্ট্রিংয়ের উপযুক্ত সংখ্যার উপর লুপ করুন।

≔⊕⌕E³…⁺×#κι⁴### θ

ইনপুট নিয়ে এবং 2 # সেকেন্ড অবধি উপস্থাপন করে স্ট্রিংগুলির একটি অ্যারে তৈরি করুন, তারপরে 4 দৈর্ঘ্যে ছাঁটাই করুন ###, তারপরে অ্যারেটিতে অনুসন্ধানের চেষ্টা করুন , তারপরে 1-সূচকে রূপান্তর করুন। এর ফলে এমন একটি সংখ্যার ফলাফল পাওয়া যায় যা অক্ষর জুমের চেয়ে কম।

F⎇θ✂ι⁻⁵θLι¹ι«

চিঠি জুমটি যদি 1 হয় তবে পুরো স্ট্রিংয়ের উপরে লুপ করুন অন্যথায় উপযুক্ত প্রত্যয়টি লুপ করুন (যা কাঠকয়ালে নিষ্কাশন করা অযৌক্তিকভাবে শক্ত)।

G↓→↑⊕θκ→

উপরের ডান কোণে শেষ হওয়া অক্ষরটি পূর্ণ একটি বহুভুজ অঙ্কন করুন এবং তারপরে পরবর্তী অক্ষরের জন্য ডানদিকে প্রস্তুত সরিয়ে নিন।

»D⎚

আউটপুট মুদ্রণ করুন এবং পরবর্তী ইনপুট স্ট্রিংয়ের জন্য প্রস্তুত পুনরায় সেট করুন।


1

এসওজিএল ভি0.12 , 31 28 বাইট

¶Θ{■^##?#? øβlF⁄κ6κ5%:GI*∑∙P

এখানে চেষ্টা করুন! - অতিরিক্ত কোড যুক্ত করা হয়েছে কারণ কোডটি একটি ফাংশন এবং স্ট্যাকের ইনপুট নেয় (এসওজিএল অন্যথায় মাল্টলাইন ইনপুট গ্রহণ করতে পারে না: /) - inputs.value”- স্ট্রিংটি চাপুন , - জেএস হিসাবে মূল্যায়ন করুন, F- সেই ফাংশনটি কল করুন

ব্যাখ্যা:

¶Θ                            split on newlines
  {                           for each item
   ■^##?#?                      push "^##?#? "
           øβ                   replace that as regex with nothing
             l                  get the new strings length
              F⁄                get the original strings length
                κ               and subtract from the original length the new strings length
                 6κ             from 6 subtract that
                   5%           and modulo that by 5 - `6κ5%` together transforms 0;2;3;4 - the match length to 1;4;3;2 - the size
                     :          duplicate that number
                      G         and get the modified string ontop
                       I        rotate it clockwise - e.g. "hello" -> [["h"],["e"],["l"],["l"],["o"]]
                        *       multiply horizontally by one copy of the size numbers - e.g. 2: [["hh"],["ee"],["ll"],["ll"],["oo"]]
                         ∑      join that array together - "hheelllloo"
                          ∙     and multiply vertiaclly by the other copy of the size number: ["hheelllloo","hheelllloo"]
                           P    print, implicitly joining by newlines

0

প্রোটন , 130 বাইট

x=>for l:x.split("\n"){L=l.find(" ")print(L>3or L+len(l.lstrip("\#"))-len(l)?l:"\n".join(["".join(c*(5-L)for c:l[L+1to])]*(5-L)))}

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


আমি মনে করি আপনাকে লাইনগুলির একটি তালিকা গ্রহণ এবং ফিরে পাওয়ার অনুমতি নেই, বিধিগুলি বেশ কড়া: আপনার অবশ্যই একাধিক লাইনের উপর ইনপুট সমর্থন করবেন। , আউটপুট একাধিক লাইনের উপরে উপস্থাপন করতে হবে। আপনি আক্ষরিক নতুন লাইনের পরিবর্তে output n আউটপুট নাও পেতে পারেন।
মিঃ এক্সকডার

@ মিঃ এক্সকোডার হুফ, আমার খারাপ। স্থাপন করা.
হাইপারনিউট্রিনো

দ্রষ্টব্য: ইনপুট থাকলে তা ঠিক আছে তবে \nআউটপুট আক্ষরিক নতুন লাইনের সাথে দেখানো উচিত।
স্টিভি গ্রিফিন

@ mbomb007 ওফস আমি 5-সেখানে রাখতে ভুলে গেছি । দুঃখিত
হাইপারনিউটারিনো

@ mbomb007 স্থির হয়েছে
হাইপারনিউট্রিনো

0

পাইথন 3 , 147 বাইট

def f(x):
	for l in x.split("\n"):L=l.find(" ");print(L>3or L+len(l.lstrip("#"))-len(l)and l or"\n".join(["".join(c*(5-L)for c in l[L+1:])]*(5-L)))

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

-১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ


@ mbomb007 ওফস আমি 5-সেখানে রাখতে ভুলে গেছি । দুঃখিত
হাইপারনিউটারিনো




0

জে , 55 বাইট

([:{:@,'^##?#? 'rxmatch])((1 1 4 3 2{~[)([:|:[$"0#)}.)]

জে রেজেক্সের সাহায্যে কীভাবে টিআইও-র কাজ করা যায় তা আমি জানি না, তাই আমি কোনও কাজের লিঙ্ক সরবরাহ করতে পারি না।

এটি কিভাবে জে ইন্টারপ্রেটারে পরীক্ষা করতে হবে (জে 804 দিয়ে পরীক্ষা করা)

   f=.([:{:@,'^##?#? 'rxmatch])((1 1 4 3 2{~[)([:|:[$"0#)}.)]
   txt=.'# Hello'; '## A B C def'; '### PPCG!'; '#and a hash mark without a space after it.'; '##### ###'
   ; f each txt

HHHHeeeelllllllloooo                      
HHHHeeeelllllllloooo                      
HHHHeeeelllllllloooo                      
HHHHeeeelllllllloooo                      
AAA   BBB   CCC   dddeeefff               
AAA   BBB   CCC   dddeeefff               
AAA   BBB   CCC   dddeeefff               
PPPPCCGG!!                                
PPPPCCGG!!                                
#and a hash mark without a space after it.
##### ###

আমি বাক্সযুক্ত স্ট্রিংগুলির তালিকার মাধ্যমে একটি বহুরেখা স্ট্রিংটি অনুকরণ করি।



0

জাভাস্ক্রিপ্ট, 112 বাইট

x=>x.replace(/^(##?#?) (.*)/mg,(_,n,w)=>(t=>Array(t).fill(w.replace(/./g,c=>c.repeat(t))).join`
`)(5-n.length))


আমি মনে করি না এটি এর জন্য কাজ করে #### ##
রিক হিচকক

পুনঃটুইট
TSH

0

সি # 4.5 158 বাইট

যেখানে আমি স্ট্রিং আকারে ইনপুট।

int l,m,t,s=0;while(i[s]=='#'){s++;};t=s>0?4-s+1:1;for(l=0;l<t;l++){foreach(char c in i.Skip(s>0?s+1:0))for(m=0;m<t;m++)Console.Write(c);Console.WriteLine();}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.