অঙ্কটি কত?


13

7-বিভাগের অঙ্কগুলি _|অক্ষর ব্যবহার করে ASCII তে উপস্থাপন করা যেতে পারে । আকারের 1অঙ্কগুলি এখানে :

   _  _       _   _   _   _   _   _ 
|  _| _| |_| |_  |_    | |_| |_| | |
| |_  _|   |  _| |_|   | |_|  _| |_|

প্রতিটি বিভাগকে আনুপাতিকভাবে দীর্ঘায়িত করে বৃহত আকারগুলি গঠিত হয়। এখানে একটি দম্পতি আকার 3 অঙ্ক আছে।

 ___    ___    ___    ___    ___    ___    ___ 
|   |  |          |  |          |  |   |  |   |
|   |  |          |  |          |  |   |  |   |
|___|  |___       |  |___    ___|  |   |  |___|
|   |  |   |      |      |      |  |   |      |
|   |  |   |      |      |      |  |   |      |
|___|  |___|      |   ___|   ___|  |___|   ___|

লক্ষ্য

এই চ্যালেঞ্জে আপনাকে এমন একটি প্রোগ্রাম / ফাংশন লিখতে হবে যা ইনপুট হিসাবে একক অঙ্ক নিতে পারে এবং এর আকার সনাক্ত করতে পারে। ক্যাচ: যদি ইনপুটটি কোনও বৈধ অঙ্ক না হয় তবে আপনার প্রোগ্রামটি আউটপুট করা উচিত 0

এটি কোড-গল্ফ , সবচেয়ে কম বাইট জেতা।

আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন যা STDIN বা একটি যুক্তি হিসাবে অঙ্কটি গ্রহণ করতে পারে এবং মানটি মুদ্রণ / ফিরিয়ে দিতে পারে।

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

যখন কোনও অ-অঙ্কটি পাস করা হয়, তখনও এটি _|অক্ষর নিয়ে গঠিত হবে, একটি আয়তক্ষেত্রের প্যাডড হবে এবং কোনও অপরিবর্তিত শীর্ষস্থানীয় স্থান নেই। কোনও ফাঁকা লাইন থাকবে না। আপনাকে খালি ইনপুট নিয়ে কাজ করতে হবে না।

আউটপুটটি একটি একক অ-নেতিবাচক পূর্ণসংখ্যার, traচ্ছিক ট্রেলিং নিউলাইন সহ হওয়া উচিত। যদি ইনপুটটি কোনও আকারের, আউটপুটের সঠিক অঙ্ক না হয় 0। অন্যথায়, আকার আউটপুট।

প্রদত্ত আকারের জন্য প্রতিটি অঙ্কের প্রস্থ এবং উচ্চতাগুলির জন্য এখানে একটি সহায়ক গাইড N

Digit  Height  Width (not counting newlines)
1      2N      1
2      2N+1    N+2
3      2N+1    N+1
4      2N      N+2
5      2N+1    N+2
6      2N+1    N+2
7      2N+1    N+1
8      2N+1    N+2
9      2N+1    N+2
0      2N+1    N+2

আই / ও উদাহরণ

ভিতরে:

__ 
  |
__|
  |
__|

বাইরে:

2

ভিতরে:

|
|
|

বাইরে:

0  //because it is of an invalid height.  Either 1 char too short or tall.

ভিতরে:

|    |
|    |
|    |
|____|
     |
     |
     |
     |

বাইরে:

4

ভিতরে:

 ___ 
|    
|___ 
|   |
|___|

বাইরে:

0 //1 char too wide

ভিতরে:

 _ 
|_|
| |

বাইরে:

0 //it's not a digit

ভিতরে:

 __ 
|   
|__ 
   |
 __|

বাইরে:

2

ভিতরে:

 _  _ 
 _| _|
|_  _|

বাইরে:

0  //both would be valid individually, but input should be a *single* digit

ভিতরে:

 _ 
|_|
|_|

বাইরে:

1

ভিতরে:

|
|

বাইরে:

1

ভিতরে:

__|_
 |  
 _ |
  _ 
|__ 

বাইরে:

0

এই আনুমানিক বিপরীত এর 7-সেগমেন্ট ডিসপ্লে প্যাটার্ন মধ্যে সংখ্যা ট্রান্সফর্ম 3 বছর পিছন থেকে।


@ স্টিভেভারলিল আসলে সাইজের 0অঙ্কের মতো জিনিস নেই , আছে কি? যদি না আপনি এগুলি আঁকানোর কোনও উপায় অবলম্বন করেন।
PhiNotPi

