এক্সটেনশনগুলিকে ASCII আর্টে রূপান্তর করুন


28

কার্য

আপনার কাজটি এইভাবে স্ট্রিংগুলিকে রূপান্তর করা:

abc^d+ef^g + hijk^l - M^NO^P (Ag^+)

এর মতো স্ট্রিংগুলিতে:

   d   g       l    N P    +
abc +ef  + hijk  - M O  (Ag )

যা abc d + ef g + hijk l - M N O P (Ag + ) এর সান্নিধ্য

কথায় কথায়, ক্যারেটের ঠিক পাশের অক্ষরগুলি উপরের লাইনের দিকে বাড়ান, একটি ক্যারেটের জন্য একটি অক্ষর।

চশমা

  • আউটপুটটিতে অতিরিক্ত ট্রেলিং হোয়াইটস্পেসগুলি অনুমোদিত।
  • m^n^oইনপুট হিসাবে কোনও শৃঙ্খলযুক্ত ক্যারেট দেওয়া হবে না।
  • কোনও ক্যারেট তত্ক্ষণাত কোনও স্থান বা অন্য কেরেটের দ্বারা অনুসরণ করা হবে না।
  • কোনও ক্যারেট কোনও স্থানের সাথে সাথে তত্ক্ষণাত্ চলবে না।
  • সমস্ত ক্যারেট কমপক্ষে একটি অক্ষর দ্বারা অনুসরণ করা হবে এবং তারপরে কমপক্ষে একটি অক্ষর অনুসরণ করা হবে।
  • ইনপুট স্ট্রিংয়ে কেবল প্রিন্টযোগ্য এএসসিআইআই অক্ষর থাকবে (U + 0020 - U + 007E)
  • আউটপুট দুটি লাইন পরিবর্তে, আপনি দুটি স্ট্রিং এর অ্যারে আউটপুট করার অনুমতি দেওয়া হয়।

যারা রেজেক্স কথা বলছেন তাদের কাছে: ইনপুট স্ট্রিংটি এই রেজেক্সের সাথে মিলবে:

/^(?!.*(\^.\^|\^\^|\^ | \^))(?!\^)[ -~]*(?<!\^)$/

লিডারবোর্ড


2
@ টিমিমিডি "ইনপুট স্ট্রিংয়ে কেবল প্রিন্টযোগ্য এএসসিআইআই অক্ষর থাকবে (U + 0020 - U + 007E)"
লিকি নুন

3
বাধা দিচ্ছে কেন? আমি এমন কিছু চাই যা H2O পরিচালনা করে!
নীল

1
@ নিল তখন আপনার নিজের চ্যালেঞ্জ করুন, এবং আমি এই চ্যালেঞ্জটিকে তার সদৃশ হিসাবে বন্ধ করতে পারি। :)
ফুটো নুন

1
আপনার উদাহরণের ভিত্তিতে আমি বলব যে তারা সুপারিন্ডিস , অগত্যা এক্সটেন্ডার নয়
লুইস মেন্ডো

4
যারা রেগেক্স কথা বলছেন তারা একটি অত্যন্ত নিয়মিত দেশের, যেখানে অভিব্যক্তিটি দৃ .়ভাবে সীমাবদ্ধ from মৃত্যুর প্রধান কারণ হ'ল বিপর্যয়কর ব্যাকট্র্যাকিং।
ডেভিড কনরাড

উত্তর:


19

ভি , 15 14 বাইট

ÄÒ +òf^xxé kPj

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

মোটামুটি সোজা সমাধান। নিখুঁত V ব্যবহার চ্যালেঞ্জ!

ব্যাখ্যা:

Ä                "Duplicate this current line
 Ò               "Replace this line with spaces
   +             "Move to the beginning of the next line
    ò         ò  "Recursively (The second ò is implicit):
     f^          "  Find a caret
       xx        "  Delete two characters. The second will be saved into the main register
         é       "  Insert a space
           k     "  Move up
            P    "  Paste from the main register
             j   "  Move down

সুবিধাজনকভাবে, পুনরাবৃত্তি কীভাবে কাজ করে তার উপর ভিত্তি করে, এটি প্রতিটি একক কেরেটের জন্য একবার চলবে।


2
ভিএম এই চ্যালেঞ্জের জন্য নিখুঁত ভাষা। +1
ডাউনগোট

18

চেডারপনির, 77 72 67 বাইট

