একটি Forsyth- এডওয়ার্ডস নোটেশন স্ট্রিংকে ASCII শিল্পে রূপান্তর করুন


9

দাবাতে, ফোর্সাইথ-এডওয়ার্ডস নোটেশন , যাকে সাধারণত "এফএনই" বলা হয়, এটি বোর্ডগুলি প্রতিলিখনের একটি পাঠ্য পদ্ধতি। এটি বোর্ডের আটটি সারির প্রতিটিকে হোয়াইটের দৃষ্টিকোণ থেকে উপরে থেকে নীচে (দাবাতে "র‌্যাঙ্কস" বলা হয়) বর্ণনা করে। টুকরোগুলি কে (রাজা), কিউ (কুইন), আর (রোক), বি (বিশপ), এন (নাইট) এবং পি (প্যাঁচ) হিসাবে লেখা রয়েছে। কালো টুকরা ছোট অক্ষরে এই অক্ষরগুলি ব্যবহার করে, এবং সাদা টুকরা বড় হাতেরগুলিতে এই বর্ণগুলি ব্যবহার করে। খালি শূন্যস্থানগুলি 1 থেকে 8 পর্যন্ত একটি সংখ্যা দ্বারা নির্দেশিত হয় যে সেখানে ক্রমাগত কতগুলি ফাঁকা স্থান রয়েছে তা নির্দেশ করে ating পুরোপুরি খালি র‌্যাঙ্কটি হবে 8, ডানদিকের কলামে একক কালো রুক (দাবাতে "ফাইলগুলি" বলা হয়) হবে 7r, এবং একটি সারির প্রতিটি প্রান্তে দুটি সাদা পাউন্ড হবে PP4PP। পদগুলি a দ্বারা পৃথক করা হয়/। সেখানে স্বাভাবিকভাবে অন্যান্য তথ্য যোগ করেছেন, যা নির্দেশ যা পার্শ্ব সরানো castling এবং হয় পাসান্ত স্বীকারোক্তি অধিকার, পদক্ষেপ সংখ্যা, এবং halfmove ঘড়ি, কিন্তু আমরা তাদের এই চ্যালেঞ্জের উদ্দেশ্যে উপেক্ষা করা হবে।

ইনপুট

আপনার দয়া করে কমান্ড লাইন বা STDIN থেকে একটি FEN স্ট্রিং। আপনি ধরে নিতে পারেন যে এই স্ট্রিংটি সর্বদা বৈধ।

আউটপুট

বোর্ডের একটি সাধারণ ASCII শিল্প উপস্থাপনাটি লিখুন যা এটি প্রদর্শিত হবে:

  • টুকরাগুলি FEN এ তাদের চরিত্র দ্বারা প্রতিনিধিত্ব করা হয়
  • ফাঁকা স্কোয়ারগুলি ফাঁকা স্থান দ্বারা প্রতিনিধিত্ব করা হয়
  • টুকরা এবং স্কোয়ারগুলি একটি পাইপ দ্বারা পৃথক করা হয় |এবং বোর্ডের প্রতিটি পাশে পাইপ থাকে

সুতরাং 8/8/8/8/8/8/8/8FEN হিসাবে লিখিত একটি খালি বোর্ড উপস্থিত হবে

| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |

দাবা খেলা শুরুর অবস্থানটি যেমন লেখা থাকে rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNRএবং তেমন প্রদর্শিত হবে

|r|n|b|q|k|b|n|r|
|p|p|p|p|p|p|p|p|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|P|P|P|P|P|P|P|P|
|R|N|B|Q|K|B|N|R|

দাবা সম্প্রদায়ের "দ্য অমর গেম" নামে আন্ডারসন-কিসরিটজকি 1851 এর চূড়ান্ত অবস্থানটি এইভাবে লেখা হয়েছিল r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1এবং আপনার প্রোগ্রামটি যখন এই ইনপুটটি খাওয়ানো হয়:

