সেভেন স্ল্যাশ ডিসপ্লে


99

এমন একটি প্রোগ্রাম লিখুন যা 0 থেকে 9 এর মধ্যে অঙ্কগুলির একটি খালি খালি স্ট্রিংয়ের মধ্যে নিয়ে যায় এবং কীভাবে সেগুলি স্ল্যাশ ( , ) ব্যবহার করে সাতটি বিভাগে প্রদর্শন করা হবে তা মুদ্রণ করে ।/\

এগুলি হ'ল অঙ্কের আকার:

/\  
\ \
 \/

 \
  \


/\
 /
 \/

/\
 /\
  /

 \
\/\

/
\/\
  /

/
\/\
 \/

/\
  \

/\
\/\
 \/

/\
\/\
  /

যখন একের পর এক অঙ্ক হয় তখন সেগুলি তির্যকভাবে উপরে এবং ডানদিকে জড়িত থাকে যার মাঝখানে একটি তির্যক স্থান থাকে। সুতরাং, উদাহরণস্বরূপ, 203এটি হয়ে উঠবে:

    /\
     /\
  /\  /
  \ \
/\ \/
 / 
 \/

নোট করুন যে 1চরিত্রটি অন্যদের মতো সমান পরিমাণ স্থান নেয়। এর দুটি লাইন 1বামদিকে নয়, প্রদর্শনটির ডানদিকে রয়েছে।

সুতরাং 159114এটি হয়ে যাবে:

           \
          \/\
         \
          \
       \
        \
    /\
    \/\
  /   /
  \/\
 \  /
  \

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

সুতরাং 159114, এটিও বৈধ হবে:



          \        
         \/\     
        \
         \
      \    
       \          
   /\     
   \/\
 /   /
 \/\         
\  /
 \    


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

9 মাধ্যমে ডিজিটের 0 যেকোনো নন-খালি স্ট্রিং কাজ করা উচিত, একক সংখ্যা স্ট্রিং (যেমন সহ 8) এবং বসানো শূন্যগুলি সঙ্গে স্ট্রিং (যেমন 007, শূন্য না মুদ্রিত করা প্রয়োজন)।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


41
পুরোপুরি অফটোপিক: দুর্দান্ত দেখাচ্ছে!
মার্টিজন

4
এই সত্যিই সত্যিই, শান্ত. তবে, আমি নিশ্চিত নই যে এই প্রশ্নের জন্য কলমোগোরভ-জটিলতা উপযুক্ত - আমি ভেবেছিলাম যে এর জন্য একটি ধ্রুবক আউটপুট প্রয়োজন?
আলেকজান্ডার-ব্রেট

1
@ আলেকজান্ডার-ব্রেট আইরিকটি মূল উদ্দেশ্য ছিল, তবে, সম্প্রতি এটি সমস্যার জন্য ব্যবহার করা হয়েছে যেখানে সম্ভবত বেশিরভাগ কোড সম্ভবত হার্ডকোডিং হতে চলেছে।
ভূগর্ভস্থমোরাইল

এটি আমার মতো হয়ে উঠেছে ... বাহ! এইমাত্র!
রেনে লিডার

প্রশ্ন: অ-অঙ্কের অক্ষরগুলি সহ আমাদের খালি স্ট্রিং বা স্ট্রিংগুলি পরিচালনা করতে হবে?
ফ্রেডরিক

উত্তর:


9

সিজেম, 77 71 70 69 63 62 বাইট

r_,5*_Sa*a*\{~"÷Ðëúܾ¿ðÿþ"=i2bS"\/"4*W<+.*3/..e>2fm>2m>}/Wf%N*

সমস্ত অক্ষর মুদ্রণযোগ্য, সুতরাং অনুলিপি এবং পেস্ট ঠিক কাজ করা উচিত।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

ধারণা

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

2n + 1 দৈর্ঘ্যের একটি বর্গক্ষেত্রটি সরল বাস্তবায়নের জন্য ঠিক ডানদিকে (অর্থাত্ কোনও আশেপাশের সাদা অংশ নয়) হবে, তবে আমরা কয়েক বাইট সংরক্ষণ করতে 5n দৈর্ঘ্যের একটি ব্যবহার করব । ধন্যবাদ, আশেপাশের সাদা স্থান অনুমোদিত।

যদি আমরা 8 এর সাতটি স্ল্যাশ উপস্থাপনার লাইনগুলিকে বিপরীত করি তবে আমরা নিম্নলিখিতটি পাই:

 \/
\/\
/\

সমস্ত অঙ্কের উপস্থাপনাটি 8-বিট পূর্ণসংখ্যা হিসাবে এনকোড করা যায়, যেখানে i তম বিট 0 হয় যদি i তম অক্ষরটি একটি স্থানের সাথে প্রতিস্থাপন করা উচিত। 0 থেকে 9 সংখ্যাগুলির জন্য , ফলাফলগুলি পূর্ণসংখ্যা হয়

247 208 235 250 220 190 191 240 255 254

যা নিম্নলিখিত ISO-8559-1 অক্ষরের সাথে মিলে যায়:

÷Ðëúܾ¿ðÿþ