l->l.chars.vfuse.replace("^\n"," ").lines.map(j->"%-2s"%j).turn(3)

রেইজেক্স না!

আমি এই উত্তরটি পছন্দ করি কারণ এটি চেদার দক্ষতার এক দুর্দান্ত প্রদর্শন। মূলত কনর দ্বারা যুক্ত প্রতিস্থাপন ফাংশন ধন্যবাদ। পিআর টু পিআর কখনই তৈরি করা হয় নি তাই প্রতিস্থাপনের কাজটি কেবল এই শাখায় বিদ্যমান (আপডেট: আমি পিআর তৈরি করেছি এবং এটি সর্বশেষতম বিটা শাখায় রয়েছে যা দিয়ে আপনি ইনস্টল করতে পারেন npm install -g cheddar-lang)

আমি এটি গল্ফ করার একটি উপায় খুঁজে পেয়েছি তবে দুর্ভাগ্যক্রমে যখন আইটেমের দৈর্ঘ্য একরকম না হয় তখন দুর্ভাগ্যক্রমে এই ঘটনার উপর একটি তদারকি ফলাফল ঘটে:

["   denifednud   denifednug       denifednul    denifednuN denifednuP    denifednu+ ", "abcdenifednu +efdenifednu  + hijkdenifednu  - Mdenifednu Odenifednu  (Agdenifednu )"]

আমি রেইগেক্স ব্যবহার করে প্রচুর বাইট সংরক্ষণ করতে পারতাম, এবং আসলে আমি কেবল চেড্ডারের জন্য রেজিেক্স করেছি ... কেবল সমস্যাটি হ'ল কোনও রেগেক্স ফাংশন নেই: /

ব্যাখ্যা

l->                    // Function take input as `l`
   l.chars             // Get array of chars in input
   .vfuse              // Join with newlines
   .replace("^\n"," ") // Replace `^\n` with a space globally
   .lines              // Get the lines (see below for more details on what this returns)
   .map(j->            // Loop through each "line" `j` is arg
       "%-2s"          // C-like printf format.
                       // think of as: padRight(j, " ", 2)
                       // see below for more details
        % j            // Pass j as the string to insert
   ).turn(3)           // Turn the string 270 degrees (see below)
   .vfuse              // Vertically fuse to get result (this is not needed as we can output an array of the lines)

আরও ভাল বোঝার জন্য। এটিই এর জন্য .linesফিরে আসে1^2

["1", " 2"]

.turnঘোরান এই সঙ্গে:

1
 2

মধ্যে:

 2
1

আরেকটি উদাহরণ যা এটি আরও স্পষ্ট করবে:

1
 2
2
 2

হয়ে:

 2 2
1 2

ফরম্যাট কেন?

কি %-2sকরছে তা বেশ সহজ। %নির্দিষ্ট করে যে আমরা একটি "ফর্ম্যাট" শুরু করছি, বা একটি ভেরিয়েবল এই স্ট্রিং এ এই সময়ে প্রবেশ করা হবে। -মানে স্ট্রিংটি ডান-প্যাড করা এবং 2এটি সর্বোচ্চ দৈর্ঘ্য। ডিফল্টরূপে এটি স্পেস সহ প্যাড করে। sকেবল এটি একটি স্ট্রিং নির্দিষ্ট করে। এটি কী করে তা দেখতে:

"%-2s" % "a"  == "a "
"%-2s" % " a" == " a"

2
: ডিআই সর্বদা চেডারকে উড়িয়ে দেয়।
ডিজেএমসিএমহেম

@ ডিগ্রিগ্রিনএগ্রস্যান্ড আইরনমন: ডি আপনাকে ধন্যবাদ
ডাওনগোট

1
চেডার একটি turnস্ট্রিং আছে কি?
টুক্রাফটিং করা

6
-1 এই ভাষার নাম আমাকে সর্বদা ক্ষুধার্ত করে তোলে।
পাল্টে ক্লকওয়াকটি বন্ধ করে দেওয়া হয়েছে

@ টেক্সক্রাফট্যাগ কেবলমাত্র 2 ডি অ্যারেগুলির জন্য, আমি লাইনগুলি পেতে .lines ব্যবহার করেছি।
ডাউনওয়েট

10

পার্ল, 21 + 1 = 22 বাইট

