একটি সংখ্যাকে পুনরায় অঙ্কের পরিমাণে বিভক্ত করুন


9

Repdigits ফর্মের সংখ্যা a * (10^n - 1)/9সঙ্গে a in [-9,9]\{0}(অন্য কথায় 111, -3333, 66, সংখ্যা যা শুধুমাত্র একটি ডিজিট পুনরাবৃত্তি দ্বারা তৈরি করা হয়)

লক্ষ্য: একটি প্রোগ্রাম বা ফাংশন লিখুন যা একক ধনাত্মক পূর্ণসংখ্যার Nএবং মুদ্রণের জন্য নেয় N = s_1 + s_2 + ... + s_k। প্রতি লাইনে একটি নম্বর থাকতে হবে এবং সংখ্যাগুলি ডান-প্রান্তিককরণ করা দরকার। কোনও দুটি সমানকে একই সংখ্যার অঙ্ক থাকা উচিত নয় এবং শূন্য যুক্ত করার অনুমতি নেই। আউটপুটটি আরোহণ বা উতরাই অর্ডারে অর্ডার করা উচিত (সংখ্যার সংখ্যা অনুসারে)

উদাহরণ:

in:
24192
out:
24192 =
22222 +
 2222 -
  222 -
   33 +
    3

in:
24192
out:
    -7
   -22
  +888
 +1111
+22222
=24192

in:
113
out:
113=    NOT  111+  no empty lines  111+
111+          00+                    
  2            2                     2

আপনি দেখতে পাচ্ছেন একাধিক সমাধান হতে পারে এবং কিছু শৈল্পিক স্বাধীনতার অনুমতি রয়েছে। প্রতিটি লাইনে শীর্ষস্থানীয় এবং পূর্ববর্তী সাদা অংশের অনুমতি দেওয়া হয়

সবচেয়ে কম বাইট গণনা জিতেছে ins


উদাহরণস্বরূপ, কেবল মুদ্রণগুলি প্রতিরোধ করার জন্য আপনার কিছু বিধি ঘোষণা করা উচিত N?
পূর্কাকুডারী

3
এটি ইতিমধ্যে আচ্ছাদিত: "কোনও দুটি
সমানকে

এই সংখ্যাগুলিকে রেপডিজিটসও বলা হয়।
Ypnypn

উত্তর:


6

পার্ল 5 - 97 92 93 86

$x=$_=pop;{printf"%15s
",$_;$_=$x,s!\d!//,$&!eg,$x-=$_,$i++?s/^\b/+/:s/^/=/;/0/||redo}

প্যারামিটার হিসাবে ইনপুট দেওয়া হয়েছে:

$perl a.pl 2224192
     2224192
    =2222222
       +1111
        +888
         -22
          -7

সংখ্যাটিতে 0 থাকলে এটি মুদ্রণ করে না। সম্ভবত এটি /0/লুপিংয়ের অবস্থা।
শুক্রবার

ধন্যবাদ, প্রকৃতপক্ষে এটি ক্ষেত্রে। আমি পার্ল শর্টকাট লুপগুলির সাথে নিজেকে বিভ্রান্ত করেছি। তাদের শেষে শর্ত রয়েছে তবে এখনও এটি প্রথম পুনরাবৃত্তিতে পরীক্ষা করে দেখুন। আমাকে তখন "+0" সন্ধান করতে হবে।
নটকি

আসলে আমি কি ... যখন () শুধু একটা অতিরিক্ত অক্ষর ব্যবহার করে ভান করতে redo
নটকি

2

সিজেম, 55 50 বাইট

'=l:L+Li{_W>"-+"=1$zs(\,)*+:Ii-L,_S*I+\~>\}h;]W%N*

এটি এখানে পরীক্ষা করুন।

আউটপুট ফর্ম্যাট ব্যবহার করে

      -7
     -22
    +888
   +1111
+2222222
=2224192

আমার একবার মার খেয়ে আমি আরও গল্ফ পেতে পারি।

ব্যাখ্যা:

'=l:L+Li{_W>"-+"=1$zs(\,)*+:Ii-L,_S*I+\~>\}h;]W%N*
'=                                                 "Push = character.";
  l:L                                              "Read STDIN and store in L.";
     +L                                            "Concatenate, push new copy of L.";
       i                                           "Convert to integer.";
        {                                 }h       "Do-while loop. Leaves the condition on the
                                                    stack. I will use the remainder for that.";
         _W>                                       "Duplicate remainder, compare with -1.";
            "-+"=                                  "Select appropriate sign character.";
                 1$                                "Copy remainder again.";
                   zs                              "Take abs() and convert to string.";
                     (                             "Shift off first digit.";
                      \                            "Swap with string.";
                       ,                           "Get length.";
                        )                          "Increment.";
                         *                         "Repeat digit that often.";
                          +                        "Concatenate with sign.";
                           :I                      "Store in I.";
                             i-                    "Convert to integer. Subtract from remainder.";
                                                   "Now we'll right-justify I.";
                               L,                  "Load input, get length.";
                                 _                 "Duplicate.";
                                  S*               "Repeat space that often.";
                                    I+             "Load string and concatenate.";
                                      \~           "Swap with length. Bitwise complement.";
                                        >          "Take that many characters from the right.";
                                         \         "Swap with remainder.";
                                            ;      "Discard final remainder (0).";
                                             ]     "Wrap in array.";
                                              W%   "Reverse.";
                                                N* "Join with line feeds.";

ফলস্বরূপ অ্যারে প্রোগ্রাম শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত হয়।


0

জাভাস্ক্রিপ্ট ES6 - 145

i=0;f=n=>{return g=n<0,n=Math.abs(n)+'',l=n.length,r=l-1?n[0].repeat(l):n,(i>0?g?'-':'+':n+'=')+'\n'+' '.repeat(i++)+(l-1?r+f((+n-r)*(g?-1:1)):r)}

ফায়ারফক্স কনসোলে আটকান। হিসাবে চালান f(24192)

এর জন্য আউটপুট f(24192):

24192=
22222+
 1111+
  888-
   22-
    7

ইনপুট 55সহ এটিতে যোগফলটিতে 0 থাকে (যা কোনও বাগ)।
শুক্রবার

0

গল্ফস্ক্রিপ্ট 77

~.[{..0>2*(.@*`.,\[0=]*''+~*.@\-.}do;]-1%{[.0>' +'=\`n].1=,2$`,\-' '*\+}%'='@

অনলাইন ডেমো লিঙ্ক:

ইউনিট পরীক্ষার সংস্করণ সহ কিছুটা আরও পঠনযোগ্য সংস্করণ (যদি গল্ফস্ক্রিপ্টকে পাঠযোগ্য বলা যায়) পাওয়া যায়

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