8
এটি একটি বৈধ সংখ্যা হতে হবে এই নিয়মের জন্য না হলে এটি অবিশ্বাস্যভাবে সহজ হবে ...
ETH প্রোডাকশনগুলি

@ETH প্রোডাকশনস আমি সচেতন।
PhiNotPi

@ETHproductions যদি এটা যে প্রয়োজন ছিল না, এটা সদৃশ হবে codegolf.stackexchange.com/q/19548/15599
শ্রেনী নদী সেন্ট

উত্তর:


1

রুবি, 250

->x{d=y=0
x.size.downto(0){|n|y=n
a=["|
"*2*n]
"XNRDqpm@A".bytes{|z|p=[?|,' ','']
h=s=""
(n*2).times{|i|
i%n<1&&(d=z>>i/n*3&7)&&h=[?_,' '][d/3%2]*n
s=p[d%3]+h+p[d/6]+"
"+s
h=' '*n}
z!=68&&s=' '*(1-d%3/2)+?_*n+" 
"+s
a<<s};puts a
a.index(x)&&break}
y}

এখানে অনেকগুলি সম্ভাব্য অবৈধ ইনপুট রয়েছে তা প্রদত্ত, এটি করার একমাত্র উপায় ছিল সমস্ত সঠিক সংখ্যা তৈরি করা এবং ইনপুটটি মেলে কিনা তা পরীক্ষা করে দেখানো।

আমি প্রতিটি অঙ্ক নীচে থেকে উপরে, 2 অংশে এবং উপরের রেখায় তৈরি করি। 12 সম্ভাবনার আছে, যদিও (বিবেচনায় বাম সেগমেন্ট, উপর হতে পারে বন্ধ, অথবা ক্ষেত্রে 3এবং 7সম্পূর্ণ অনুপস্থিত) শুধুমাত্র 7 আসলে বর্তমান ও এনকোডিং সতর্কতা অবলম্বন পছন্দ সমস্ত তথ্য (শীর্ষ লাইন ব্যতীত) সম্ভব হয় একটি মধ্যে এনকোড করা একক চরিত্র।

অঙ্ক 1সত্যিই প্যাটার্ন মাপসই করা হবে না এবং অ্যারে আরম্ভ করতে ব্যবহৃত হচ্ছে আলাদাভাবে পরিচালিত হয়।

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

এই সংস্করণটি .ডায়াগনস্টিক কারণে স্থানগুলির পরিবর্তে ব্যবহার করে।

#Encoding used for half-digits (radix 3,2,2 most significant digit at right)

#000    |_|  0

#100    ._|  1  . = space

#200    X_|  2  X = no space (for digits 3 and 7)  

#010    |.|  3

#110    ..|  4

#210    X.|  5

#001    |_.  6


f=->x{d=y=0                                        #d and y required to be intialized for scoping reasons
  x.size.downto(0){|n|y=n                          #Assume max possible size of character = length of input and iterate down through all possible sizes n   
    a=["|\n"*2*n]                                  #Make an array containing the digit 1 (different shape to others)
    "XNRDqpm@A".bytes{|z|                          #Each character encodes the pattern for a digit. Iterate through them
      p=['|','.','']                               #Possible components for left and right of digit
      h=s=""                                       #h initialized for scoping reasons. s will contain the digit string 
      (n*2).times{|i|                              #For each row
        i%n<1&&                                    #If i%n==1 we are at the bottom of a half digit
        (d=z>>i/n*3&7)&&                           #so extract info from z and store in d
        h=[?_,'.'][d/3%2]*n                        #h is the horizontal part of the half digit, either _ or spaces 
        s=p[d%3]+h+p[d/6]+"\n"+s                   #Build one row of digit, working upwards: left,middle,right
        h='.'*n                                    #If row i%n!=0 (not bottom row of half digit)the middle section must contain spaces
      }                                            #We now have both halves of the digit, only the top segment missing 
      z!=68&&s='.'*(1-d%3/2)+?_*n+".\n"+s          #If z!=68 (digit 4) add a top to the digit, with appropriate leading and trailing spaces        
      a<<s                                         #Add the completed digit of size n to a
    }
    #puts a                                        #Diagnostic: uncomment to print all the strings checked
    a.index(x)&&break                              #If string x is in a, break

  }
y                                                  #and return last value of n 
}


# digit 7, size 2. Trailing newline required. Outputs 2
puts f[
"__.
..|
..|
..|
..|
"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.