say'';s/\^(.)/♥[A\1↓/

-pপতাকা নিয়ে দৌড়াও। একটি কাঁচা ESCবাইট ( 0x1b) এবং উল্লম্ব ট্যাব ( 0x0b) দিয়ে প্রতিস্থাপন করুন ।

উল্লম্ব ট্যাবটি মার্টিন ইন্ডারের ধারণা। এটি দুটি বাইট সংরক্ষণ! ধন্যবাদ।


আপনার কি আর কি কার্সারটিকে শুরুতে কোনও লাইনের নীচে সরানোর দরকার হবে না যাতে এক্সটেনার্সগুলি শেষ কনসোল প্রম্পটকে ওভারল্যাপ না করে?
মার্টিন এন্ডার

আমি এটা সম্পর্কে নিশ্চিত ছিল না, হ্যাঁ। আমার প্রয়োজন মতো জায়গা থাকার ধারণা নিয়েছিলাম, তবে এটি কিছুটা প্রতারণাপূর্ণ হতে পারে। (সাধারণভাবে, আমি এই জাতীয় সমস্যা সমাধানের জন্য কার্সার আন্দোলনগুলি ব্যবহার করে খুব গর্বিত নই, তবে এটিই প্রথম জিনিসটি মনে আসল ...)
লিন

2
আমি মনে করি এটি একটি সূক্ষ্ম সমাধান তবে ফলাফলটি স্ট্রিংটি প্রিন্ট করা থেকে লক্ষ্য হিসাবে পৃথক করা উচিত।
মার্টিন ইন্ডার

1
কি সুন্দর সমাধান
টমাস ওয়েলার

7

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

s=>[/.(\^(.))?/g,/\^.(())/g].map(r=>s.replace(r,' $2'))

অবশ্যই উদ্ধার কাজ। প্রথমটি সমস্ত ক্যারেক্টারকে স্পেস দিয়ে প্রতিস্থাপন করে, যদি না এটি কোনও ক্যারেটের সন্ধান করে তবে এটি ক্যারেটটিকে মুছে ফেলে এবং চরিত্রটিকে তার পরে রাখে। (এই অক্ষরগুলির অস্তিত্বের গ্যারান্টিযুক্ত)) দ্বিতীয়টি হ'ল প্রতিটি ক্যারেট এবং এর নিম্নোক্ত অক্ষরটিকে একটি স্থানের সাথে প্রতিস্থাপন করার স্পষ্টরূপ one

সম্পাদনা: @ লিনকে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে যিনি দ্বিতীয় প্রতিস্থাপনের জন্য প্রতিস্থাপনের স্ট্রিংটিকে পুনরায় ব্যবহারের উপায়টি পুনরায় ব্যবহারের ব্যবস্থাটি রেগেক্সপের একটি অ্যারে জুড়ে ম্যাপ করার অনুমতি দিয়েছিলেন to


2
দেখে মনে হচ্ছে s=>[/.(\^(.))?/g,/\^.(())/g].map(r=>s.replace(r,' $2'))এটি একটি বাইট ছোট।
লিন

@ লিন এটি সত্যিই চালাকি স্টান্ট!
নীল

7

পাইথন 3, 157 101 98 85 83 74 বাইট

এই সমাধানটি পূর্বের চরিত্রটি ছিল কিনা তা ট্র্যাক করে ^ , তারপরে তার ভিত্তিতে প্রথম বা দ্বিতীয় লাইনে আউটপুট দেবে কিনা তা স্থির করে।

এর অ্যারে হিসাবে আউটপুট ['firstline', 'secondline']

a=['']*2
l=0
for c in input():x=c=='^';a[l]+=c*x;a[~l]+=' '*x;l=x
print(a)

13 টি সংরক্ষিত 15 বাইট @ লিক্যুনকে ধন্যবাদ!

@ জোফানকে 7 টি বাইট সংরক্ষণ করা হয়েছে!


1
চমৎকার সসীম-রাষ্ট্র অটোমেটন।
লিকি নুন

এটা ভাল আছে হতে চান a=['','']এবং CONCATENATE ' 'এবং cসরাসরি মধ্যে a[l]এবং a[~l]?
জোফান

6

পাইথন 2, 73 বাইট

l=['']*2;p=1
for c in input():b=c!='^';l[p]+=c*b;l[~p]+=' '*b;p=b
print l

