7-বিভাগের পার্থক্য


26

আমার মনে হয় আশেপাশের বেশিরভাগ লোকেরা জানেন যে সংখ্যার জন্য 7-বিভাগের প্রদর্শনটি কী:

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

এক থেকে অন্যটিতে স্যুইচ করার জন্য টগল করা দরকার এমন বিভাগগুলির সংখ্যা হিসাবে দুটি সংখ্যার মধ্যে আমরা 7-সেগমেন্টের পার্থক্য (7 এসডি )টিকে সংজ্ঞায়িত করতে পারি । যেমন মধ্যে 7SD এবং হয় 5 (তিন অনুভূমিক অংশ এবং নিম্ন দুই উল্লম্ব বিভাগগুলির টগল করা প্রয়োজন), এবং মধ্যে 6 এবং 8 7SD 112

তদ্ব্যতীত, আমরা দুটি সংখ্যার মধ্যে 7SD সংযুক্ত অঙ্কের মধ্যে 7SD এর যোগফল হিসাবে সংজ্ঞায়িত করতে পারি । যদি একটি সংখ্যা অন্যটির চেয়ে দীর্ঘ হয় তবে আমরা ধরে নিই যে সেগুলি ডানদিকে যুক্ত রয়েছে এবং বৃহত্তর সংখ্যার অতিরিক্ত সর্বাধিক-উল্লেখযোগ্য সংখ্যাগুলি প্রদর্শন করতে প্রয়োজনীয় বিভাগগুলির সংখ্যা যুক্ত করুন। উদাহরণস্বরূপ, মধ্যে 7SD বিবেচনা 12345এবং 549:

  x:  1 2 3 4 5
  y:      5 4 9
7SD:  2+5+2+0+1 = 10

আপনার টাস্কটি এনএন + 1 এর মধ্যে 7 এসডি গণনা করা , এন দেওয়া আছে

সুবিধার্থে, পৃথক অঙ্কের মধ্যে 7SD এর পূর্ণ সারণী এখানে is সারিটি _একটি খালি অবস্থান উপস্থাপন করে।

   _ 0 1 2 3 4 5 6 7 8 9

_  0 6 2 5 5 4 5 6 3 7 6
0  6 0 4 3 3 4 3 2 3 1 2
1  2 4 0 5 3 2 5 6 1 5 4
2  5 3 5 0 2 5 4 3 4 2 3
3  5 3 3 2 0 3 2 3 2 2 1
4  4 4 2 5 3 0 3 4 3 3 2
5  5 3 5 4 2 3 0 1 4 2 1
6  6 2 6 3 3 4 1 0 5 1 2
7  3 3 1 4 2 3 4 5 0 4 3
8  7 1 5 2 2 3 2 1 4 0 1
9  6 2 4 3 1 2 1 2 3 1 0

ইনপুট

  • ইনপুটটি একক ধনাত্মক পূর্ণসংখ্যা n
  • আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে একটি প্রোগ্রাম বা ফাংশন লিখতে পারেন।
  • আপনি ধরে নিতে পারেন যে ইনপুটটি সবচেয়ে বড় সংখ্যার চেয়ে কম কম যা আপনার ভাষার স্ট্যান্ডার্ড পূর্ণসংখ্যার ধরণের দ্বারা প্রতিনিধিত্ব করা যেতে পারে, যতক্ষণ না এই ধরণের অন্তত 127 অবধি অন্তত মানগুলি সমর্থন করে।

আউটপুট

  • আপনার একক পূর্ণসংখ্যা, 7 এসডি nএবং এর মধ্যে মুদ্রণ করা উচিত n+1
  • আপনি STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) যুক্তির মাধ্যমে আউটপুট দিতে পারেন may

স্কোরিং

স্ট্যান্ডার্ড নিয়মগুলি প্রয়োগ হয়, সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

পরীক্ষার মামলা

কিছু অস্পষ্ট কারণে, এই সিকোয়েন্সটি এখনও ওইআইএসে নেই, যদিও এটিকে ঘনিষ্ঠভাবে সম্পর্কিত সিকোয়েন্সটি এ 123587 রয়েছে । এখানে প্রথম 100 নম্বর রয়েছে (দিয়ে শুরু করা n = 1, 2, 3, ...):