ইনপুট প্রতিটি অঙ্ক জন্য, সংশ্লিষ্ট 8-বিট পূর্ণসংখ্যা নির্বাচন করার পরে, আমরা আমি আবার বলছি তম প্রতিনিধিত্ব চরিত্র 8 ঠিক একটি আমি বার, যেখানে একটি আমি আমিই সে ব্যক্তি তম পূর্ণসংখ্যা বিট। এটি এক বা শূন্য বর্ণের একটি স্ট্রিংয়ের অ্যারেকে ঠেলে দেয়। 3 টি দৈর্ঘ্যের অংশগুলিতে এই অ্যারেটি ভাগ করে আমরা একটি অ্যারে পাই যেখানে প্রতিটি উপাদান প্রতিনিধিত্বের একটি লাইনের সাথে মিলে যায়।

এখন, আমরা বর্গটি প্রতিনিধিত্ব করে এমন স্ট্রিংগুলির সর্বাধিক ভেক্টরাইজড সারণি এবং অঙ্কটি উপস্থাপন করে এমন স্ট্রিংগুলি গণনা করি। স্ট্রিংগুলি স্ট্রিংয়ের চেয়ে বড় /এবং তাই তারা স্কোয়ারের স্থানগুলি প্রতিস্থাপন করবে। খালি স্ট্রিংটি তবে স্ট্রিংয়ের চেয়ে ছোট , সুতরাং অঙ্ক উপস্থাপনের ফাঁকা স্ট্রিংগুলি স্কোয়ারের ফাঁকা স্থান সংরক্ষণ করবে।\  

বর্গের যথাযথ অংশে নিম্নলিখিত অঙ্কের উপস্থাপনা রাখার জন্য আমরা এখন দুটি ইউনিট দ্বারা সারি এবং কলামগুলি ঘোরান এবং ইনপুটটিতে বাকী অঙ্কগুলির প্রক্রিয়াটি পুনরাবৃত্তি করি।

অবশেষে, আমরা প্রতিটি সারি বিপরীত করি এবং পৃথক সারিগুলির মধ্যে একটি লাইনফিড সন্নিবেশ করি।

কোড

r_,      e# Read a token from STDIN and push the length of a copy.
5*_      e# Multiply the length by 5 and push a copy.
Sa*      e# Repeat the array [" "] that many times.
a*       e# Repeat the array [[" " ... " "]] that many times.
\{       e# For each character C in the input:
  ~      e#   Push eval(C), i.e., the digit the character represents.

  "÷Ðëúܾ¿ðÿþ"

         e#   Push the encodings of all 10 seven slash representations.

  =      e#   Select the proper one.
  i2b    e#   Push the resulting characters code point in base 2, i.e., its bits.
  S      e#   Push " ".
  "\/"4* e#   Push "\/\/\/\/".
  +W<    e#   Concatenate and eliminate the last character.
  .*     e#   Vectorized repetition.

         e#   For the digit 5, e.g., we have [1 0 1 1 1 1 1 0] and  " \/\/\/\" on
         e#   the stack, so .* yields [" " "" "/" "\" "/" "\" "/" ""].

  3/     e#   Divide the representation into chunks of length 3, i.e., its lines.
  ..e>   e#   Compute the twofold vectorized maximum, as explained above.
  2fm>   e#   Rotate each line to characters to the right.
  2m>    e#   Rotate the lines two units down.
}/
Wf%      e# Reverse each line.
N*       e# Place linefeeds between them.

বর্গাকার পার্শ্বের দৈর্ঘ্য 2n + 3 এর চেয়ে কম হলে শেষ আবর্তনগুলি আউটপুট জগাখিচুড়ি করে । যেহেতু 5n ≥ 2n +3 সব ধনাত্মক পূর্ণসংখ্যা জন্য এন , বর্গাকার যথেষ্ট বড় এটিকে রোধ হয়।


আপনার কোডের একটি বেস 64 সংস্করণটি এখানে পোস্ট করা কি বুদ্ধিমানের কাজ হবে?
ট্রিগ

1
+1, তবে সত্যি কথা বলতে, আমি আশা করছিলাম সি জ্যাম এট আল। এটি এক জায়গায় বসে থাকবেন: পি
প্রিমো

@ প্রিমো: পাইথ এবং গণিত প্রশ্নগুলির বিষয়ে আমি একইভাবে অনুভব করি। : পি আমি পার্টিতে কিছুটা দেরি করেছি কারণ রিয়ারঞ্জিং ওয়ার্ডসের মাধ্যমে আমি অস্থির হয়ে পড়েছি । আজ সকালে আপনার সম্পাদনা হওয়া অবধি আমার এই প্রশ্নটির কথা মনে পড়ে গেল।
ডেনিস

@ ডেনিস চ্যালেঞ্জগুলি তারা আগের চেয়ে অনেক দ্রুত এগিয়ে চলেছে বলে মনে হয়। আমি এখনও দু'সপ্তাহ আগে থেকে একটি নিয়ে কাজ করছি: পি
প্রিমো

1
আমি সর্বদা সিজেএম-এর প্রত্যাশা নিয়ে প্রথমে সন্ধান করি এটির সর্বনিম্ন বাইট গণনা হবে। আমি এখনও হতাশ হতে হবে।
ইঞ্জিনিয়ার টোস্ট

25

পাইথন 3, 189 183 174 বাইট

s="a%sa"%input()
while s[1:]:b,a,c,d,e,f,g=[c*(ord(n)>>int(s[~(n>"Ͱ")],16)&1)or" "for c,n in zip("\/"*4,"ΟϭŅͭͱͼϻ")];S=len(s)*"  ";print(S+a+b,c+d+"\n"+S+e+f+g);*s,_=s

