দ্বিখণ্ডিত পাঠ্য


26

ASCII অক্ষরের একটি স্ট্রিং দেওয়া (আপার এবং / বা লোয়ার কেস), প্রতিটি অক্ষরে বিভাজনকারী স্ট্রিংকে সুপারস্প্রিপ্ট এবং সাবস্ক্রিপ্টগুলিতে প্রদর্শন করতে প্রয়োজনীয় কাঁচা ম্যাথজ্যাক্স আউটপুট দিন। উদাহরণস্বরূপ, ইনপুটগুলি catএবং horseফলাফলগুলি ম্যাথজ্যাক্সকে যথাক্রমে নীচে হিসাবে রেন্ডার করে ফলাফল হিসাবে:

বিড়াল বিভক্ত করার চিত্র ঘোড়া দ্বিখণ্ডিত করার চিত্র

মনে রাখবেন যে কেবল একটি ইনপুট নেওয়া দরকার - এই দুটি কেবল উল্লম্ব স্থান বাঁচাতে পাশাপাশি পাশাপাশি তালিকাভুক্ত করা হয়।

মার্কআপ অর্থ

  • _ একটি সাবস্ক্রিপ্ট নির্দেশ করে।
  • ^ একটি সুপারস্ক্রিপ্ট নির্দেশ করে।
  • সুপারস্রিপ্ট করা বা সাবস্ক্রিপড সাবস্ট্রিংগুলির আশেপাশে ব্রেসগুলি আবশ্যক যা সেগুলি একই স্তরে থাকা থেকে রোধ করার জন্য আরও সুপারস্ক্রিপ্টিং বা সাবস্ক্রিপ্টিং রয়েছে।

পরীক্ষার মামলা

পরীক্ষার কেসগুলি ফরম্যাটে রয়েছে input : output। প্রথম পরীক্ষার ক্ষেত্রে খালি স্ট্রিংটি ইনপুট হিসাবে দেখায় ফলে আউটপুট হিসাবে খালি স্ট্রিং হওয়া উচিত।

"" : ""
"a" : "a"
"me" : "m_e^e"
"cat" : "c_{a_t^t}^{a_t^t}"
"frog" : "f_{r_{o_g^g}^{o_g^g}}^{r_{o_g^g}^{o_g^g}}"
"horse" : "h_{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}^{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}"
"bifurcate" : "b_{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}^{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}"

আপনি দেখতে পাবেন যে কীভাবে mathurl.com এ আউটপুট আটকানো হয় ।

অপ্রয়োজনীয় ধনুর্বন্ধনী

ম্যাথজ্যাক্স আনন্দের সাথে মার্কআপ রেন্ডার করবে যাতে রিলান্ড্যান্ট ব্রেস রয়েছে। উদাহরণস্বরূপ, নিম্নলিখিত সব যখন অনুষ্ঠিত অভিন্ন দেখতে হবে: a, {a}, {}{a}, {{{{a}}}}

যাইহোক, এই চ্যালেঞ্জের জন্য বৈধ আউটপুটে কোনও অপ্রয়োজনীয় বন্ধনী নেই। বিশেষত দ্রষ্টব্য যে আউটপুটে একক অক্ষরগুলি বন্ধনী দ্বারা ঘিরে নেই।

ক্রম

সাবস্ক্রিপ্ট এবং সুপারস্ক্রিপ্টের ক্রম গুরুত্বহীন। নিম্নলিখিতটি সমতুল্য এবং যখন রেন্ডার করা যায় তখন এটি পৃথক হয়ে উঠবে (এবং সমস্ত সমানভাবে বৈধ আউটপুট):

c_{a_t^t}^{a_t^t}
c_{a^t_t}^{a_t^t}
c_{a_t^t}^{a^t_t}
c_{a^t_t}^{a^t_t}
c^{a_t^t}_{a_t^t}
c^{a^t_t}_{a_t^t}
c^{a_t^t}_{a^t_t}
c^{a^t_t}_{a^t_t}

স্কোরিং