5, 2, 3, 3, 1, 5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1, 
5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4, 
5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1, 
5, 4, 1, 6, 4, 5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 6, 4

প্রথম ইনপুট যার জন্য 7 এসডি 9 এর চেয়ে বেশি হয় 1999তা 11 প্রদান করা উচিত Here এখানে আরও কিছু আরও বড় উদাহরণ রয়েছে:

n          7SD
1999        11
12345        1
999999      14
5699999     15
8765210248   1

উত্তর:


8

জেলি , 25 22 21 20 বাইট

‘DṁDḟ"DFị9979482ḃ5¤S

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

পটভূমি

আমরা প্রথমে ইনপুট এন বাড়িয়ে দেব এবং পরিবর্তিত হয়নি এমন এন + 1 এর সমস্ত অঙ্কগুলি বাতিল করে দিই ।

উদাহরণস্বরূপ, n যদি 5699999 হয় , আমরা নিম্নলিখিতটি পাই।

n     : 5700000
n + 1 : 5699999
Result:  700000

এই ফলাফলের সমস্ত অঙ্কের টগল করতে হবে এমন একটি নির্দিষ্ট সংখ্যক বিভাগ রয়েছে। আমরা কিছু বাইট সংরক্ষণ করতে টগলসের তালিকাটিকে বাইজিক বেস 5 তে রূপান্তর করতে পারি ।

digit:   1 2 3 4 5 6 7 8 9 0
toggles: 4 5 2 3 3 1 5 4 1 2

আউটপুটটি কেবল স্বতন্ত্র টগলসের যোগফল।

এটি n এর বেশিরভাগ মানের জন্য কাজ করে তবে n + 1 এর n এর চেয়ে বেশি সংখ্যা থাকলে বিশেষ যত্ন নেওয়া উচিত । এই ক্ষেত্রে, সমস্ত অঙ্কগুলি অবশ্যই 9 এর হতে হবে এবং আমরা এন + 1 থেকে 0 টি অনুসরণ করে কেটে এই সমস্যাটি সমাধান করব ।

উদাহরণস্বরূপ, এন যদি 999999 হয় তবে আমরা নিম্নলিখিতটি পাই।

n     :  999999
n + 1 : 1000000
Result: 100000

এটি কাজ করে কারণ নেতৃস্থানীয় 1 4 টি টগল ( 0 এবং 1 এর মধ্যে দূরত্ব ) এর মূল্যায়ন করে , যখন টোগলগুলির আসল পরিমাণ 2 ( 0 এবং 1 এর মধ্যে দূরত্ব ), এবং একটি পিছনে 0 দমন করা তার 2 টি টগলগুলি যোগফল থেকে সরিয়ে দেয় ।

কিভাবে এটা কাজ করে

‘DṁDḟ"DFị9979482ḃ5¤S  Main link. Argument: n

‘                     Compute n+1.
 D                    Convert n+1 from integer to base 10.
   D                  Convert n from integer to base 10.
  ṁ                   Mold the left result as the right result.
                      This chops of a 0 if n+1 has more digits than n.
    ḟ"D               Vectorized filter-false with the base 10 digits of n.
                      This removes the digits from n+1 that are identical to
                      the corresponding digits of n.
       F              Flatten the resulting list of lists.
         9979482ḃ5¤   Convert 9979482 to bijective base 5.
                      This yields [4, 5, 2, 3, 3, 1, 5, 4, 1, 2].
        ị             Retrieve the digits at the right that correspond to the
                      indices at the left.
                   S  Compute the sum of the results.

10

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

f=n=>n?+"452331541"[n%10]||f(n/10|0)+2:2

বিকল্প সূত্র, এছাড়াও 46 40 বাইট:

f=n=>n?26523308>>n%10*3&7||f(n/10|0)+2:2

সম্পাদনা করুন: @ এসএসটকে ধন্যবাদ 6 টি বাইট সংরক্ষণ করা।