সংকোচনের বিষয়টি আমার কাছে ঠিক আছে তবে সাতটি ভেরিয়েবলগুলি খনন করার ভাল উপায় নিয়ে আমার সমস্যা হচ্ছে ...

কৃতজ্ঞতাবশত স্পেকটি স্পেস স্পেসের নিয়মগুলিতে মোটামুটি শিথিল, কারণ প্রচুর নেতৃস্থানীয় / পিছনের সাদা জায়গা রয়েছে।

সম্প্রসারিত:

s="a%sa"%input()
while s[1:]:
  b,a,c,d,e,f,g=[c*(ord(n)>>int(s[~(n>"Ͱ")],16)&1)or" "
                 for c,n in zip("\/"*4,"ΟϭŅͭͱͼϻ")]
  S=len(s)*"  "
  print(S+a+b,c+d+"\n"+S+e+f+g)
  *s,_=s

ব্যাখ্যা

ভেরিয়েবল দ্বারা প্রতিনিধিত্ব করা বিভাগগুলির অবস্থানগুলি হ'ল:

    ab               /\
    efg               /\
  ab cd            /\  /
  efg              \ \
ab cd            /\ \/
efg               /
 cd               \/

প্রতিটি বিভাগকে একক 2-বাইট ইউনিকোড অক্ষর দ্বারা এনকোড করা হয়। উদাহরণস্বরূপ, ϻএনকোডের gবিভাগটি এর মতো:

bin(ord("ϻ")) = bin(1019) = "0b1111111011"
                               ^^^^^^^^^^
                               9876543210

প্রকৃতপক্ষে, 2সাতটি বিভাগের প্রদর্শনের নীচে-ডান অংশটি ব্যবহার না করার জন্য এটিই একমাত্র অঙ্ক।


19

সি, 1098 345 323 319 বাইট

প্রথম দ্বিতীয় তৃতীয় প্রচেষ্টা। অবশেষে কয়েকটি বাইট সংরক্ষণের জন্য স্ক্রিন বাফারটি খাঁজ করার সিদ্ধান্ত নিয়েছে। এই প্রোগ্রামটি অঙ্কগুলির একটি প্যারামিটার নেয় এবং 7-বিভাগের বিন্যাসে অঙ্কগুলি মুদ্রণ করে।

প্রথমবারের অংশগ্রহণকারী। শুধুই মজার জন্য. ভদ্র হও.

a[]={100489,2056,98569,67849,2440,67969,100737,2057,100745,67977},i,j,k,n,m;char*c=" /\\";
#define f(q,r) for(q=0;q<(r);q++)
#define P(w) putchar(w)
#define Q(d,i,j) P(c[a[v[1][d]-48]>>(i*3+j)*2&3])
main(w,char**v){f(i,n=strlen(v[1]))f(k,(m=n-i-1)?2:3){f(j,m*2)P(32);f(w,3)Q(m,k,w);if(!k&&i)f(w,2)Q(m+1,2,w+1);P(10);}}

প্রসারিত, সতর্কতা মুক্ত:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int a[]={100489,2056,98569,67849,2440,67969,100737,2057,100745,67977};
char *c=" /\\";
#define f(q,r) for(q=0;q<(r);q++)
#define P(w) putchar(w)
#define Q(d,i,j) P(c[a[v[1][d]-48]>>(i*3+j)*2&3])
int main(int w, char **v)
{
    int i,j,k,n,m;
    f(i,n=strlen(v[1])) {
        m=n-i-1;
        f(k,m?2:3) {
            f(j,m*2) P(32);
            f(w,3) Q(m,k,w);
            if (!k&&i) f(w,2) Q(m+1,2,w+1);
            P(10);
        }
    }
}

পশ্চিমের দ্রুততম বন্দুক আমি এখন আমার কম্প্রেস করছি।
আলেক্সি বার্ডিন

15
হে! কোড গল্ফ স্বাগতম। এই চ্যালেঞ্জের উদ্দেশ্যটি হল আপনার কোডটি যত তাড়াতাড়ি সংক্ষিপ্ত করা, তাই স্পেসগুলি সরিয়ে দেওয়ার, সংক্ষিপ্ত বিবৃতি ইত্যাদির বিষয়ে আপনার কিছুটা অপ্টিমাইজেশন করা উচিত এবং তারপরে আপনার পোস্টের শীর্ষে আপনার বাইট গণনাটি ভাষায় প্রতিবেদন করুন। যদিও দুর্দান্ত প্রথম পোস্ট! কেবলমাত্র রেফারেন্সের জন্য, আপনার প্রাথমিক পোস্টটি 1,098 বাইট দীর্ঘ।
কেদে

ধন্যবাদ। সবেমাত্র ভাষা এবং বাইট গণনা যুক্ত করেছেন। আমার মূল এমনকি মন্তব্য এবং ব্যবহার আছে। :)
কিছু ব্যবহারকারী