প্রতিটি ভাষার জন্য, বিজয়ী হ'ল বাইটগুলির মধ্যে সংক্ষিপ্ততম কোড।

অনেক বেশি বিজ্ঞপ্তি? </sub>আনসাবস্ক্রিপ্ট টাইপ করুন


অনেক বেশি বিজ্ঞপ্তি? </sub>আনসাবস্ক্রিপ্ট টাইপ করুন হু কে বলেছে যে আমি আনসস্ক্রিপ্ট বা কিছু চাই? পুরো টেস্টটা ঠিক পড়ে ফেললাম কিনা তা দেখার পরীক্ষা ছিল?
এরিক আউটগল্ফার

12
@ এরিকথ আউটগল্ফার এটি কোন একটি খুব খারাপ রসিকতা ছিল না।
ট্রাইকোপলাক্স

আমরা কি পরিবর্তে সংকলিত পিডিএফ ফলাফল আউটপুট করতে পারি? আমি একটি খাঁটি লেটেক্স উত্তর লিখতে চাই।
গম উইজার্ড

@ ওয়েট উইজার্ড যা আলাদা চ্যালেঞ্জ বলে মনে হচ্ছে। এখানে উত্তর হিসাবে এটি বৈধ হবে না।
ট্রাইকোপলাক্স

উত্তর:


10

পাইথন, 95 90 86 92 82 বাইট

10 বাইট সংরক্ষিত হয়েছে @ কননার জোনস্টনকে ধন্যবাদ

f=lambda s:s and s[0]+(s[1:]and'_{0}^{0}'.format(s[2:]and'{'+f(s[1:])+'}'or s[1]))

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


4
বাহ, এটি কিছু উন্মাদ পুনরাবৃত্তি।
মিঃ এক্সকোডার

1
৮১ বাইটের জন্য কিছু স্ট্রিং ফর্ম্যাটিং (কীভাবে মন্তব্যগুলিতে টিআইও লিঙ্ক করবেন তা নিশ্চিত নন): এফ = ল্যাম্বদা এস: এস এবং এস [0] + '_ {0} ^ {0}'। ফর্ম্যাট (গুলি [2:] এবং ' {'+ f (s [1:]) +'} 'বা s [1:] এবং এস [1])
কনার জনস্টন

1
@ কননার জনস্টন ধন্যবাদ! আপনি এর সাথে টিও লিঙ্কগুলি রাখতে পারেন [text](link), তবে এটি সত্যিই ক্ষতিগ্রস্থ হচ্ছে;)
উরিল

1
79 বাইট ; এবং আমি ধরে নিই যে আপনি বেনামে ফাংশন ট্রিকটি ব্যবহার করতে চান না, তবে 2 বাইট সংরক্ষণ করতে পারবেন।
জোনাথন ফ্রেচ

7

গণিত, 72 84 77 76 বাইট

a_±b__:={"{",a,"_",±b,"^",±b,"}"};±(a_:""):={"",a,""};""<>Most@Rest@±##&@@#&

সিপি-1252 (উইন্ডোজ) এনকোডিং ব্যবহার করে। ইনপুট হিসাবে অক্ষরের একটি তালিকা নেয়।

ব্যাখ্যা

a_±b__:=

±2 বা ততোধিক আর্গুমেন্ট সহ ফাংশনটি সংজ্ঞায়িত করুন । প্রথম যুক্তি aএবং দ্বিতীয় এবং লেবেল লেবেল করুন b

{"{",a,"_",±b,"^",±b,"}"}

এর Listসমতুল্য তৈরি করুন "{a_±b^±b}"( ±bপুনরায় মূল্যায়ন করা হবে, পুনরাবৃত্তভাবে)।

±(a_:""):= ...

±1 বা 0 টি আর্গুমেন্ট সহ ফাংশনটি সংজ্ঞায়িত করুন । প্রথম যুক্তিটি aউপস্থিত থাকলে এটি লেবেল করুন এবং অন্যথায় নির্ধারণ ""করুন a

{"",a,""}