যদি ES6 এ লজিকাল বা অপারেটরটি পাইথনের মতো আচরণ করে তবে আপনি নিজের দ্বিতীয় কোডটি আরও ছোট করতে পারেন। উদাহরণ হিসাবে আমার জমা পড়ুন।
xsot

@ এক্সসট আসলে আমি দুটোই ছোট করতে পারি! আমি মনে করি না যে এটি আমাকে শূন্য বিশেষের ক্ষেত্রে পরিবর্তন করতে সহায়তা করে কারণ এটি কেবলমাত্র 4 বাইট যেমন রয়েছে।
নিল

বাহ, আমি আশ্চর্য হয়েছি যে প্রথমটি কাজ করে। আমি একটি ত্রুটি আশা করেছিলাম।
এক্সসট

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

@ জ্যানডভোরাক আসলে, আমি অবাক হয়েছি যে আপনি স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে বড় স্ট্রিংয়ের সূচকটি অ্যাক্সেস করতে পারেন।
এক্সসট

10

পাইথন, 50 48 বাইট

f=lambda n:26523308-0**n*2>>n%10*3&7or f(n/10)+2

ব্যাখ্যা

এই ফাংশনটি সংখ্যাটির সর্বনিম্ন উল্লেখযোগ্য অঙ্কের উপর পরিচালিত হয় n, অঙ্কের 7SD যোগ করে যখন প্রথম অ-অঙ্কের পরে বাড়ানো হয় 9

26523308একটি বিটমাস্ক যা অঙ্কগুলির জন্য ম্যাপিংকে এনকোড করে 0-8। যখন n=0, যা শুধুমাত্র ঘটে যখন nগঠিত শুধুমাত্র 9গুলি, উত্তর দুই দ্বারা বন্ধ হতে হবে। এটি এক্সপ্রেশন দ্বারা ক্ষতিপূরণ হয় 0**n*2। অঙ্ক হিসাবে 9, বিটমাস্ক শূন্যে মূল্যায়ন করে যা 27 এসডি যুক্ত করার সময় পুনরাবৃত্ত কলকে ট্রিগার করবে ।


এটি কীভাবে রূপান্তর করে তার কিছু ব্যাখ্যা থাকতে পারি? মানে, চতুরতার জন্য +1 তবে আমি চালাকের মধ্যে হারিয়ে গেলাম।
CAD97

8

05 এ বি 1 ই , 31 30 28 27 26 বাইট

কোড:

9Ü©T%•2X›ùì•sè¹g®g-·¹Ú9Q·O

ব্যাখ্যা ( পুরানো ):

9Ü                              # Trim off trailing 9's
  ©                             # Copy this into the register
   T%                           # Get the last non-9 digit
     žh                         # Short for 0123456789
       •2X›ù앧                 # Compressed version of 4523315412
               ‡                # Transliterate

আমরা নিম্নলিখিতটি নন -9 ডিজিটে পরিবর্তন করছি:

0 -> 4
1 -> 5
2 -> 2
3 -> 3
4 -> 3
5 -> 1
6 -> 5
7 -> 4
8 -> 1
9 -> 2

বিশেষ ক্ষেত্রে:

                ¹g              # Get the length of the input
                  ®g            # Get the length of the input with all trailing 9 gone
                    -           # Substract, giving the number of 9's at the end of 
                                  the input
                     2*         # Multiply by two
                       O        # Sum everything up
                        ¹Ú      # Uniquify the input
                          9Qi   # If this is equal to 9 (only 9's in the input)
                             Ì  #   Increment by 2 (_ -> 1)

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

28 বাইট বিকল্প: D[¤©•2X›ùì•sès®9Ê#¨]\rÚ9Q4*O


5

জাভা, 63 বাইট

পাইথন জাভা আরও একবার পাস করার সাথে সাথে বিশ্বটি আলোকিত।

কারণ, আপনি জানেন, জাভা।

int f(int n){return n>0?n%10<9?26523308>>n%10*3&7:2+f(n/10):2;}

এটি আদর্শে দেখুন

2147483647 এ Maxes, যে হিসাবে জাভার হয় Integer.MAX_VALUE

এটি আমার পাইথন উত্তরের একটি বন্দর যা ES6 উত্তরের একটি বন্দর ।


3

এমএটিএল , 61 39 36 বাইট

tQvV15\'3dAsMh818RG5'6Y27WZaw)Z}Z~Bz

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