টিপ: সমস্ত পরিবর্তনশীল নাম একক অক্ষরে পরিবর্তন করুন। এছাড়াও, আপনি i এর জন্য (i = 0; i <ডিজিট`` অনেক বেশি, সম্ভবত এটি কোনও ম্যাক্রো দিয়ে প্রতিস্থাপন করবেন?
জোশপবারন

এখানে ভাল কাজ। আপনার স্কোরকে আরও প্রতিযোগিতামূলক করতে আপনি সি তে গল্ফ করার জন্য আমাদের টিপসটি একবার দেখে নিতে পারেন ।
অ্যালেক্স এ।

14

জাভাস্ক্রিপ্ট, 192 178 167 162 বাইট

f=x=>{n=b="\n";for(k in x)for(i=0;i<8;)b+=("î\xA0Öô¸|~àþü".charCodeAt(x[k])>>i++&1?i%2?"/":"\\":" ")+(i%3?"":n+"  ".repeat(k));return b.split(n).reverse().join(n)}

ব্যবহার: f("1337");ফিরে আসবে

      /\
        \
    /\   
     /\
  /\  /
   /\
 \  /
  \

এটি ES6 এর বৈশিষ্ট্যগুলি ব্যবহার করে এবং সেমিকোলন এবং প্রথম বন্ধনী এবং এরকম কিছু বাদ দেওয়ার কারণে কিছু বাস্তবায়ন নির্ভরশীল আচরণ থাকতে পারে তবে এটি ফায়ারফক্সে কাজ করে।

সম্প্রসারিত:

f=x=>
{
    n = b = "\n";

    for (k in x)
        for (i=0; i<8;)
            b += ("î\xA0Öô¸|~àþü".charCodeAt(x[k]) >> i++ & 1? i%2? "/" : "\\" : " ") + (i%3? "" : n+"  ".repeat(k));

    return b.split(n).reverse().join(n)
}

ব্যাখ্যা:

l10 টি একক বাইট অক্ষর সমন্বিত একটি অ্যারে যা প্রতিটি অঙ্কের আকারের সাথে মিলে যায়। উদাহরণস্বরূপ, 0 সংখ্যাটি অক্ষর দ্বারা প্রতিনিধিত্ব করা হয় î:

/\        11
\ \  -->  101  --> 11 101 110 = î
 \/       011

ইনপুট অক্ষরগুলি তাদের আকারের প্রতিনিধিত্ব করে এমন অ্যারের কী হিসাবে ব্যবহৃত হয়, যা কিছুটা পর্যায়ক্রমে পড়ে।


2
হয় ==0এবং ==1সামনে প্রকৃতপক্ষে প্রয়োজনীয় ?। জেএস-এ বুলিয়ান হিসাবে বিবেচনা করা হয় না? @ রেগ্রেট
আলেক্সি

1
@ রেগ্রেট: "w\x05k/\x1D>~\x07\x7F?"প্রতিটি চরিত্রের সাথে বিটওয়াস বিপরীত হয়ে যায় "\xee\xa0\xd6\xf4\xb8|~\xe0\xfe\xfc", এর প্রতিটি মুদ্রণযোগ্য। এটি আরও 8 টি বাইট দেয়। যদিও, যথেষ্ট নয় ...
আলেক্সি বুর্দিন

1
এতে প্রথম বন্ধন মুছে ফেলতে আপনি 2 বাইট শেভ করতে পারেন f=(x)=>{}- কেবলমাত্র একটি যুক্তি দিয়ে তাদের প্রয়োজন হয় না।
স্কিমনস্টার

আপনি একেবারে ঠিক বলেছেন, অ্যালেক্সা। আমি এটা পরিবর্তন করব।
আফসোস

এটা কি কাজ করে? আমি উত্সাহী অক্ষর সহ আরও 6 টি সারি পাই।
edc65

10

পার্ল - 103 বাইট

#!perl -n
print$i+$%2?U^(u,$i--%2?v9:z)[$i<4+$%2&vec$_,4*$-3-$i,1]:$/.!($i=$--)
while$+=2*y/0-9/wPkz\\>?p~/

উপরেরগুলিতে 6 টি অপ্রিন্টযোগ্য অক্ষর রয়েছে (উত্সটি আইডিয়নে ডাউনলোড করা যায় ), এবং নিম্নলিখিতগুলির সমতুল্য:

#!perl -n
print$i+$^F%2?U^(u,$i--%2?v9:z)[$i<4+$^F%2&vec$_,4*$^F-3-$i,1]:$/.!($i=$^F--)
while$^F+=2*y/0-9/wPkz\\>?p\177~/

প্রত্যেকে ^Fএকটি আক্ষরিক অক্ষর 6 (ACK) দ্বারা প্রতিস্থাপিত হতে পারে, এবং \177অক্ষর 127 (ডেল) দ্বারা প্রতিস্থাপিত হতে পারে ।

শেবাংটি 1 হিসাবে গণনা করা হয়, দ্বিতীয় নতুন লাইনটি অনিয়মিত। স্ট্যান্ডিন থেকে ইনপুট নেওয়া হয়।


নমুনা ব্যবহার

$ echo 0123 | perl seven-slash.pl

      /\
       /\
    /\  /
     /
   \ \/
    \
/\
\ \
 \/

$ echo 456789 | perl seven-slash.pl

          /\
          \/\
        /\  /
        \/\
      /\ \/
        \
    /
    \/\
  /  \/
  \/\
 \  /
\/\

ব্যাখ্যা

আউটপুট এক সময় এক বাইট উত্পাদিত হয়। প্রতিটি অক্ষর অনুলিপি করা হয় এবং এর পরে এটি ব্যবহার করে কিছুটা অ্যারে হিসাবে ব্যাখ্যা করা হয় vec। বিটগুলি নিম্নলিখিত উপায়ে সংরক্ষণ করা হয়:

   /\           56 
   \/\          234
 /\ \/   ->   56 01
 \/\          234 
  \/           01

3 এবং 5 টি স্ল্যাশের মধ্যে আউটপুট বিকল্প হয়, যাতে বিটগুলি পরবর্তী অঙ্কের 56মধ্যে ছড়িয়ে পড়ে 01। বিট 7ব্যবহার করা হয় না।


8

সি #, 360 355 331 বাইট

হাই, এখানে প্রথম চেষ্টা-গল্ফ আশা করি এটি কোনও সি #-সেন্ট্রির জন্য খুব খারাপভাবে স্কোর করবে না।

string p(string n){var l=new string[n.Length*2+1];var i=l.Length-1;for(;i>0;){var x=@"/\\ \\/ \  \  /\ / \//\ /\ / \\/\  / \/\ // \/\\//\  \  /\\/\\//\\/\ /".Substring((n[0]-48)*7,7);for(var j=i-3;j>=0;){l[j--]+="  ";}l[i--]+=" "+x[5]+x[6];l[i--]+=""+x[2]+x[3]+x[4];l[i]+=""+x[0]+x[1];n=n.Remove(0, 1);}return string.Join("\n",l);}

ব্যবহার: p("159114");ফিরে আসবে

          \
         \/\
        \
         \
      \
       \
   /\
   \/\
 /   /
 \/\
\  /
 \

সম্প্রসারিত:

string p(string n)
    {
        var l = new string[n.Length * 2 + 1];
        var i = l.Length - 1;
        for (; i > 0; )
        {
            var x = @"/\\ \\/ \  \  /\ / \//\ /\ / \\/\  / \/\ // \/\\//\  \  /\\/\\//\\/\ /".Substring((n[0] - 48) * 7, 7);

            for (var j = i - 3; j >= 0; )
            {
                l[j--] += "  ";
            }
            l[i--] += " " + x[5] + x[6];
            l[i--] += "" + x[2] + x[3] + x[4];
            l[i] += "" + x[0] + x[1];

            n = n.Remove(0, 1);
        }

        return string.Join("\n", l);
    }

1
আমি জানি এটি প্রায় তিন বছর হয়েছে, তবে আপনি 30 বাইট গল্ফ করতে পারেন: এটি অনলাইনে চেষ্টা করুন Try 301 বাইট । ভাল উত্তর যদিও, আমার কাছ থেকে +1।
কেভিন ক্রুইজসেন

কুল। আপনার নিজের উত্তর হিসাবে এটি তখন পোষ্ট করতে :) নির্দ্বিধায়
Shion