|r| |b|k| | | |r|
|p| | |p|B|p|N|p|
|n| | | | |n| | |
| |p| |N|P| | |P|
| | | | | | |P| |
| | | |P| | | | |
|P| |P| |K| | | |
|q| | | | | |b| |

এটি স্টাডিউটে লেখার পরিবর্তে কোনও ফাংশন যা ইনপুট নেয় এবং আউটপুট দেয় তা লিখতে কি গ্রহণযোগ্য?
মনিকার লসুইট 19

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

2
আপনি যে উত্তরটি স্বীকার করেছেন তা সংক্ষিপ্ততম নয়। গল্ফিং ভাষার প্রতি আপনার অনুভূতি নির্বিশেষে কোড গল্ফের অর্থ হ'ল সংক্ষিপ্ততম কোডটি জয়ী।
ডেনিস

3
আপনি তাদের শাস্তি দিতে বা একটি স্বেচ্ছাচারিত উত্তর গ্রহণ করতে পারবেন না । পুরো সাইটটি উদ্দেশ্যমূলক জয়ের মানদণ্ডকে ঘিরে তৈরি।
ডেনিস

1
+1একটি আকর্ষণীয় চ্যালেঞ্জ জন্য। -2জন্য ভুল উত্তর গ্রহণ করার জন্য কোন ভাল কারণ
জেমস

উত্তর:


9

পার্ল, 28 বাইট

এর জন্য +2 অন্তর্ভুক্ত -lp

STDIN এ ইনপুট দিন

fen.pl <<< "r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1"

fen.pl:

#!/usr/bin/perl -lp
s/\d/$"x$&/eg;s/|/|/g;y;/;

আসলে কিছু গল্ফিং ভাষার লিগে ...

লক্ষ্য করুন যে ফাইল ভিত্তিক সংস্করণটি ফাইলটিতে চূড়ান্ত নিউলাইন প্রয়োজন যাতে একটি সত্যই 29 বাইট হয়। তবে কমান্ডলাইন সংস্করণে সেই অতিরিক্ত নতুন লাইনটির প্রয়োজন নেই এবং তাই কোডটি 28 বাইট হিসাবে গণনা করা হয়েছে:

perl -lpe 's/\d/$"x$&/eg;s/|/|/g;y;/;' <<< "r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1"

1
হারিয়ে যাচ্ছে শেবাং?
ব্যবহারকারী 253751

15

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

\d
$* 
/
¶

|

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

ব্যাখ্যা

প্রথম অংশ (পিছনের স্থানটি নোট করুন):

\d
$* 

স্পেসকে নির্দিষ্ট সংখ্যায় রূপান্তর করা। রেটিনার $*পুনরাবৃত্তি করার বৈশিষ্ট্য রয়েছে । এটি যেভাবে কাজ করে তা হ'ল: <num>$*<char>যদি না থাকে তবে <num>রেটিনা অনুমান করবে $&বা ম্যাচযুক্ত স্ট্রিং থাকবে, এক্ষেত্রে মিলিত সংখ্যা।

পরবর্তী অংশ:

/
¶

বেশ সহজ, এটি একটি নতুনলাইন যা /দিয়ে সব প্রতিস্থাপন

শেষ অংশটি একই কাজ করে:

    
|

এটি সমস্ত কিছু (সুতরাং প্রথম লাইনে কিছুই নেই) এর সাথে প্রতিস্থাপন করবে ||সব জায়গায় রাখছি ।