ব্যাখ্যা

tQv            % Implicit input. Duplicate, add 1, concatenate vertically
V              % Convert to 2D char array: each number in a row, possibly left-padded 
               % with a space
15\            % Modulo 15. With modular indexing this corresponds to the order
               % '9', ' ', '0', '1', ..., '8'
'3dAsMh818RG5' % This string encodes active segments for each of the 11 chars
6Y2            % Source alphabet printable ASCII chars (predefined literal)
7W             % Target alphabet: [0 1 ... 127]
Za             % Base conversion: decode string into vector of 11 numbers, where each
               % number from 0 to 127 encodes the 7-segment representation of a digit,
               % in the order '9', ' ', '0', '1', ..., '8'
w              % Swap top two elements in stack
)              % Use as index. Gives 2-row array, where each column is a digit 
Z}             % Split into the two rows
Z~             % Bitwise XOR, elementwise
B              % Convert to binary. Each number gives a row
z              % Number of nonzero elements. Implicitly display

3

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

!x=x<1?2:(t=x%10÷1)<9?3045058÷6^t%6:2+!.1x

এখানে চেষ্টা করুন।

ডেনিস একটি বাইট সংরক্ষণ করলেন!


1
কৌতূহলের বাইরে, কেন শুধু সংখ্যাগুলি ব্যবহার করবেন না?
কনর ও ব্রায়ান

আমি বিশ্বাস করতে পারি না যে জুলিয়া টিআইও আছে। Welp, সময় জুলিয়া তারপর শিখতে ...
মামা মজা রোল

3

পাইথন, 71 66 বাইট

Xsot দ্বারা 48 বাইট । আরও ম্যাজিক ম্যাথ!

f=lambda n:(2+f(n/10)if n%10==9else 26523308>>n%10*3&7)if n else 2

এটি আদর্শে দেখুন

কারণ পূর্বের পাইথন উত্তরটি কাজ করে না এবং সর্বোত্তম থেকে দূরে। পূর্ববর্তী ES6 সংস্করণের একটি সাধারণ বন্দর । কাস্ট কাটতে এখন বিট টুইডলিং (ইএস 6 বিকল্প সূত্র থেকে) ব্যবহার করছেন!

+1 বাইটের জন্য স্পষ্টভাবে ফ্লোরর্ডিভ ব্যবহার করে পাইথন 3 এর সাথে কাজ করা যায়।


আপনি পরে স্থানটি বের করতে পারবেন9
মাল্টেসেন

@ মাল্টেসেন আপাতদৃষ্টিতে আপনি ঠিক আছেন আমি ভেবেছিলাম এটি ত্রুটিযুক্ত কারণ eএকটি সংখ্যা পরে একটি বৈধ চিঠি, উদাহরণস্বরূপ 9e9,।
CAD97

এটা আমার জাভা উত্তর চেয়ে দীর্ঘ ! কীভাবে আমরা এর প্রতিকার করতে পারি? নোট যে থেকে তুলনা reversing n%10==9করতে n%10<9হলে এই অনুক্রমে একটি স্থান প্রয়োজন নেই হিসাবে সংরক্ষণ করা হয় না।
CAD97

এবং আমি ফিরে এসে দেখি এক্সসটটি আরও খাটো পাইথন সংস্করণ তৈরি করেছে। সাবাশ!
CAD97

2

জल्फ, 32 বাইট

Ώ?H?<γ%Ht9P."452331541"γ+2Ώc/Ht2

এখানে চেষ্টা করুন!

ব্যাখ্যা

এটি নীলের উত্তরের একটি প্রতিস্থাপন।

Ώ?H?<γ%Ht9P."452331541"γ+2Ώc/Ht2
Ώ                                 define a function Ώ of H
 ?H                            2  (when H is zero, return is 2)
      %Ht                         H mod 10
     γ                            γ = ^
   ?<    9                        is it less than 9?
                                  if so:
           ."452331541"γ           get the γth element of that string
          P                        as a number
                                  else
                        +2         add two to
                          Ώ        Ώ over
                           c/Ht    int(H / 10)