1
না এটি আপনার কোড আমি মাত্র লুপ বন্ধনীগুলি সরিয়ে এবং ভেরিয়েবলগুলি একত্রিত করে কিছুটা ছোট করেছি ten এবং ল্যাম্বডা ব্যবহার করে পরিবর্তিত string s(string n)হচ্ছে n=>। আহ ভাল, আপনি যদি পছন্দ করেন তবে ঠিক এটি ছেড়ে দিতে পারেন। :) তবে জাভাতে আপনাকে জমা দেওয়ার জন্য আমি একটি বন্দর তৈরি করেছি। ;)
কেভিন ক্রুইজসেন 14

4

অজগর 2, 317 298 278 273.15

def f(s):
    r=range;n=len(s)*2;l=[[' ']*-~n for x in r(-~n)]
    for x in r(0,n,2):
        for i,[d,y,c]in enumerate(zip('0112012','1021012',r'\\\\///')):l[n-2-x+int(y)][x+int(d)]=[' ',c][('%7s'%(bin(ord('}(7/jO_,\x7fo'[map(int,s)[x/2]])))[2:])[i]=='1']
    for x in l:print''.join(x)

আমি গণনা করার সময় 4 টি স্পেসটিকে ট্যাব হিসাবে বিবেচনা করেছি।
সঙ্কুচিত এবং পাঠযোগ্য:

def f(s):
    r=['1111101','0101000','0110111','0101111','1101010','1001111','1011111','0101100','1111111','1101111']
    ''.join(map(lambda x:chr(eval('0b'+x)),r))
    n=len(s)*2
    l=[[' ']*(n+1) for x in xrange(n+1)]
    shifts=[(0,1,'\\'),(1,0,'\\'),(1,2,'\\'),(2,1,'\\'),(0,0,'/'),(1,1,'/'),(2,2,'/')]
    for x in xrange(0,n,2):
        y=n-2-x
        for i,[dx,dy,c] in enumerate(shifts):
            l[y+dy][x+dx]=c if r[map(int,s)[x/2]][i]=='1' else ' '
    return '\n'.join(''.join(x) for x in l)

হে! দুর্দান্ত উত্তর, তবে এটিকে আরও খাটো করার জন্য আপনি কয়েকটি পরিবর্তন করতে পারেন। পরিবর্তন l[y+dy][x+dx]=c if r[map(int,s)[x/2]][i]=='1' else ' 'করার জন্য l[y+dy][x+dx]=[' ',c][r[map(int,s)[x/2]][i]=='1']5 বাইট সংরক্ষণ করে, পরিবর্তন return '\n'.join(''.join(x) for x in l)করার জন্য print'\n'.join(''.join(x)for x in l)3 বাইট, প্লাস আরো কয়েকটি পরিবর্তন সংরক্ষণ করে। এখানে একটি গিস্টের লিঙ্ক এখানে আমি বাইট গণনাটি পেয়েছিলাম ৪০৪ থেকে ৪৪০
কেড