কোন রেজেক্স। পূর্ববর্তী অক্ষরটি ছিল কিনা তা মনে রাখে ^এবং তার উপর ভিত্তি করে বর্তমান অক্ষরটিকে উপরের বা নীচের লাইনে এবং অন্য একটিতে একটি স্থান রেখে দেয়।


4

পাইথ, 17 বাইট

CcsmX~Z1j;d;cQ\^2

             Q      input string
            c \^    split on '^'
   m                map for sections d:
    X      ;          insert a space at index:
     ~Z1                the old value of Z (initially 0), before setting Z to 1
                      into:
        j;d             the section joined on spaces
  s                 concatenate
 c              2   chop into groups of 2
C                   transpose

2 টি স্ট্রিংয়ের অ্যারে প্রদান করে। (শুরুতে যোগj তাদের সাথে যোগ দেওয়ার জন্য প্রস্তুত করুন))

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


1
আপনার শেষ নামটি কীভাবে উচ্চারণ করা হবে তা আমি ভাবতে থামতে পারি না can't : ডি
লিন

4

এমএটিএল , 18 বাইট

94=t1YSt~&vG*cw~Z)

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

94=    % Take input implicitly. Create logical array of the same size that contains
       % true for carets, false otherwise
t      % Push a copy of this array
1YS    % Circularly shift 1 unit to the right. This gives an array that contains true
       % for the elements right after a caret (superindices), and false for the rest 
t~     % Push a copy and negate
&v     % Concatenate vertically. This gives a 2D, 2-row array
G*     % Push the input again, multiply with broadcast. This gives a 2D array in
       % which the first row contains the superindices (characters after a caret)
       % and 0 for the rest; and the second row contains the non-superindices and
       % 0 for the superindices
c      % Convert to char
w      % Swap. Brings to top the array containing true for carets and false otherwise
~      % Negate
Z)     % Use as logical index to remove rows that contain carets. Display implicitly

4

রুবি, 47 + 1 ( -nপতাকা) = 48 বাইট

puts$_.gsub(/\^(.)|./){$1||" "},gsub(/\^./," ")

এটি এর মতো চালান: ruby -ne 'puts$_.gsub(/\^(.)|./){$1||" "},gsub(/\^./," ")'


আমি মনে করি আপনি ব্যবহার করে $_=$_.gsub(/\^(.)|./){$1||" "}+gsub(/\^./," ")এবং এর -pপরিবর্তে 1 বাইট সংরক্ষণ করতে পারেন -n
ডম হেস্টিংস

1
@ ডোমহাস্টিংস এটি কাজ করে বা না করে নির্বিশেষে আপনার কোডটিতে একটি নতুন লাইন রয়েছে বলে মনে হচ্ছে না এবং যুক্ত করার +$/অর্থ এটি বাইটগুলি সংরক্ষণ করবে না। যুক্তিগুলির মধ্যে উপস্থিত থাকলে putsস্বয়ংক্রিয়ভাবে আপনার জন্য নতুন লাইনে ছুড়ে দেয় ,
মূল্য কালি

ওহ ... আমি ব্যবহার করে পরীক্ষা করেছি ruby -p ... <<< 'input'তবে আমি সম্মত, এটি যদি নতুন লাইনটি হারিয়ে যায় তবে এটি ভাল নয়! আসলে, আমি আমার পরীক্ষাগুলিতে এর আগে একটি নতুন লাইন যুক্ত করে থাকতে পারি ... এটি কাজ করা ছিল যদিও আমি চেক করতে পারি না!
ডম হেস্টিংস

@ ডোমহাস্টিংস এটি আবার দেখে, আমার অনুমান যে এর কারণটি getsবেশিরভাগ সময় পেছনের নিউলাইন অন্তর্ভুক্ত করে তবে আপনি যদি এমন কোনও ফাইলে পাইপ করেন যা পিছনে থাকা নতুন লাইন থাকে না, তবে এটি প্রদর্শিত হবে না এবং আউটপুট ভুল হবে । আপনার কোডটি পরীক্ষা করুন ruby -p ... inputfileযেহেতু রুবি getsকোনও কমান্ড লাইন আর্গুমেন্ট হলে এটি ফাইলটিতে পুনঃনির্দেশ করে ।
মান কালি

বুঝতে পেরেছি, নিখুঁত ধারণা তৈরি করে। আমি অনুমান করি যে ফাইলটিতে একটি পেছনের নতুন লাইনটিও সমস্যার সমাধান করবে। আমি কোনও উপায়ে রুবিস্ট নই তাই আমার মনে হয় আমি এ সম্পর্কে আজ আরও কিছুটা শিখেছি। ধন্যবাদ!
ডম হেস্টিংস