0

জে, 53 বাইট

2:`((2+10$:@<.@%~[)`(6|3045058<.@%6^])@.(9>])10&|)@.*

মূলত @ নীলের সমাধানের উপর ভিত্তি করে । তারপরে @ লিনের দ্রবণে একই সূত্রটি ব্যবহার করে একটি বাইট সংরক্ষণ করে উন্নত করা হয়েছে ।

স্ট্রিংয়ের উপর ভিত্তি করে 54 বাইট সংস্করণটি

2:`((2+10$:@<.@%~[)`('452331541'".@{~])@.(9>])10&|)@.*

ব্যবহার

   f =: 2:`((2+10$:@<.@%~[)`(6|3045058<.@%6^])@.(9>])10&|)@.*
   f 1999
11
   f 1999 12345 999999 5699999 8765210248
11 1 14 15 1

0

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

M!`.9*$
^9
0
T`d`4523315412
.
$*
.

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইনটি একবারে একাধিক পরীক্ষার কেসগুলি প্রক্রিয়াজাতকরণের অনুমতি দেয়))

ব্যাখ্যা

বেশিরভাগ উত্তর যেমন এখনই আবিষ্কার হয়েছে, আমাদের পূর্ণ টেবিলটি ব্যবহার করার দরকার নেই, যেহেতু 9ইনক্রিমেন্ট করার সময় কেবলমাত্র সর্বনিম্ন-উল্লেখযোগ্য অ- অঙ্ক পরিবর্তন হয় changes এই উত্তরটি কিভাবে কাজ করে তাও।

M!`.9*$

এটি ( M) রেজেক্সের সাথে মেলে .9*$যা প্রথম সংখ্যাটি যা কেবলমাত্র 9প্রান্ত থেকে গুলি দ্বারা পৃথক করা হয় । !রেটিনা বলে এই ম্যাচে ইনপুট প্রতিস্থাপন করতে, সবকিছু যে 7SD প্রভাবিত করে না খারিজ।

^9
0

ইনপুট এখন একটি দিয়ে শুরু হয়, তাহলে 9তার মানে, ইনপুট নিজেই গঠিত শুধুমাত্র এর 9, এস, যাতে 7-সেগমেন্ট ডিসপ্লে প্রয়োজন অনুসারে একটি পূর্বে লিখুন করতে 1যা খরচ 2। সহজ উপায় এই হ্যান্ডেল নেতৃস্থানীয় প্রতিস্থাপন করতে হয় 9একটি সঙ্গে এই ক্ষেত্রে 0, একটি বৃদ্ধিশীল খরচ যেহেতু 9(থেকে 0) হল 2এবং বৃদ্ধিশীল খরচ 0(আপনি 1) হল 4, তাই এই দ্বারা সামগ্রিক খরচ উত্থাপন 2প্রয়োজনীয়।

T`d`4523315412

এখন আমাদের কাছে একটি লিখিত লিখনের স্তর রয়েছে যা প্রতিটি অঙ্ককে বাড়ানোর জন্য এর ব্যয়ের সাথে প্রতিস্থাপন করে (যেহেতু dপ্রসারিত হয় 0123456789)। দ্রষ্টব্য যে এটি 7 এসডি সারণির প্রথম উপ-বিভাগীয়।

.
$*

এটি প্রতিটি অঙ্কের অনুলিপিগুলির nসাথে প্রতিস্থাপন করে , অর্থাৎ এটি প্রতিটি অঙ্ককে আনারিতে রূপান্তর করে এবং যেহেতু কোনও বিভাজনকারী তাৎক্ষণিকভাবে এগুলি একসাথে যুক্ত করে।n1

.

পরিশেষে, আমরা .ফলাফলের মধ্যে অক্ষরের সংখ্যা (অর্থাত্ ম্যাচের সংখ্যা ) গণনা করি , যা আনারি যোগফলকে দশমিক হিসাবে রূপান্তর করে।

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