6
কেলভিন সেই স্কোর নিয়ে খুব খুশি হত।
ক্রিশ্চিয়ান লুপাস্কু

3
আপনার উত্তরটি আসলে ২ 27২ বাইট, তবে আপনি আরও একটি সংরক্ষণ করতে পারবেন কারণ কোনও স্থান কোনও ট্যাবের চেয়ে কম is এখানে দেখুন । আপনার কীভাবে 273.15 বাইট থাকতে পারে?
mbomb007

1
273.15 বাইটের অর্থ @ অ্যালেক্সিবার্ডিন ডিজিটাল প্ল্যাটফর্মে এনালগ কম্পিউটিং বের করেছে। বিজ্ঞানের পরিবর্তে আপনি কেন পৃথিবীতে প্রকাশ করেছেন? ;-)
hBy2Py

1
এর অর্থ কেবলমাত্র সমাধানটি নিরঙ্কুশ শূন্যে হিমায়িত হয়ে গেছে, অর্থাৎ আমি ইতিমধ্যে হারিয়ে যাওয়া কোনও জিনিসে ফোকাস করতে চাই না । :)
আলেক্সি বার্ডিন

3

কেডিবি (কিউ), 172 136 বাইট

{d:(9#1 2 0 2)*/:-9#'0b vs'427 136 403 409 184 313 315 392 443 441;
 -1" /\\"{m+(c,/:y),c:(count[m:0 0,x,\:0 0]-3)#0}/[3 3#/:d"J"$'(),x];}

ব্যাখ্যা

1) dসমস্ত অঙ্কের আকার দিয়ে মানচিত্র তৈরি করুন ।

2) অতিরিক্ত শূন্য সহ ম্যাট্রিক্স প্যাড করুন এবং তাদের একসাথে যুক্ত করুন। যেমন "01"

0           0 0 0 2 0   
0           0 0 0 0 2
1 2 0 0 0 + 0 0 0 0 0
2 0 2 0 0   0
0 2 1 0 0   0

3) মানচিত্র " /\"এবং মুদ্রণের জন্য সূচকটি ব্যবহার করুন -1

পরীক্ষা

q){d:(9#1 2 0 2)*/:-9#'0b vs'427 136 403 409 184 313 315 392 443 441;-1" /\\"{m+(c,/:y),c:(count[m:0 0,x,\:0 0]-3)#0}/[3 3#/:d"J"$'(),x];}"0123456789"
                  /\
                  \/\
                /\  /
                \/\
              /\ \/
                \
            /
            \/\
          /  \/
          \/\
         \  /
        \/\
      /\
       /\
    /\  /
     /
   \ \/
    \
/\
\ \
 \/

আমি নিশ্চিত যে এটি আরও খাটো হতে পারে !!

ধন্যবাদ @ hjk


1
আমি কেবলমাত্র হ্রাস হ'ল (-6) 1 2 0 2 1 2 0 2 1দিয়ে প্রতিস্থাপন করব (9#1 2 0 2)
hjk

1
ওহ, এবং কাজের enlistসাথে প্রতিস্থাপন 1#, যাতে এটি অন্য -5।
hjk

1
আপনি একজন তারকা! আমি আপডেট করব! তবে এটি প্রতিস্থাপন করতে পারবেন enlistনা কারণ count[a 0]#0এটি পরমাণু নয় :(
WooiKent Lee

আহ আশ্চর্যজনক এটি আমার পক্ষে কাজ করেছে যদিও ... অবশ্যই এক বিচলিত হতে হবে। ;)
hjk

1
আসলে, তালিকা প্লাস পরমাণু যাইহোক যাইহোক সঠিক দৈর্ঘ্য এ পরমাণু প্রসারিত হবে! আপনি আমাকে এই ধরনের প্রক্রিয়া মনে করিয়ে দিয়েছিলেন! : ডি
ওউইকেন্ট লি

2

পিপ, 122 + 1 = 123 বাইট

-nপতাকা ব্যবহার করে । কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে ইনপুট নেয়।

l:$.(J"\/ "@^(A_TB3M"⮐䫶ヷ㄃䓳ⴷⴥㅕ⬿⭑")@_.2<>2Ma)z:2*#ap:sXz+2RLz+2Fi,5Fj,z{c:[4-ii]//2+j(pc@0c@1):(lij)}RVp

: হল UTF-8 স্ট্রিং অক্ষর নিম্নলিখিত কোড পয়েন্ট আছে 11152, 19190, 12535, 12547, 17651, 11575, 11557, 12629, 11071, 11089

সামান্য শৃঙ্খলাবদ্ধ:

t:[120022001 222022202 122012021 122012201 220012202 120212201 120212001 122022202 120012001 120012201]
l:$.({J"\/ "@^t@a.2<>2}Ma)
z:2*#a+2
p:sXzRLz
Fi,5
 Fj,2*#a {
  x:i//2+j
  y:(4-i)//2+j
  p@y@x:l@i@j
 }
P RVp