1
আপনি S`/দ্বিতীয় পর্যায়ে যেমন একই বাইট গণনা করতে এটি এএসসিআইআই তেও করতে পারেন ।
মার্টিন ইন্ডার

12

রুবি - 75 82 78 76 75 62 59 58 57 56 বাইট

->n{"|#{n.gsub(/\d|
/){' '*$&.hex}.chars*?|}|".tr'/',$/}

ভেন্টোরোকে ধন্যবাদ কয়েকটি বাইট সংরক্ষণ করা হয়েছে

আমাকে ব্যাখ্যা করুন ( \nআক্ষরিক নতুন লাইনের পরিবর্তে):

->n{"...".tr'/',$/}

এটি স্পষ্টভাবে স্ট্রিংয়ের মান প্রদান করে, প্রত্যেকে /একটি নতুন লাইন দিয়ে প্রতিস্থাপিত হয় (ডিফল্টরূপে, $/একটি নতুন লাইন থাকে)

"|#{...}|"

এটি অত্যন্ত সহজ; এটি কেবল একটি স্ট্রিং যা একটি পাইপ, স্ট্রিং অন্তরঙ্গন এবং অন্য পাইপযুক্ত। স্ট্রিং ইন্টারপোলেশন মূল্যায়ন করা হয়

n.gsub(/\d|\n/){' '*$&.hex}...

এটি প্রতিটি সংখ্যাকে সেই অনেকগুলি স্থানের সাথে প্রতিস্থাপন করে। আমি এখানে নিউলাইনগুলি সন্ধান করে কয়েকটি বাইট সংরক্ষণ করতে পারি; কারণ hexস্ট্রিংটি কোনও বৈধ সংখ্যা না হলে 0 প্রদান করে, যখন এটি একটি নতুন লাইন –- যেমন ie- এর ফলাফলের শেষে পাওয়া যায় gets–- এটি 0-দৈর্ঘ্যের স্ট্রিংয়ের সাথে এটি প্রতিস্থাপন করে, কার্যকরভাবে মুছে ফেলে। এটি ছাড়া, একটি পিছনে পাইপ থাকবে।

$&একটি ম্যাজিক ভেরিয়েবল যা সর্বশেষতম চলক ম্যাচের সম্পূর্ণ পাঠ্য উপস্থাপন করে যা আমাকে বাদ দিয়ে একটি বাইট সংরক্ষণ করতে দেয় |d|। আমি এর .hexপরিবর্তে অন্য একটি বাইট সংরক্ষণ করতে পারি .to_i, যা কাজ করে কারণ প্রতিটি সংখ্যা 9 এর চেয়ে কম, যার অর্থ হেক্স এবং দশমিকের একই মান রয়েছে।

.chars*?|

এটি প্রতিটি চরিত্রের মধ্যে একটি পাইপ রাখে। নোট করুন যে পাইপগুলি লাইনের উভয় পাশে রাখে (প্রথম এবং শেষ ব্যতীত) কারণ স্ল্যাশগুলি যা শেষ পর্যন্ত নতুন লাইনে পরিণত হয় tr, অক্ষর হিসাবে গণনা করে এবং তাই পাইপ দ্বারা ঘিরে থাকে। ?|শুধু মানে হলো "এক-অক্ষর স্ট্রিং"|" "।

এবং এটাই. এটি খোলামেলা কলঙ্কজনক একটি সহজ প্রোগ্রাম। এটি কেবল প্রচুর চটকদার সিনট্যাক্স কৌশল ব্যবহার করে।


2
কয়েকটি সাধারণ কৌশল প্রয়োগ করে আপনি আরও 4 টি অক্ষর সংরক্ষণ করতে পারেন: puts"|#{gets.gsub(/\d|\n/){' '*$&.hex}.chars*?|}|".split'/'(অবশ্যই, \nআবার একটি আক্ষরিক নিউলাইন দিয়ে প্রতিস্থাপন করুন )।
ভেন্টোরো

5

পাইথ - 24 22 21 বাইট

.i*\|72jcu:G`H*Hd9z\/

টেস্ট স্যুট

+                     Concatenate
 K\|                  Store "|" in K and use value
