রড গণনা; আপনার লাঠি গণনা


9

কিছু পটভূমি

গণনা রডগুলি ছোট বার (3-14 সেমি দীর্ঘ) যা পুরো এশিয়ান সংস্কৃতি থেকে গণিতবিদরা 2000 বছরেরও বেশি সময় ধরে কোনও সম্পূর্ণ সংখ্যা বা ভগ্নাংশের প্রতিনিধিত্ব করতে ব্যবহার করেছিলেন। (এই চ্যাকল্লেঞ্জে আমরা স্বাক্ষরবিহীন পূর্ণসংখ্যাগুলির উপরে ফোকাস করব) এর পাশাপাশি একটি লিখিত সংস্করণ ছিল, যাকে রড সংখ্যা বলা হয়।

এখানে কিভাবে এটা কাজ করে:

(যদি কোনও মুহূর্তে আপনি বিভ্রান্ত হন তবে প্রতিটি অঙ্কের আসকি উপস্থাপনা এবং নীচে আমি অন্তর্ভুক্ত করেছি এমন কয়েকটি উদাহরণ দেখুন)

রড সংখ্যাগুলি 1-9 এর অঙ্ক সহ 0 এবং ফাঁকা 0 সহ একটি প্রকৃত অবস্থানের অঙ্কের সিস্টেম হয় digit অঙ্কগুলি অনুভূমিক এবং উল্লম্ব রেখা নিয়ে গঠিত; আরও লাইন, উচ্চতর অঙ্ক। আপনি যখন পাঁচটি পেরিয়ে গেলেন, আপনি নীচের লাইনের সংখ্যার সাথে 5 যুক্ত করতে উপরে একটি অনুভূমিক রেখা রাখবেন। একটি উল্লম্ব রেখা 1, দুটি উল্লম্ব রেখা 2, পাঁচটি উল্লম্ব রেখা 5, শীর্ষে একটি অনুভূমিক রেখা সহ একটি উল্লম্ব রেখা 6, শীর্ষে একটি অনুভূমিক রেখাযুক্ত চারটি উল্লম্ব রেখা 9 (সর্বোচ্চ অঙ্ক)।

একটি উল্লম্ব 3 সংখ্যা:

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

রডের সংখ্যাগুলি পড়া সহজ করার জন্য, তারা প্রতিটি বিকল্প অঙ্কের জন্য আলাদা স্বরলিপি ব্যবহার করে। দ্বিতীয় স্বরলিপি অনুভূমিক এবং উল্লম্ব রেখাগুলির ভূমিকা পরিবর্তন করে। যাতে 3 টি তিনটি অনুভূমিক রেখা দ্বারা এবং 8 টি তিনটি অনুভূমিক রেখা দ্বারা উপরে উল্লম্ব রেখার দ্বারা উপস্থাপিত হয়।

একটি অনুভূমিক 8 ডিজিট:

  |  
  |  
__|__
_____
_____

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

চ্যালেঞ্জ