এর Listসমতুল্য তৈরি করুন "a", খালি Stringগুলি দিয়ে প্যাড করুন ।

""<>Most@Rest@±##&@@#&

একটি খাঁটি ফাংশন যা ইনপুটটিতে প্রযোজ্য ±, প্রথম এবং শেষ উপাদানটি ড্রপ করে এবং রূপান্তর Listকরে String


7

সিজেএম (35 বাইট)

MqW%{"^{ }_{ }"{AW$,)3e<#<},S/@*+}/

এটি একটি সম্পূর্ণ প্রোগ্রাম। অনলাইন ডেমো

3 বাইট ব্যাবহারকারীর একটি বাগের চারপাশে কাজ করে (নীচে দেখুন)।

ব্যবচ্ছেদ

M            e# Start building from the empty string
qW%{         e# For each character in the reversed input
  "^{ }_{ }" e#   Take a template
  {          e#   If the accumulator is of length n, remove all characters whose
    A        e#   codepoints are greater than pow(10,
    W$,)3e<  e#                                   min(n+1, 3))
    #<       e#   When the accumulator is the empty string, that's all of them.
  },         e#   When the accumulator is one character, that's {}
             e#   When the accumulator is any longer, it's none of them.
  S/@*       e#   Substitute the accumulator for the spaces.
  +          e#   Append to the new character.
}/

মনে রাখবেন যে min(n+1, 3)দোভাষীর মধ্যে একটি বাগের চারপাশে কাজ করা: 10 এর শক্তিতে কিছু প্যাটার্ন থাকতে হবে যা এর '}চেয়ে ছোট, তবে এটি সুস্পষ্ট নয়


খালি স্ট্রিংয়ের জন্য কাজ করার জন্য উপস্থিত হয় না (প্রথম পরীক্ষার কেস)।
ট্রাইকোপলাক্স

1
@ ট্রাইকোপ্লেক্স, এটি গল্ফস্ক্রিপ্ট এবং সিজেমের মধ্যে সূক্ষ্ম পার্থক্যের কারণে যা মাঝে মাঝে আমাকে খুঁজে বের করে। কোডটি আগেরটির চেয়ে অনেক বেশি চালাক করে এখন কেবল একটি বাইটের জন্য নির্ধারণ করা হয়েছে।
পিটার টেলর

এখন পুরোপুরি কাজ করে। দুর্দান্ত ব্যাখ্যা।
ট্রাইকোপলাক্স

@ পিটারটেলর (কমপক্ষে অনলাইন ডেমোতে) এটি চারটির বেশি অক্ষরের শব্দের জন্য কাজ করে না।
মিষ্টান্ন

2
@ ডেজার্ট, এটি খুব অদ্ভুত এবং স্পষ্টতই দোভাষীর বিরুদ্ধে একটি বাগ রিপোর্ট প্রাপ্য। আমি 3 বাইট ব্যয়ে একটি workaround যোগ করেছি।
পিটার টেলর

7

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

f=([c,...s])=>s+s?c+`_${p=s[1]?`{${f(s)}}`:s}^`+p:c||''

Θ (লেন (গুলি)) জটিলতা! @ পিটারটেলারের মতে এটি আসলে Θ (2 ^ লেন (গুলি)), যা এখনও সবচেয়ে সেরা ...


খালি স্ট্রিংয়ের জন্য কাজ করার জন্য উপস্থিত হয় না (প্রথম পরীক্ষার কেস)।
ট্রাইকোপলাক্স

@ ট্রাইকপ্লেক্স এখনই ঠিক করা উচিত।
ইটিএইচ প্রডাকশনগুলি

এখন পুরোপুরি কাজ করে।
ট্রাইকোপলাক্স