+         K           Concatenate to end
 jK                   Join string by K, this puts "|" between each char
  :                   String substitution
        \/            Replace "/"
         b            With newline
   u                  Reduce
        9             Over [0, 9)
         z            With input as base case
    :G                String substitution current val
     `H               Replace stringifyed int from list we're looping through
     *Hd              With " "*that int


4

জাভাস্ক্রিপ্ট ES7, 80 70 বাইট

একটি বেনাম ফাংশন যা স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করে।

a=>[,...[+t?" ".repeat(t):t<"0"?`
`:t for(t of a)].join``,`
`].join`|`

80-বাইট ES6- কেবল মূল্যায়ন।

a=>a.split`/`.map(x=>[,...x.replace(/\d/g,t=>" ".repeat(t)),`
`].join`|`).join``

ব্যাখ্যা

তালিকাটি লুপ করতে আমরা একটি অ্যারে বোঝাপড়া ব্যবহার করি:

[+t?" ".repeat(t):t<"0"?`
`:t for(t of a)]

এটি সমান:

[!isNaN(parseInt(t, 10)) ? " ".repeat(parseInt(t, 10)) : t === "/" ? "\n" : t for(t of a)]

যদি এটি একটি সংখ্যা হয়, আমাদের স্পেস সংখ্যা। যদি এটি হয় তবে /আমাদের একটি নতুন লাইন রয়েছে। অন্যথায়, আমরা চরিত্র আছে। তারপরে, আমরা স্ট্রিং তৈরির জন্য কিছুই না দিয়ে বোঝাপড়ায় যোগদান করি।

তারপরে, আমরা 3 দৈর্ঘ্যের অ্যারে তৈরি করব [,...that,"\n"]...যোগদানের বোঝাটিকে চরগুলিতে ছড়িয়ে দেয়। এতে যোগদানের ফলে ফল পাওয়া যায়।


আপনি ES6 মানে না? ES7 এখনও বের হয়নি আমি বিশ্বাস করি।
ericw31415

@ ericw31415 এটি বাইরে নেই, আপনি সঠিক, তবে কিছু ব্রাউজারগুলি ES7 টি অনুমানের অংশটি বাস্তবায়ন শুরু করেছে।
কনর ও ব্রায়ান

ওহ ঠিক আছে. তবে এখনও আপনার কোডটি কোনও ES7 বৈশিষ্ট্য ব্যবহার করে না, তাই না?
ericw31415

1
@ ericw31415 আসলে, তা করে। অ্যারে বোধগম্যতা ( [x for(x of a)]) ES7।
কনর ও'ব্রায়ান


3

জুলিয়া, 62 বাইট

s->split("|"join(replace(s,r"\d",d->" "^parse(d)),"|")"|","/")

এটি একটি অনামী ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং স্ট্রিংগুলির একটি অ্যারে প্রদান করে। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

কিউপায়সট্যাক্সের চতুর রুবি উত্তরের মতই পদ্ধতিটি একই । আমরা ইনপুটগুলিতে প্রতিটি অঙ্ককে সেই অনেকগুলি স্পেস দিয়ে প্রতিস্থাপন করি, |প্রতিটি অক্ষরের মাঝে রাখি |, সামনের এবং পিছনে ট্যাক করি এবং একটি অ্যারেতে বিভক্ত হয় /

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


হ্যাঁ আমি বিষয়গুলিকে অনুপ্রাণিত করেছি: ডি
ফান্ড মনিকার লসুইট

পছন্দ করেছেন চমৎকার সমাধান!
অ্যালেক্স এ।


2

জাভাস্ক্রিপ্ট (ES6), 69 67 62 বাইট

s=>[,...s.replace(/[/-8]/g,c=>+c?' '.repeat(c):`
`),,].join`|`

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

সম্পাদনা করুন: @ ব্যবহারকারী81655 ধন্যবাদ 5 বাইট সংরক্ষণ করা।


চান /[\d/]/g,c=>+c?` `.repeat(c):`\n`কাজ করে?
ব্যবহারকারী 81655

1
@ ব্যবহারকারী81655 ধন্যবাদ, তবে আমি আপনার ইমোটিকন পছন্দ করি না, তাই আমি এটিকে চশমা দিয়ে বিরক্ত মুখের সাথে প্রতিস্থাপন করেছি।
নীল

1

রেটিনা , 50 45 বাইট

এই মজা ছিল হা হা। আমি কেবল রেটিনার নুবই নই, সাধারণভাবে রেইজেক্সেও ... সম্ভবত এটি অনেকটা গল্ফ করা যেতে পারে , তাই আমি আরও কিছু গবেষণা করব।

কোড:

8
44
7
34
6
42
5
 4
4
22
3
 2
2

1

/
¶

|

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


$*কার্যকারিতাটি ব্যবহার করার চেষ্টা করুন :)
লিকি নুন



1

সি, 252 বাইট

i=-1,j,s=1,x;C(char*n){while(n[++i])s+=isdigit(n[i])?n[i]*2+1:2;char*m=(char*)malloc(s);for(i=j=-1;n[++i]&(m[++j]='|');)if(n[i]=='/')m[++j]='\n';else if(isdigit(n[i]))for(x=n[i]-'0';x;--x&&(m[++j]='|'))m[++j]=' ';else m[++j]=n[i];m[++j]='\0';return m;}

অনলাইনে বিস্তারিত চেষ্টা করুন

// input-string, input-string-size
char* C(char*n)
{
    int i=-1,j,s=1,x;

    // figure out required grid size
    while(n[++i])s+=isdigit(n[i])?n[i]*2+1:2;
    char*m=(char*)malloc(s);

    i=j=-1;
    while(n[++i]) // while not end of string
    {
        m[++j]='|'; // seperator

        if (n[i]=='/') // end of row
            m[++j]='\n';
        else if (isdigit(n[i])) // fill spaces
            for(x=n[i]-'0';x;--x&&(m[++j]='|')) m[++j]=' ';
        else
            m[++j]=n[i]; // single literals
    }

    m[++j]='|';
    m[++j]='\0';
    return m;
}

1

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30+), 61

অ্যারে বোধগম্যতা ব্যবহার করা যা আর কোনও স্ট্যান্ডার্ড এক্সমাস্ক্রিপ্ট নয়

f=>'|'+[for(c of f)+c?' |'.repeat(c):c<'A'?`
|`:c+'|'].join``

পরীক্ষা

F=f=>'|'+[for(c of f)+c?' |'.repeat(c):c<'A'?`\n|`:c+'|'].join``

console.log=x=>O.textContent+=x+'\n'

;['8/8/8/8/8/8/8/8','rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR',
'r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1']
.forEach(t=>console.log(F(t)+'\n'))
<pre id=O></pre>


1

লুয়া, 106 বাইট

print("|"..(...):gsub(".",function(c)return c:find("%d")and(" |"):rep(c)or c=="/"and"\n|"or c.."|"end),'')

Ungolfed

print("|"..                   -- prepend | to the following string
  (...):gsub(".",function(c)  -- iterate over each character in the argument
    return                    -- replaces in the argument
           c:find("%d")       -- if c is a number
             and(" |"):rep(c) --   replace by " |"*c
           or c=="/"          -- elseif c is a slash
             and"\n|"         -- replace by "\n|"
           or c.."|"          -- else (case letter)replace by c
  end)                        -- return the modified string
,'')                          -- add an empty parameter to print
                              -- it suppresses the second output of gsub

print((...):gsub(".",function(c)return(c:find("%d")and("| "):rep(c)or c=="/"and"|\n"or"|"..c)end).."|")
ফুটো নুন

print((...):gsub("%d",function(c)return("| "):rep(c)end):gsub("/","|\n"):gsub("([^%d%s|])","|%1").."|")একই বাইট গণনা জন্য।
ফাঁস নুন

print((...):gsub("%d",function(c)return("| "):rep(c)end):gsub("([^%d |])","|%1"):gsub("/","\n").."|")101 বাইট
লিকি নুন

1

আর (প্রতিযোগিতার বাইরে)

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

function(x){
# x = FEN position, a string
# can be split with / or ,
# example: forsythe("rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R")

allowed <- c(paste(1:64), 
c("k", "q", "r", "b", "n", "p", "K", "Q", "R", "B", "N", "P"))
chars <- strsplit(x, "")[[1]]
chars <- chars[-which(!(chars %in% allowed))]
out <- c()
for (i in 1:length(chars)){
  if (chars[i] %in% paste(1:64)){
    out <- c(out, rep(" ", as.numeric(chars[i])))
  }
  else{
    out <- c(out, chars[i])
  }
}
if (length(out) < 64) out <- c(out, rep(" ", 64-length(out)))

pieces <- strsplit("KQRBNPkqrbnp", "")[[1]]
unicode <- c("\u2654", "\u2655", "\u2656", 
"\u2657", "\u2658", "\u2659", "\u265A", "\u265B", 
"\u265C", "\u265D", "\u265E", "\u265F")

for (i in 1:64){
  if (out[i] %in% pieces){
    out[i] <- unicode[which(pieces==out[i])]
  }
  else{
  }
}
out <- matrix(out, nc=8, byrow=T)
#print(out)

plot(0, xlim=c(0, 8), ylim=c(0, 8), type="n", xaxt="n", yaxt="n",
xlab="", ylab="")
for (i in 0:7){ for (j in 0:7){ rect(i, j, i+1, j+1,
col=ifelse(((i+j) %% 2) == 0, grey(0.95), "white"), border=F) }}

for (i in 0:7){ for (j in 0:7){
  text(i+0.5, j+0.5, out[8-j, i+1], cex=2)  
}}

axis(1, labels=letters[1:8], at=1:8 - 0.5, tick=F)
axis(2, labels=paste(1:8), at=1:8-0.5, las=2, tick=F)

}

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

প্রযুক্তিগতভাবে, এটি গল্ফ হয় শুধু খুব ভাল না।
ফ্লাউন্ডারিয়ার

0

হাস্কেল, ১১০ বাইট

p '/'="\n"
p c|'1'<=c&&c<='8'=replicate(read[c])' '
p c=[c]
main=getLine>>=putStrLn.('|':).(>>=(:"|")).(>>=p)

Ungolfed:

p c | c=='/'           = "\n"
    | '1'<=c && c<='8' = replicate (read [c]) ' '
    | otherwise        = [c]
addPipes string = "|" ++ concatMap (\c -> [c] ++ "|") string
main = getLine >>= putStrLn . addPipes . concatMap p

0

জাভা 7, 190 184 বাইট

String Z(int c){String m="";if(c==47)m+="|\n";else if(c>57)m+="|"+c;else while(c-->48)m+="| ";return m;}String C(String n){String m="";for(char x:n.toCharArray())m+=Z(x);return m+"|";}

অনলাইনে বিস্তারিত চেষ্টা করুন

public static String Z(char c)
{
    String m="";
    if(c=='/')m+="|\n";
    else if(c>'9')m+="|"+c;
    else while(c-->'0')m+="| ";
    return m;
}

public static String C(String n)
{
    String m="";
    for(char x:n.toCharArray())m+=Z(x);
    return m+"|";
}

তুলনাতে চর অক্ষরের পরিবর্তে পূর্ণসংখ্যার ব্যবহার করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন
ব্লু

@ ব্লু নোটগুলি নেওয়া হয়েছে
খালেদ.কে।


0

পাইথন, 84 বাইট

lambda a:"".join(c*c.isalpha()or"\n"*(c=="/")or" "*int(c)for c in a).replace("","|")

ব্যাখ্যা:

        c*c.isalpha()                                                       - if c is alphabetical, use c
                       "\n"*(c=="/")                                        - if it's "|", replace it with a newline
                                      " "*int(c)                            - else its an int.
"".join(                                                  ).replace("","|") - interweave "|" between the chars

0

> <>, 64 বাইট

<v?(0:i
r\
"<o-*=@"%/":   v?*(@)@":/"::;?(0:o"|
 ^~?="0":-1o" "<

প্রান্তিককরণের কারণে 4 টি বাইট অপচয় হয়, কীভাবে সেগুলি গল্ফ করবেন তা নিশ্চিত নন। ¯ \: _ (ツ): _ / ¯

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