3

পাইথন (2), 76 68 67 বাইট

-5 বাইটস @ লিক্যুনকে ধন্যবাদ জানায়

-3 বাইটস কেভিনলউ-নোট কেনিকে ধন্যবাদ thanks

-1 বাইট @ ভ্যালুআইঙ্ককে ধন্যবাদ

-ড্রেগ্রাইনএগ্রস এবং আইরনম্যানকে -0 বাইট ধন্যবাদ thanks

import re
lambda i,s=re.sub:[s("(?<!\^).\^?"," ",i),s("\^."," ",i)]

এই বেনামে ল্যাম্বদা ফাংশনটি ইনপুট স্ট্রিংটিকে তার একমাত্র যুক্তি হিসাবে গ্রহণ করে এবং একটি নতুন লাইনের দ্বারা পৃথক দুটি আউটপুট লাইন প্রদান করে। এটিকে ডাকার আগে এটি "f =" লিখে একটি নাম দিন।

বেশ সোজা সোজা রেজেক্স: প্রথম অংশটি একটি স্থান দ্বারা নিম্নলিখিতটি প্রতিস্থাপন করে: কোনও চরিত্র এবং একটি গাজরের ক্যারেট বা কেবল একটি চর, তবে কেবল যদি তাদের আগে কোনও ক্যারেট না থাকে। দ্বিতীয় অংশটি স্ট্রিংয়ের কোনও ক্যারেট এবং তার পরে চরের পরে একটি স্পেস দ্বারা প্রতিস্থাপন করে।


@ ল্যাকইনুন: আমি কোনও কারণে ভেবেছিলাম যে ১. যদি আমি গ্রন্থাগার আমদানি করি তবে এটিও ধারণ করে। আমি যখন আপনার মন্তব্যটি দেখেছি এখনই এই প্রশ্নের 2 টি অনুলিপি করছিলাম। আপনাকে এবং কেভিনকে ধন্যবাদ!
কার্লকাস্টোর

আপনি একটি বাইট নিয়ে যেতে পারেনfrom re import*
DJMcMayhem

@ DRGreenEggsandIronMan এটি বাইটের ঠিক একই সংখ্যা ব্যবহার করবে বলে মনে হচ্ছে। (উপরে দেখুন)
কার্লকাস্টার

পুরানো আমদানি বিবৃতি রাখুন এবং lambda i,s=re.sub:[s("(?<!\^).\^?"," ",i),s("\^."," ",i)]-1 বাইটের জন্য করুন
মান ইঙ্ক


2

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