1
আপনার ও (এন) এ এন কী? আমি অনুমান করি এটি আউটপুটটির দৈর্ঘ্য, তবে আপনি যদি না বলে থাকেন যে এটি ইনপুটটির দৈর্ঘ্য হিসাবে ডিফল্টরূপে ব্যাখ্যা করা হয় না, এবং যেহেতু আউটপুটটির দৈর্ঘ্য ইনপুটটির দৈর্ঘ্যে তাত্পর্যপূর্ণ হয় বহুপক্ষীয় সময়ে এটি কার্যকর করা অসম্ভব।
পিটার টেলর

@ পিটারটেলর আমি বুঝতে পেরেছিলাম যেহেতু অ্যালগরিদম কেবল লেন (ইনপুট) পদক্ষেপ নেয়, জটিলতা লেন (ইনপুট) হয় ... যদি এটি সঠিক না হয় তবে আমি কেবল পোস্ট থেকে সরিয়ে দেব যেহেতু আমি জানি না এটিকে গণনা করা, যদি না আপনি না জানেন সঠিক জটিলতাটি কী।
ইটিএইচ প্রডাকশনগুলি

6

হাস্কেল , 71 বাইট

f[x,y]=x:'_':y:'^':y:[]
f(x:y@(_:_))=x:"_{"++f y++"}^{"++f y++"}"
f x=x

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

আমাদের যদি কেবল বৈধ কোড আউটপুট করতে হয় তবে নিম্নলিখিতটি 44 বাইটের জন্য কাজ করবে:

f[a]=[a]
f(a:b)=a:"_{"++f b++"}^{"++f b++"}"

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


2
44 বাইট সংস্করণের উপর ভিত্তি করে -5 বাইট: এটি অনলাইনে চেষ্টা করুন!
jferard

@ জেফেরার্ড চমৎকার! আমি এটি পোস্টে যুক্ত করব।
গম উইজার্ড




5

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

±K;{╔+;lH?"{ŗ}”}1 ^Ο+

এখানে চেষ্টা করুন!

ব্যাখ্যা:

±                      reverse the string
 K                     take off the first letter - will slowly convert to the output
  ;                    get the rest of the string ontop
   {                   iterate over the rest of the characters
    ╔+                   append "_" to it
      ;                  get the output string ontop
       lH?     }         if it's length - 1 [isn't 0]
          "{ŗ}”            push the string "{ŗ}" where ŗ is replaced by the output string
                1 ^Ο     wrap "^" around with the output string
                    +    prepend to it the current character + "_"

5

পার্ল 5 , 54 + 1 (-পি) = 55 বাইট

s/\{(.)\}/$1/g while s/([a-z])([a-z]+)/$1_{$2}^{$2}/ig

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

কিভাবে?

কিছুক্ষণের শর্তে প্রতিস্থাপন প্রথম অক্ষরে একাধিক অক্ষরের উপস্থিতি ভেঙে দেয়, তারপরে বাকী ধনুর্বন্ধনীগুলির পরে এটি থাকে:

abc -> a_{bc}^{bc}

আর লুপটি কোনও মাল্টি-লেটার সিকোয়েন্স না থাকা অবধি বিকল্পটি কার্যকর করে। লুপের ভিতরে প্রতিস্থাপনটি একক বর্ণের কাছাকাছি থেকে ব্রেসগুলি সরিয়ে দেয়।


ভাল লাগল, আমি ভাবছিলাম যে
রেজেক্সের

4

রুবি , 76 73 72 68 67 57 বাইট

টামেলম্যানকে ধন্যবাদ 4 লম্বা সাশ্রয়ী ল্যাম্বদা ব্যবহার

f=->s{(r=s[1..-1])[0]?s[0]+?_+[r[1]??{+f[r]+?}:r]*2*?^:s}

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

Ungolfed:

def f(s)
  r = s[1..-1]
  if r.size > 0
    if r.size > 1
      x = "{" + f(r) + "}"
    else
      x = r
    end
    return s[0] + "_" + [x, x].join("^")
  else
    return s
  end
end