মূল কৌশলটি হ'ল প্রতিটি সংখ্যার উপাদানগুলির অক্ষরগুলি খুঁজে বের করে তারপরে যথাযথভাবে স্কু করা। উদাহরণস্বরূপ, এর জন্য 8, আমরা এটি চাই (বিন্দু দ্বারা চিহ্নিত স্থান):

/.
\\
/.
\\
/.

যা এতে পরিণত হবে:

 .  
/\. 
\/\.
 \/ 

এই কৌশলটির দুর্দান্ত বৈশিষ্ট্যটি হ'ল একাধিক প্রাক-স্কিউ সংখ্যাগুলি পাশাপাশি পাশাপাশি সংযুক্ত করা যায়।

এখন, আমরা /.\\/.\\/.বেস 3 হিসাবে এনকোড করতে পারি 1200120012। তারপরে আমরা এটিকে দশমিক রূপান্তর করতে এবং এটি একটি ইউটিএফ -8 কোড পয়েন্ট হিসাবে বিবেচনা করতে পারি।

J"\/ "@^(A_TB3M"⮐䫶ヷ㄃䓳ⴷⴥㅕ⬿⭑")@_.2<>2Maনিম্নলিখিত প্রক্রিয়া দ্বারা অভিব্যক্তি প্রাক স্কিউ ডেটা পায়:

                            Ma   Map this lambda function to each character in input:
        (A_TB3M"...")            Create list of the code points of each character in UTF-8
                                   string, converted to base 3
                     @_          Index into that list using the input character
                       .2        Concatenate 2 to the end of the base-3 value (all of the
                                   pre-skewed number grids end in 2, i.e. space)
       ^                         Split the number into a list of its digits
 "\/ "@                          Index into this string with those digits, giving a list
                                   of slashes & spaces
J                                Join the list together into a string
                         <>2     Group string two characters at a time

একবার এই স্ট্রিংগুলি পাশাপাশি ব্যবহারের সাথে সংঘবদ্ধ করার পরে আমরা $.স্পেসগুলির একটি গ্রিড তৈরি করব (2 * n +2 বর্গ), প্রাক স্কিউড গ্রিডের মধ্য দিয়ে লুপ করব এবং পোস্ট-স্কিউড গ্রিডের সাথে সম্পর্কিত স্থানগুলি প্রতিস্থাপন করব উপযুক্ত অক্ষর। এটি ঘটছে তা দেখতে, প্রতিটি পর্যায়ে মুদ্রণের জন্য কেউ কোডটি পরিবর্তন করতে পারেন এবং ব্যবহারকারীর ইনপুটটির জন্য বিরতি দিতে পারেন:

প্রক্রিয়াধীন অ্যালগরিদম

গ্রিডটি আসলে উল্টোদিকে নির্মিত, কারণ এটি গণিতকে আরও সহজ করে তোলে বলে মনে হয়েছিল।

আমি নিশ্চিত যে ব্যবহারের জন্য আরও ভাল অ্যালগরিদম আছে। তবে আমি অন্য কারও অনুলিপি না করে নিজের ধারণাটি নিয়ে আসতে চেয়েছিলাম।

পাইপে আরও


2

ব্রেইনফাক - 719 বাইট

শুধুমাত্র historicalতিহাসিক প্রসঙ্গে, ক্রেডিট ড্যানিয়েল বি ক্রিসটোফানিকে। আমি কখন নিশ্চিত হয়েছি এটি কখন তৈরি হয়েছিল, তবে এটি ইন্টারনেট সংরক্ষণাগার থেকে 9 ই মে 2003 এর প্রথম দিকে পাওয়া যায় ।

9সমস্যার বর্ণনার চেয়ে আউটপুট আলাদা।