S`^
\^(.)
♥[A$1↓

আমার পার্ল উত্তরের একটি বন্দর, মার্টিন ইন্ডার দ্বারা নির্দেশিত। একটি কাঁচা ESCবাইট ( 0x1b) এবং উল্লম্ব ট্যাব ( 0x0b) দ্বারা প্রতিস্থাপন করুন ।


2

শেল + টেক্স + ক্যাটডভি, 51 43 বাইট

tex '\empty$'$1'$\end'>n;catdvi *i|head -n2

texকিছু সুন্দর গণিত টাইপসেট করতে ব্যবহার করে এবং তারপরে catdviএকটি পাঠ্য উপস্থাপন করতে ব্যবহৃত হয়। হেড কমান্ড অন্যথায় উপস্থিত জাঙ্ক (পৃষ্ঠা নম্বর, নতুন লাইনের পিছনে) সরিয়ে দেয়।

সম্পাদনা: দীর্ঘ, যথাযথ, /dev/nullজিনিসটিকে কেন পুনর্নির্দেশ করবেন যখন আপনি পার্শ্ব প্রতিক্রিয়া উপেক্ষা করতে এবং একটি একক চিঠি ফাইলে লিখতে পারেন?


উদাহরণ

ইনপুট: abc^d+ef^g + hijk^l - M^NO^P (Ag^+)

টেক্স আউটপুট (সমীকরণে ক্রপ করা হয়েছে): "সুন্দরী" গণিত! চূড়ান্ত আউটপুট:

   d   g     l  N P   +
abc +ef +hijk -M O (Ag )

অনুমান: খালি দির থেকে শুরু করুন (বা বিশেষত এমন একটি দির যার নাম "i" দিয়ে শেষ হবে না)। ইনপুট শেল স্ক্রিপ্টের একক যুক্তি। ইনপুট কোনও খালি স্ট্রিং নয়।

কেউ আমাকে বলুন এটি বিশেষত, নিয়মের অপব্যবহার কিনা catdvi


2

হাস্কেল, 74 56 55 বাইট

g('^':c:r)=(c,' '):g r
g(c:r)=(' ',c):g r
g x=x
unzip.g

একজোড়া স্ট্রিং প্রদান করে। ব্যবহারের উদাহরণ: unzip.g $ "abc^d+e:qf^g + hijk^l - M^NO^P: (Ag^+)"->(" d g l N P + ","abc +e:qf + hijk - M O : (Ag )")

gজোড়াগুলির একটি তালিকা তৈরি করে, যেখানে প্রথম উপাদানটি উপরের লাইনের চর এবং দ্বিতীয় উপাদানটি নিম্ন রেখার চর। unzipতালিকাগুলির জোড়ায় পরিণত করে।

সম্পাদনা করুন: @ এক্সনর প্রস্তাবিত unzipযা 18 বাইট সংরক্ষণ করে @ লাইকনি সেভ করার জন্য আরও একটি বাইট পেয়েছে। ধন্যবাদ!


আপনি কি করতে পারেন j=unzip.g?
xnor

@ এক্সনর: ওহ, আমি নিজেকে দেখতে না পেয়ে কত নির্বোধ! অনেক ধন্যবাদ!
নিমি

একটি বাইট সংরক্ষণ করতে আপনি এর g[]=[]সাথে প্রতিস্থাপন করতে পারেন g x=x
লাইকনি

@ লাইকনি: বেশ ভাল! ধন্যবাদ!
নিমি

1

পার্ল, 35 বাইট

34 বাইট কোড +1 এর জন্য -p

$_=s/\^(.)|./$1||$"/ger.s/\^./ /gr

ব্যবহার

perl -pe '$_=s/\^(.)|./$1||$"/ger.s/\^./ /gr' <<< 'abc^d+ef^g + hijk^l - M^NO^P (Ag^+)'
   d   g       l    N P    + 
abc +ef  + hijk  - M O  (Ag )

দ্রষ্টব্য: এটি হ'ল মূল্য কালিয়ার উত্তরের মতো যা আমি পরে গুপ্তচরবৃত্তি করেছি। এটি প্রয়োজনে রুবির সমাধানটিতে আসলে যুক্ত হয় না এমনভাবে প্রয়োজন হলে মুছে ফেলবে।


1

জাভা 8 লাম্বদা, 132 128 112 টি অক্ষর

i->{String[]r={"",""};for(char j=0,c;j<i.length();j++){c=i[j];r[0]+=c==94?i[++j]:32;r[1]+=c==94?32:c;}return r;}

অবরুদ্ধ সংস্করণটি দেখতে এরকম দেখাচ্ছে:

public class Q86647 {

    static String[] printExponents(char[] input) {
        String[] result = {"",""};
        for (char j = 0, c; j < input.length(); j++) {
            c = input[j];
            result[0] += c == 94 ? input[++j] : 32;
            result[1] += c == 94 ? 32 : c;
        }
        return result;
    }
}

অ্যারে হিসাবে আউটপুট, কেবল কোনও কেরেট রয়েছে কিনা তা পরীক্ষা করে দেখানো হয় এবং যদি পরবর্তী অক্ষরটি উপরের সারিতে স্থাপন করা হয়, অন্যথায় একটি স্থান থাকবে।


আপডেট

4 টি অক্ষর বাঁচাতে অক্ষরগুলি তাদের ascii মান দিয়ে প্রতিস্থাপন করেছে।

পরিবর্তে ইনপুট হিসাবে একটি চর অ্যারে ব্যবহার করার জন্য নির্দেশিত করার জন্য @ লিক্যাললুনকে ধন্যবাদ জানাই।

এছাড়াও আরও কিছু চরিত্র সংরক্ষণ intকরার জন্য সুইচ করার জন্য @ কেভিন ক্রুজসেনকে ধন্যবাদ জানাই char


আপনি ইনপুট করার চেষ্টা করতে পারেন এবং বাইট-কাউন্টটি হ্রাস করা যায় কিনা তা দেখতে char[]ব্যবহার for(char c:i)করতে পারেন।
লিকি নুন

: আপনি এটি গলফ নিচে 110 বাইট একটু ব্যবহার করে করতে পারেন i->{String[]r={"",""};for(char j=0,c;j<i.length;j++){c=i[j];r[0]+=c==94?i[++j]:32;r[1]+=c==94?32:c;}return r;}সঙ্গে "abc^d+ef^g + hijk^l - M^NO^P (Ag^+)".toCharArray()ইনপুট হিসাবে। ( এই পরিবর্তনগুলির আদর্শ। )
কেভিন ক্রুইজসেন

1

নারকেল , 122 114 96 বাইট

সম্পাদনা করুন: লিকি নুনের সহায়তায় 8 26 বাইট নিচে।

def e(s,l)=''==l and s or"^"==l[0]and l[1]+e(s+' ',l[2:])or' '+e(s+l[0],l[1:])
f=print..e$('\n')

সুতরাং আমি আজ যেমন শিখেছি অজগরের একটি টেরিনারি শর্তসাপেক্ষ অপারেটর রয়েছে, বা বাস্তবে সেগুলির মধ্যে দুটি: <true_expr> if <condition> else <false_expr>এবং <condition> and <true_expr> or <false_expr>শেষের সাথে একজনের সাথে একটি চর কম আসে।
একটি অজগর কনফর্ম সংস্করণটি আদর্শ হতে পারে ।


প্রথম প্রচেষ্টা:

def e(s,l):
 case l:
  match['^',c]+r:return c+e(s+' ',r)
  match[c]+r:return' '+e(s+c,r)
 else:return s
f=print..e$('\n')

f("abc^d+ef^g + hijk^l - M^NO^P (Ag^+)")প্রিন্ট সহ কল ​​করা

   d   g       l    N P    +
abc +ef  + hijk  - M O  (Ag )

কেউ এখনও নারকেল মধ্যে গল্ফ চেষ্টা? এটি প্যাটার্ন ম্যাচিং এবং ফাংশন কনটেনটেশনের মতো আরও কার্যকরী প্রোগ্রামিং ধারণার সাথে পাইথনকে সমৃদ্ধ করে with.. উপরে ব্যবহৃত ) এর । এটি নারকেল হিসাবে আমার প্রথম চেষ্টা, যে কোনও টিপস প্রশংসা করা হবে।

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


আমি মনে করি আপনি x and y or zপ্রতিস্থাপনের জন্য টার্নারি অপারেটর ( ) ব্যবহার করতে পারেন case
লিকি নুন

আপনি এমনকি এর s[0]=="^"পরিবর্তেmatch['^',c]+r in l
লিকি নুন

@LeakyNun আমি প্রতিস্থাপন কখন match['^',c]+rসঙ্গে s[0]=="^", তারপর crআর আবদ্ধ হয়। কিভাবে এই সাহায্য করবে?
লাইকনি

আপনি ব্যবহার করতে পারেন s[1]প্রতিস্থাপন cএবং s[2:]প্রতিস্থাপন করতে r
লিকি নুন

তাহলে আপনি এখন টের্নারি ব্যবহার করতে পারেন।
লিকি নুন

0

ডায়ালগ এপিএল, 34 বাইট

{(0 1=⊂b/¯1⌽b){⍺\⍺/⍵}¨⊂⍵/⍨b←⍵≠'∧'}

এটি দুটি লাইনের সাথে একটি দ্বি-উপাদান ভেক্টর প্রদান করে

নমুনা রান (সামনের উঠানামাটি মানুষের ব্যবহারের জন্য দ্বি-এল। ভেক্টরকে ফর্ম্যাট করা):

      ↑{(0 1=⊂b/¯1⌽b){⍺\⍺/⍵}¨⊂⍵/⍨b←⍵≠'∧'}'abc∧d+ef∧g + hijk∧l - M∧NO∧P (Ag∧+)'
   d   g       l    N P    + 
abc +ef  + hijk  - M O  (Ag )

কোড কিছুই করার বিষয়ে আমার প্রশ্নে আপনার মন্তব্যে: হ্যাঁ, সেই কোডটি আপনি গণনা করেছেন।
হাইকমাম

0

পাওয়ারশেল ভি 2+, 88 83 বাইট

-join([char[]]$args[0]|%{if($c){$_;$b+=' '}elseif($_-94){$b+=$_;' '}$c=$_-eq94});$b

অন্যদের তুলনায় কিছুটা দীর্ঘ, তবে সামান্য পাওয়ারশেল যাদু এবং কিছুটা ভিন্ন যুক্তি প্রদর্শন করে।

মূলত পাইথন জবাবগুলির মতো একই ধারণাটি - আমরা ইনপুট চরিত্র অনুসারে অক্ষরটি পুনরুক্তি করি, মনে করি পূর্ববর্তীটি একটি ক্যারেট ( $c) ছিল কিনা এবং বর্তমান চরিত্রটিকে যথাযথ স্থানে রেখেছি। তবে কোথায় আউটপুটটি নির্ধারণ করতে হবে তার জন্য যুক্তি এবং পদ্ধতিটি কিছুটা ভিন্নভাবে পরিচালনা করা হয়েছে, এবং একটি টিপল বা পৃথক ভেরিয়েবলগুলি ছাড়াই - আমরা পূর্ববর্তী অক্ষরটি একটি ক্যারেট ছিল কিনা তা পরীক্ষা করে দেখি, এবং যদি অক্ষরটি পাইপলাইনে আউটপুট দেয় এবং একটি স্থানকে সংযুক্ত করে দেয় তবে $b। অন্যথায় আমরা বর্তমানের চরিত্রটি একটি ক্যারেট কিনা তা যাচাই করে নিই elseif($_-94)এবং যতক্ষণ না এটি করা হয় ততক্ষণ আমরা বর্তমান চরিত্রটিকে সম্মতি জানাই$b দিয়ে পাইপলাইনে একটি স্থান আউটপুট করি। অবশেষে, আমরা নির্ধারণ করেছি যে বর্তমানের চরিত্রটি পরবর্তী গোড়ার জন্য ক্যারেট কিনা।

পাইপলাইন থেকে আমরা সেই অক্ষরগুলি পেরেনগুলিতে একত্রিত করি, -joinতাদেরকে একটি স্ট্রিংয়ে রূপান্তরিত করি এবং এটির পাশাপাশি রেখে যাই$b এটি পাইপলাইনেরশেষে আউটপুট একটি নতুন লাইন অভ্যন্তর অন্তর্ভুক্ত is

তুলনার জন্য, এখানে @ xnor এর পাইথন উত্তরের একটি সরাসরি বন্দর , 85 বাইটে :

$a=,''*2;[char[]]$args[($l=0)]|%{$a[!$l]+="$_"*($c=$_-ne94);$a[$l]+=' '*$c;$l=!$c};$a

0

গেমা, 42 41 টি অক্ষর

\^?=?@set{s;$s }
?=\ @append{s;?}
\Z=\n$s

জেমা স্ট্রিপ হিসাবে ইনপুট প্রক্রিয়া করে, তাই আপনাকে এটি একটি পাসে সমাধান করতে হবে: প্রথম লাইনটি তত্ক্ষণাত প্রসেস হিসাবে লেখা হয়, দ্বিতীয় লাইনটি ভেরিয়েবল। গুলি মধ্যে সংগ্রহ করা হয়, তারপরে শেষে আউটপুট।

নমুনা রান:

bash-4.3$ gema '\^?=?@set{s;$s };?=\ @append{s;?};\Z=\n$s' <<< 'abc^d+ef^g + hijk^l - M^NO^P (Ag^+)'
   d   g       l    N P    +  
abc +ef  + hijk  - M O  (Ag )

0

দারুচিনি গাম, 21 বাইট

0000000: 5306 6533 bd92 d1db 8899 8381 a2f8 8f8c  S.e3............
0000010: 1230 249e a1                             .0$..

অ প্রতিদ্বন্দ্বী। এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা

আমি খুব একটা রেইগেক্স গল্ফ নই তাই সম্ভবত এটি করার আরও ভাল উপায় আছে।

স্ট্রিংটি এতে সংক্ষেপিত হয়:

S(?<!\^)[^^]& &\^&`S\^.& 

(পিছনের স্থান নোট করুন)

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

পার্ল স্যুয়েডো-কোডে:

$first_stage_sub_1 = ($input =~ s/(?<!\^)[^^]/ /gr);
$first_stage_sub_2 = ($first_stage_sub_1 =~ s/\^//gr);
print $first_stage_sub_2, "\n";

$second_stage_sub = ($input =~ s/\^./ /gr);
print $second_stage_sub, "\n";

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