কোনও ফাংশনের পরিবর্তে, একটি বেনামে ল্যাম্বডা (উদাঃ ->s{...}) ব্যবহার করুন, যা 7 বাইট সংরক্ষণ করে। তারপর, আপনি প্রতিস্থাপন 2 আরো বাইট সংরক্ষণ করতে পারবেন "#{s[0]}_সঙ্গে s[0]+"_। আপনি '{}'যখন প্রথমবার ব্যবহার করেন তখন কোনও ভেরিয়েবলের ইনলাইন অ্যাসাইনমেন্ট করে আপনি আরও একটি বাইট সংরক্ষণ করতে পারেন ।
টুটম্যান

@ টুটম্যান এটি পুনরাবৃত্ত ( t=f s[1..-1]), তাই আমি মনে করি না যে কোনও বেনামে কাজ করবে এবং আমি ইতিমধ্যে স্ট্রিংয়ের শুরুটিকে পুনরায় সাজিয়েছি , তবে আমি ইনলাইন অ্যাসাইনমেন্টটি ব্যবহার করতে পারি।
Nnnes

1
ডি আহা! ওফস - আমি বিশ্বাস করতে পারি না যে আমি এটি মিস করেছি। যাইহোক, এটি একটি (নামযুক্ত) ল্যাম্বদা ব্যবহার করা আরও ছোট: f=->s{...}চারটি বাইট সংরক্ষণ করে, এমনকি []পুনরাবৃত্ত কল করার সময় আপনার যে অতিরিক্ত অতিরিক্ত প্রয়োজন তা হিসাব করে ।
টুটম্যান

@ টুটম্যান ওহ হ্যাঁ, এটি পরিবর্তন করেছেন। এখন যদি আমি সেই .trজগাখিচুড়ি থেকে আরও ভাল কিছু করতে পারি ...
Nnesnes



1

পিএইচপি, 121 বাইট

function b($s){return $s[0].($s[1]?'_'.($s[2]?'{'.($b=b(substr($s,1))).'}^{'.$b.'}':"$s[1]^$s[1]"):'');}echo b($argv[1]);

ফাংশনটি নিজেই 104 বাইট এবং একটি পিএইচপি বিজ্ঞপ্তি দেখায়।


1

রেটিনা , 43 বাইট

(.)(.)$
$1¶$2
+`(.)¶(.*)
¶{$1_$2^$2}
¶{|}$

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

(.)(.)$
$1¶$2

শেষ চরিত্রটি কেটে বলটি ঘূর্ণায়মান হয়ে নিন। (তবে এটি যদি একমাত্র চরিত্র হয় তবে তারা এটিকে একা রেখে দেয়))

+`(.)¶(.*)
¶{$1_$2^$2}

¶ চরিত্রটি একবারে একবারে এক ধাপে সরান, প্রতিবার আগের ফলাফলটি গ্রহণ করে এবং পরবর্তী অক্ষরের সাবস্ক্রিপ্ট এবং সুপারস্ক্রিপ্ট তৈরি করে।

¶{|}$

এখন অপ্রয়োজনীয় the এবং বাইরের Remove} গুলি সরান।



0

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

s=>[...s].reduceRight((m,c)=>`${c}_{${m}}^{${m}}`).replace(/{(.)}/g,'$1')

ব্যাখ্যা

s=>                                  // take the input string
    [...s]                           // split the string into an array
    .reduceRight(                    // reduce the array in reverse order
        (m,c)=>`${c}_{${m}}^{${m}}`  // storing the result of each iteration in the memo m
    )                                // and returning m at the end
    .replace(/{(.)}/g,'$1')          // replace redundant {}

কারণ এখানে কোনও নির্দিষ্ট প্রাথমিক মান নেই m, প্রাথমিক মান হিসাবে reduceRightশেষ উপাদানটি নেয় এবং sসূচীতে পুনরাবৃত্তি শুরু হয় s.length-2


s=>[...s].reduceRight((m,c)=>`{${c}_${m}^${m}}`).slice(1,-1)শুধুমাত্র 60 বাইট।
নীল

খালি স্ট্রিংয়ের জন্য কাজ করার জন্য উপস্থিত হয় না (প্রথম পরীক্ষার কেস)।
ট্রাইকোপলাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.