>>>>+>+++>+++>>>>>+++[
  >,+>++++[>++++<-]>[<<[-[->]]>[<]>-]<<[
    >+>+>>+>+[<<<<]<+>>[+<]<[>]>+[[>>>]>>+[<<<<]>-]+<+>>>-[
      <<+[>]>>+<<<+<+<--------[
        <<-<<+[>]>+<<-<<-[
          <<<+<-[>>]<-<-<<<-<----[
            <<<->>>>+<-[
              <<<+[>]>+<<+<-<-[
                <<+<-<+[>>]<+<<<<+<-[
                  <<-[>]>>-<<<-<-<-[
                    <<<+<-[>>]<+<<<+<+<-[
                      <<<<+[>]<-<<-[
                        <<+[>]>>-<<<<-<-[
                          >>>>>+<-<<<+<-[
                            >>+<<-[
                              <<-<-[>]>+<<-<-<-[
                                <<+<+[>]<+<+<-[
                                  >>-<-<-[
                                    <<-[>]<+<++++[<-------->-]++<[
                                      <<+[>]>>-<-<<<<-[
                                        <<-<<->>>>-[
                                          <<<<+[>]>+<<<<-[
                                            <<+<<-[>>]<+<<<<<-[
                                              >>>>-<<<-<-
  ]]]]]]]]]]]]]]]]]]]]]]>[>[[[<<<<]>+>>[>>>>>]<-]<]>>>+>>>>>>>+>]<
]<[-]<<<<<<<++<+++<+++[
  [>]>>>>>>++++++++[<<++++>++++++>-]<-<<[-[<+>>.<-]]<<<<[
    -[-[>+<-]>]>>>>>[.[>]]<<[<+>-]>>>[<<++[<+>--]>>-]
    <<[->+<[<++>-]]<<<[<+>-]<<<<
  ]>>+>>>--[<+>---]<.>>[[-]<<]<
]
[Enter a number using ()-./0123456789abcdef and space, and hit return.
Daniel B Cristofani (cristofdathevanetdotcom)
http://www.hevanet.com/cristofd/brainfuck/]

2
আমি সম্ভবত এটি ২০০২ সালে লিখেছিলাম। ইন্টারনেট সংরক্ষণাগার বলছে পানু ক্যালিয়োকোস্কি এটি আগস্ট ২০০২ সালে তার ব্রেইনফাকের ভাণ্ডারে যুক্ত করেছিলেন। 9 হিসাবে, আমি মনে করি যে আমি মাইক্রোপ্রসেসর এবং ইন্টারফেসিংয়ের দ্বিতীয় সংস্করণ , পৃষ্ঠা 4 এর নিদর্শনগুলি ব্যবহার করেছি ।
ড্যানিয়েল ক্রিস্টোফানি

1

পার্ল, 270 বাইট

সত্যিই আমার এই সময় নষ্ট করা উচিত ছিল না।

$e="\\";$g=" ";$_=reverse<>;$l=length;push@a,(119,18,107,91,30,93,125,19,127,95)[$1]while/(.)/g;for($i=0;$i<=$l;$i++){$j=2*($l-$i);$b=$a[$i];$c=$i&&$a[$i-1];print" "x$j,$b&1?"/":$g,$b&2?$e:$g,$g,$c&32?$e:$g,$c&64?"/":$g,"
"," "x$j,$b&4?$e:$g,$b&8?"/":$g,$b&16?$e:$g,"
"}

প্রতিস্থাপন [$1]while/(.)/gসঙ্গে [$_]for/./g4 বাইট সংরক্ষণ করুন। প্রতিস্থাপন for($i=0;$i<=$l;$i++)সঙ্গে for$i(0..$l)9 বাইট সংরক্ষণ করুন।
hobbs

1

জাভাস্ক্রিপ্ট ( ES6 ), 191 206

পরীক্ষার জন্য ফায়ারফক্সে স্নিপেট চালান।

F=m=>(
  a='    \\/  /\\/\\ /  /\\  \\\\ \\'.match(/.../g),
  o=f='',r=' ',
  [for(d of m)(
    n=1e3+'¯B\x91ÿ$ê\x86A\x87ë'.charCodeAt(d)+'', // here there are 3 valid characters tha the evil stackoverflow editor just erase off, so I had to put them as hex escape
    o='\n'+f+' '+a[n[2]]+'\n'+r+a[n[1]]+o,
    r=f+a[n[3]],
    f+='  ')],
  r+o
)


//TEST

go=_=>O.innerHTML =(v=I.value)+'\n'+F(v)

go()
<input id=I value='0123456789'><button onclick='go()'>-></button>
<pre id=O></pre>


0

জাভা 8, 341 বাইট

n->{int i=n.length*2,j=i+1,k=0,t;String l[]=new String[j],x;for(;j-->0;l[j]="");for(;i>0;l[i--]+=" "+x.substring(5,7),l[i--]+=x.substring(2,5),l[i]+=x.substring(0,2))for(x="/~~ ~~/ ~  ~  /~ / ~//~ /~ / ~~/~  / ~/~ // ~/~~//~  ~  /~~/~~//~~/~ /".replace('~','\\').substring(t=(n[k++]-48)*7,t+7),j=i-2;j-->0;)l[j]+="  ";return"".join("\n",l);}

পোর্ট অফ @Shion এর সি # .NET উত্তর , তাই তাকে পাশাপাশি ভোট দিন ভুলবেন না!

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

ব্যাখ্যা:

n->{                       // Method with character-array parameter and String return-type
  int i=n.length*2,        //  Two times the length of the input array
      j=i+1,               //  Index integer, starting at `i+1`
      k=0,t;               //  Temp integers
  String l[]=new String[j],//  String-array for the rows, default filled with `null`
         x;                //  Temp-String
  for(;j-->0;l[j]="");     //  Replace all `null` with empty Strings
  for(;i>0                 //  Loop `i` downwards in the range [`n.length*2`, 0)
      ;                    //   After every iteration:
       l[i--]+=            //    Append the row at index `i` with:
                           //    (and decrease `i` by 1 afterwards with `i--`)
         " "               //     A space
         +x.substring(5,7),//     And the 6th and 7th characters of temp-String `x`
       l[i--]+=            //    Append the row at index `i` with:
                           //    (and decrease `i` by 1 afterwards with `i--`)
         x.substring(2,5), //     The 3rd, 4th and 5th characters of temp-String `x`
       l[i]+=              //    Append the row at index `i` with:
         x.substring(0,2)) //     The 1st and 2nd characters of the temp-String `x`
    for(x="/~~ ~~/ ~  ~  /~ / ~//~ /~ / ~~/~  / ~/~ // ~/~~//~  ~  /~~/~~//~~/~ /".replace('~','\\')
                           //   String containing all digit-parts
          .substring(t=(n[k++]-48)*7,t+7),
                           //   and take the substring of 7 characters at index
                           //   `n[k]` as integer multiplied by 7
        j=i-2;j-->0;)      //   Inner loop `j` in the range (`i`-2, 0]
      l[j]+="  ";          //    And append the rows at index `j` with two spaces
  return"".join("\n",l);}  //  Return the rows delimited with new-lines
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.