এই রডগুলি নেতিবাচক সংখ্যা এবং ভগ্নাংশ উপস্থাপন করতে ব্যবহৃত হয়েছিল ( তাদের উপর উইকিপিডিয়া নিবন্ধে ব্যাখ্যা করা হয়েছে this এই চ্যালেঞ্জের উদ্দেশ্যে আমরা কেবল ইতিবাচক পূর্ণসংখ্যার উপর মনোনিবেশ করব যদিও উদ্দেশ্যটি সহজ:

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

প্রতিটি অঙ্ক 5x5 ascii অক্ষর দ্বারা প্রতিনিধিত্ব করা হবে এবং 5 টি স্পেসের দুটি সংঘর্ষ দ্বারা পৃথক করা হবে। প্রতিটি অঙ্কের জন্য আপনি যে সঠিক উপস্থাপনাটি ব্যবহার করবেন তা হ'ল:

space between two digits (two colums):





0 digit, both vertical and horizontal (five columns):






1 digit, vertical:
  |  
  |  
  |  
  |  
  |  

2 digit, vertical:  
 | | 
 | | 
 | | 
 | | 
 | | 

3 digit, vertical:
 ||| 
 ||| 
 ||| 
 ||| 
 ||| 

4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||

5 digit, vertical:
|||||
|||||
|||||
|||||
|||||

6 digit, vertical:
_____
  |  
  |  
  |  
  |  

7 digit, vertical:
_____
 | | 
 | | 
 | | 
 | | 

8 digit, vertical:
_____
 ||| 
 ||| 
 ||| 
 ||| 

9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||

1 digit, horizontal:




_____

2 digit, horizontal:



_____
_____

3 digit, horizontal:


_____
_____
_____

4 digit, horizontal:

_____
_____
_____
_____

5 digit, horizontal:
_____
_____
_____
_____
_____

6 digit, horizontal:
  |  
  |  
  |  
  |  
__|__

7 digit, horizontal:
  |  
  |  
  |  
__|__
_____

8 digit, horizontal:
  |  
  |  
__|__
_____
_____

9 digit, horizontal:
  |  
__|__
_____
_____
_____

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

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

উদাহরণ আউটপুট

শুরু হওয়া লাইনের >ইনপুট হিসাবে ব্যাখ্যা করা উচিত।

>12
        | | 
        | | 
        | | 
        | | 
_____   | | 

>8037
  |                  _____
  |                   | | 
__|__         _____   | | 
_____         _____   | | 
_____         _____   | | 

>950
_____  _____       
|| ||  _____       
|| ||  _____       
|| ||  _____       
|| ||  _____       

"স্পেসিং ট্রেলিং" দ্বারা, আপনার অর্থ কি কেবলমাত্র শেষ অঙ্কের বাউন্ডিং বাক্সের অতীত বা শেষ অঙ্কের শেষে রয়েছে?
জন ডিভোরাক

@ জনডভোরাক কেবল শেষ অঙ্কের বাউন্ডিং বক্সের অতীত। যদি কোনও অঙ্কের পুরো বাউন্ডিং বাক্সকে উপস্থাপন করার জন্য ট্রেইলিগ স্পেসগুলি প্রয়োজন হয় তবে সেগুলি প্রয়োজন।
ওভাররেੈਕਟਰ

উদাহরণগুলি দেখলে, শীর্ষস্থানীয় স্থানগুলিও নিষিদ্ধ। তারা কি?
edc65

@ edc65 হ্যাঁ, এটি উল্লেখ করার জন্য ধন্যবাদ।
ওভাররেੈਕਟਰ

উত্তর:


3

পাইথন 2 - 216

আমার প্রথম শটটি হতে পারে এমন কিছু জিনিস হতে পারে তবে আমার মস্তিষ্ক ব্যাথা করে, তাই এটি এখনকার পক্ষে যথেষ্ট

x=raw_input()
for l in range(5):print'  '.join((' '*7+'|   | |  ||| || '+'|'*7+'__|'+'_'*7)[[7*(4-l<n%6+n/6)+(n>5)*(l<10-n)-(l==10-n),n%6+n/6+(l<1)*(n>5)*(12-n)][(len(x)-i)%2]*5:][:5]for i,n in enumerate(map(int,x)))

2

জাভাস্ক্রিপ্ট (ES6) 223

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

F=n=>{
  for(r=s='',n+=s;r<5;r++,s+=q)
    for(f=q='\n',p=n.length;f=!f,p--;q=(p?'  ':'')+'     1  |  1 | | 1 ||| 1|| ||1|||||1_____1__|__'.split(1)[d]+q)
      if(d=~~n[p])e=d+r,d=d>5?f?e<10?1:e>10?6:7:r?d-5:6:f?e>4?6:0:d;
  console.log(s)
}

পরীক্ষা

ফায়ারফক্স কনসোলে পরীক্ষা।

F(12)

আউটপুট

        | | 
        | | 
        | | 
        | | 
_____   | | 

F(8037)

আউটপুট

  |                  _____
  |                   | | 
__|__         _____   | | 
_____         _____   | | 
_____         _____   | | 

F(950)

আউটপুট

_____  _____       
|| ||  _____       
|| ||  _____       
|| ||  _____       
|| ||  _____       

Ungolfed

F=n=>{
  z='     1  |  1 | | 1 ||| 1|| ||1|||||1_____1__|__'.split(1);
  s='';
  n+=s;

  for (r = 0; r < 5; r++)
  {
    for(q='\n',f=1,p=n.length;f=!f,p--;)
    {
      d = ~~n[p];
      if (d)
      {
        e=d+r;
        if (d > 5)
        {
          if (f)
          {
            d = e < 10 ? 1 : e >10 ? 6 : 7;
          }
          else
          {
            d = r ? d-5 : 6;
          }
        }
        else
        {
          if (f)
            d = e > 4 ? 6 : 0;
        }
      }
      q = (p ? '  ' : '') + z[d] + q;
    }
    s+=q
  }

  console.log(s)
}

1

পাওয়ারশেল , 229 বাইট

$n="$args"
0..4|%{$l=$_;$h=$n.Length%2
($n|% t*y|%{(' '*7+'|   | |  ||| || '+'|'*7+'_'*7+'|__')|% S*g(5*(('0123456666'+'0123451234'*4+'00000611110000661117000666117600666617660666667666')[50*($h=!$h)+10*$l+"$_"]-48))5})-join'  '}

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

যেখানে এই স্ট্রিং ডিজিট উপস্থিত করে:

# 0       1       2       3       4       5       6       7
# '     '.'  |  ',' | | ',' ||| ','|| ||','|||||','_____','__|__'

উল্লম্ব রড:

"       |   | |  ||| || |||||||____________________"+   # 0123456666
"       |   | |  ||| || |||||||  |   | |  ||| || ||"+   # 0123451234
"       |   | |  ||| || |||||||  |   | |  ||| || ||"+   # 0123451234
"       |   | |  ||| || |||||||  |   | |  ||| || ||"+   # 0123451234
"       |   | |  ||| || |||||||  |   | |  ||| || ||"    # 0123451234

অনুভূমিক রডস:

"                         _____  |    |    |    |  "+   # 0000061111
"                    __________  |    |    |  __|__"+   # 0000661117
"               _______________  |    |  __|_______"+   # 0006661176
"          ____________________  |  __|____________"+   # 0066661766
"     ___________________________|_________________"    # 0666667666

নিবন্ধভুক্ত লিপি:

$digits=' '*7+'|   | |  ||| || '+'|'*7+'_'*7+'|__'
$positions = '0123456666'+'0123451234'*4+'00000611110000661117000666117600666617660666667666'

$n="$args"
0..4|%{
    $line=$_
    $horizontal=$n.Length%2
    $chunks=$n|% toCharArray|%{
        $horizontal=!$horizontal
        $startFrom = 5*($positions[50*$horizontal+10*$line+"$_"]-48)
        $digits|% Substring $startFrom 5
    }
    $chunks-join'  '
}


নিয়মে 'কোনও উপায়' কী কী কোনও ফাংশন বা সম্পূর্ণ প্রোগ্রাম লিখুন যা কোনও উপায়ে ইনপুট হিসাবে একটি পূর্ণসংখ্যার মান নেয় ? 'পূর্ণসংখ্যা' কে 'স্ট্রিং' হিসাবে ব্যাখ্যা করার সাহস পাইনি। :)
mazzy

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