কিছু নম্বর প্রসারিত করুন


23

এই চ্যালেঞ্জটি এই স্ট্যাকওভারফ্লো প্রশ্নের উপর ভিত্তি করে ।

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

ইনপুট

পূর্ণসংখ্যা হিসাবে একটি সংখ্যা, একটি স্ট্রিং বা সংখ্যা / অক্ষরের তালিকা।

  • সংখ্যাটি কঠোরভাবে ইতিবাচক হবে।
  • আপনি যদি স্ট্রিং বা তালিকা হিসাবে নম্বরটি গ্রহণ করেন তবে এটি একটি দিয়ে শুরু হবে না 0

আউটপুট

স্ট্রিং প্রতিটি প্রাসঙ্গিক বেস -১০ সংখ্যার যোগফল উপস্থাপন করে, যার প্রতিটি তার নিজ নিজ বেস -10 পাওয়ার দ্বারা গুণিত হয়। একটি যোগফল হিসাবে প্রতিনিধিত্ব করা হয় a + b। আপনি চাইলে সাইনটির প্রতিটি পাশের চারপাশে একটি স্থান অবধি ব্যবহার +করতে পারেন। অপারেন্ডসটি অবতরণ ক্রমে তালিকাভুক্ত রয়েছে।

  • 0 কোনও বৈধ অপারেন্ড হতে পারে না।
  • +চিহ্ন (শূণ্যস্থান দ্বারা বেষ্টিত বা না হোক) বিশিষ্ট বা লম্বা অংশ নাও হতে পারে।

উদাহরণ

Input       Output
12          10 + 2
         or 10+2
         or 10 +2
         or 10+ 2
9           9
123         100 + 20 + 3
10          10
101         100 + 1

অবৈধ আউটপুট

2           1 + 1
10          10 + 0
1           0 + 1
12          + 10 + 2
12          10 + 2 +
12          2 + 10

এটি কোড-গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়!




আমরা কি বিপরীতে যোগফল আউট করতে পারি? যাত্রা। 123 = 3 + 20 + 100
কুইন্টেক

1
নেতৃস্থানীয় এবং পিছনে স্থান অনুমোদিত?
ngn

2
ইনপুট 0 জন্য প্রত্যাশিত আউটপুট কি? (যদি 0 প্রথম স্থানে একটি অবৈধ ইনপুট হয়, তবে এটি অবৈধ আউটপুট উদাহরণগুলি আইএমও থেকে সরানো উচিত)
পেড্রো এ

উত্তর:


11

পাইথন 3: 83 80 79 বাইট

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

আমার প্রথম কোড গল্ফ জমা।

t=input();x=len(t);print(*[t[i]+'0'*(x+~i)for i in range(x)if'0'<t[i]],sep='+')

-3 বায়ু দ্বারা ovs। সেই দরকারী টিপটির জন্য আপনাকে ধন্যবাদ :) -4 বাইট বাই মাইপেলিয়ন। সংক্ষিপ্ত টিপের জন্য আপনাকে ধন্যবাদ :)


পিপিসিজিতে আপনাকে স্বাগতম! আপনাকে আপনার যদি বিবৃতি পুনঃক্রমবিন্যাস করে আপনার স্কোর উন্নত করতে পারেন if'0'<t[i]এবং থেকে আপনার সূত্রে পরিবর্তন x-i-1করতে x+~iএখানে ধাপে ধাপে পরিবর্তনগুলির সাথে একটি টিআইও লিঙ্ক রয়েছে।
ovs

1 বাইট সংরক্ষণ করতে printস্টেটমেন্টটি পরিবর্তন করুন print(*[t[i]+'0'*(x+~i)for i in range(x)if'0'<t[i]],sep='+')
mypetlion

10

জেলি , 9 বাইট

ḊƬḌQIAj”+

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

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

ḊƬḌQIAj”+  Main link. Argument: A (digit array)

 Ƭ         Til; apply the link to the left until the results are no longer unique.
           Return all unique results.
Ḋ              Dequeue; discard the first element.
           For input [1,2,0,4], this yields [[1,2,0,4], [2,0,4], [0,4], [4], []].
  Ḍ        Undecimal; convert the digit arrays into integers.
           For input [1,2,0,4], this yields [1204, 204, 4, 4, 0].
   Q       Unique; deduplicate the resulting integers.
           For input [1,2,0,4], this yields [1204, 204, 4, 0].
    I      Increments; yield the forward differences.
           For input [1,2,0,4], this yields [-1000, -200, -4].
     A     Absolute value.
      j”+  Join with separator '+'.

3
স্মার্ট অ্যাপ্রোচ!
কুইন্টেক

8

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

পূর্ণসংখ্যা হিসাবে ইনপুট নেয়।

f=(n,m=1,k=n%m)=>n-k?f(n-k,m*10)+(k?'+'+k:''):n

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

মন্তব্য

f = (                     // f is a recursive function taking:
  n,                      //   n = number to process
  m = 1,                  //   m = modulo (a power of 10, starting at 1)
  k = n % m               //   k = n mod m
) =>                      //
  n - k ?                 // if n is not equal to k:
    f(n - k, m * 10)      //   do a recursive call with n - k and m * 10
    + (k ? '+' + k : '')  //   if k is not zero: append '+' and k
  :                       // else:
    n                     //   append n and stop recursion

7

আর , 55 বাইট

ধরে নিচ্ছি পূর্ণসংখ্যাগুলি 1e10 এর নীচে, যা যাইহোক সর্বোচ্চ 32 বিট পূর্ণসংখ্যার চেয়ে বড় ...

function(n,p=10^(9:0),x=p*n%/%p%%10)cat(x[!!x],sep='+')

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


ঠিক আছে, 10^(nchar(n):1-1তাত্ত্বিকভাবে কোনও পূর্ণসংখ্যার জন্য কাজ করবে ...
জিউসেপে

1
এটি হবে, কিন্তু extra সমস্ত অতিরিক্ত বাইট তাকান!
জে.ডো

7

শেক্সপিয়ার প্রোগ্রামিং ল্যাঙ্গুয়েজ , 807 806 805 804 বাইট

,.Ajax,.Ford,.Page,.Act I:.Scene I:.[Enter Ajax and Ford]Ford:Listen tothy!Scene V:.Ajax:Remember the remainder of the quotient between I twice the sum of a cat a big big cat.You be the sum of you a cat.Ford:You be the quotient between you twice the sum of a cat a big big cat.Be you nicer zero?If solet usScene V.You be I.Scene X:.Ajax:Recall.Be you worse a cat?If solet usScene D.[Exit Ford][Enter Page]Ajax:Be you nicer zero?If sospeak thy.You be the sum of a big big big big cat the cube of the sum of a cat a big cat.[Exit Page][Enter Ford]Ajax:Open heart.Remember I.You zero.Scene L:.Ajax:Am I nicer a cat?If notlet usScene C.Open heart.Ford:You be the sum of you a pig.Let usScene L.Scene C:.Ajax:Recall.Ford:You be I.Scene D:.Ford:You be the sum of you a pig.Be you nicer zero?If solet usScene X.

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

-23 বাইটস যদি কোনও নাল অক্ষর প্রথমে আউটপুট হতে পারে

,.Ajax,.Ford,.Page,.Act I:.Scene I:.[Enter Ajax and Ford]Ford:Listen tothy!Scene V:.Ajax:Remember the remainder of the quotient between I twice the sum of a cat a big big cat.You be the sum of you a cat.Ford:You be the quotient between you twice the sum of a cat a big big cat.Be you nicer zero?If solet usScene V.You be I.Scene X:.Ajax:Recall.Be you worse a cat?If solet usScene D.[Exit Ford][Enter Page]Ajax:Speak thy.You be the sum of a big big big big cat the cube of the sum of a cat a big cat.[Exit Page][Enter Ford]Ajax:Open heart.Remember me.You zero.Scene L:.Ajax:Am I nicer a cat?If notlet usScene C.Open heart.Ford:You be the sum of you a pig.Let usScene L.Scene C:.Ajax:Recall.Ford:You be I.Scene D:.Ford:You be the sum of you a pig.Be you nicer zero?If solet usScene X.

ব্যাখ্যা

,.Ajax,.Ford,.Page,.Act I:.Scene I:.[Enter Ajax and Ford]

    Boilerplate, introducing the characters.

Ford:Listen tothy!

    Input a value to Ajax.

Scene V:.Ajax:Remember the remainder of the quotient between I twice the sum of a cat a big big cat.You be the sum of you a cat.Ford:You be the quotient between you twice the sum of a cat a big big cat.Be you nicer zero?If solet usScene V.

    Push the digits of Ajax onto Ford's stack, and set Ford's value to be the number of digits in Ajax.

You be I.

    Store the number of digits in the input to Ajax.

Scene X:.Ajax:Recall.Be you worse a cat?If solet usScene D.

    Pop the next digit off the stack, and skip processing it if it equals 0.

[Exit Ford][Enter Page]Ajax:Be you nicer zero?If sospeak thy.You be the sum of a big big big big cat the cube of the sum of a cat a big cat.[Exit Page][Enter Ford]

    All characters start out with a value of 0.
    If Page is 0, that means this is the first number being processed, and we shouldn't output a plus.
    In either case, store the ASCII value of "+" to Page to output next time it is needed.

Ajax:Open heart.Remember I.You zero.

    Output the digit, save the remaining-digit-count for later, and store 0 to Ford for output purposes.

Scene L:.Ajax:Am I nicer a cat?If notlet usScene C.Open heart.Ford:You be the sum of you a pig.Let usScene L.

    Output one fewer 0 than the number of remaining digits to process.

Scene C:.Ajax:Recall.Ford:You be I.

    Store the remaining-digit-count back into Ajax.

Scene D:.Ford:You be the sum of you a pig.Be you nicer zero?If solet usScene X.

    Subtract 1 from the remaining-digit-count, and loop back until there are no more digits left to process.


6

জেলি ,  12  11 বাইট

J’⁵*Ṛ×ḟ0j”+

অঙ্কের তালিকা হিসাবে পাইথন আকারে (পাইথন ফর্ম্যাটে) একটি পূর্ণ প্রোগ্রাম যা ফলাফল মুদ্রণ করে।

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

কিভাবে?

J’⁵*Ṛ×ḟ0j”+ - Main Link: list of digits  e.g. [1,0,2,0,3,0]
J           - range of length                 [1,2,3,4,5,6]
 ’          - decrement (vectorises)          [0,1,2,3,4,5]
  ⁵         - literal 10                      10
   *        - exponentiate (vectorises)       [1,10,100,1000,10000,100000]
    Ṛ       - reverse                         [100000,10000,1000,100,10,1]
     ×      - multiply (vectorises)           [100000,0,2000,0,30,0]
      ḟ0    - filter discard zeros            [100000,2000,30]
        j”+ - join with '+'                   [100000,'+',2000,'+',30]
            - implicit (smashing) print       "100000+2000+30"

পূর্ববর্তী @ 12 বাইট:

Ḣ;0€ƊÐƤẸƇj”+

5

হাস্কেল, 60 54 বাইট

সম্পাদনা করুন: -6 বাইটস ডেলফ্যাড0 আরকে ধন্যবাদ।

tail.(>>=('+':)).filter(>="1").scanr((.('0'<$)).(:))""

স্ট্রিং হিসাবে ইনপুট নম্বর নেয়।

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

    scanr(        )""    -- starting with the empty string fold from the right and
                         -- collect the intermediate results in a list
      (.('0'<$)).(:)     -- non pointfree: \d s -> d : ('0'<$s)
                         -- i.e. take the next digit 'd' and append the current result
                         -- from the scanr where each char is replaced by 0
                         --
                         -- e.g. "103" -> ["100","00","3"]
                         --
  f ilter(>="1")         -- keep only elements that have not a 0 as the first char
 (>>=('+':))             -- prepend a + to each element and flatten into
                         -- a single list
tail                     -- drop the first char, ie.e the leading +

2
tail.(>>=('+':)).filter(>="1").scanr((.('0'<$)).(:))""6 বাইট সংরক্ষণ করুন অনলাইনে চেষ্টা করুন!
ডেল্ডাড্ডার

1
@ ডেল্ডাড0r: সুন্দর, অনেক অনেক ধন্যবাদ!
নিমি


4

পাইথন 2 , 64 বাইট

lambda n:'+'.join(`b`+~e*'0'for e,b in enumerate(n,-len(n))if b)

একটি নামবিহীন ফাংশন যা অঙ্কগুলির তালিকা নিয়ে nআসে এবং একটি স্ট্রিং প্রদান করে।

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

enumerate(n)সূচক দিয়ে শুরু করে index, itemজুড়ে টুপলস উপার্জন করবেn0

তবে enumerateএছাড়াও, তার দ্বিতীয় যুক্তি হিসাবে একটি ঐচ্ছিক শুরুর সূচক লাগে এই সেটিংস এর দ্বারা -len(n)আমরা পেতে সূচকের ( eএর গুলি) -len(n), -len(n)+1, ..., -1

এই উপায়ে কোন আইটেম জন্য প্রয়োজন বোধ করা চিহ্ন শূন্য সংখ্যা ( b) হল -1-e, যা ~eতাই ~e*'0'প্রয়োজনীয় trailing শূন্য পায়।

`b`পূর্ণসংখ্যার অঙ্কের একটি স্ট্রিং উপস্থাপনা পায় bএবং +সেইগুলি শূন্যগুলির সাথে এটি সম্মিলিত করে।

if bসঙ্গে এন্ট্রি ফিল্টার b==0

'+'.join(...)তারপরে +অক্ষরের সাথে ফলাফলের স্ট্রিংগুলিতে যোগ দেয় ।



4

হাস্কেল , 55 55 52 বাইট

-4 বাইট ধন্যবাদ নিমিকে

tail.f
f('0':x)=f x
f(d:x)='+':d:('0'<$x)++f x
f x=x

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


ব্যাখ্যা

g :: String -> String

-- drop the first char (the leading +) from f
g = tail.f

f :: String -> String

-- if the first digit is 0, continue with the rest of the number
f ( '0' :rest) = f rest

-- otherwise, add a +, the digit and as many 0s as there are digit in the rest.
f (digit:rest) = '+' : digit : ('0' <$ rest) ++ f rest

-- if there is no digit left, return the empty string
f "" = ""

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


3

পার্ল 6 , 38 বাইট

{join '+',grep +*,($_ Z~[R,] 0 Xx^$_)}

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

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

ব্যাখ্যা:

{                                    }  # Anonymous code block
                   $_ Z~   # Zip concatenate the list of digits with
                        [R,] 0 Xx^$_   # The correct number of 0s

          grep +*,(                 )  # Filter out all all the 0 values
 join '+',   # And join with '+'s

3

এপিএল (ডায়ালগ), 46 41 40 বাইট

{¯1↓∊{'0'=⊃⍵:⍬⋄⍵}¨⍵,¨('0'⍴⍨¨⌽⍳≢⍵),¨'+'}

-5 বাইটস @ ডিজাইমাকে ধন্যবাদ

নামবিহীন উপসর্গ ফাংশন। স্ট্রিং হিসাবে ইনপুট নেয়। Tio

(এটি আমার প্রথমবারের মতো পিপিসি-তে এপিএল ব্যবহার করা, সম্ভবত গল্ফযোগ্য Also এছাড়াও, আপনাকে জিরো!



3

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

|'+L$`[1-9]
$&$.'*0

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

L`[1-9]

সমস্ত অ-শূন্য অঙ্কের তালিকাবদ্ধ করুন

$
$&$.'*0

প্রতিটি অঙ্কের জন্য, যতগুলি পিছনে অঙ্ক ছিল ততগুলি শূন্য যুক্ত করুন।

|'+

প্রতিটি ফলাফল +ডিফল্ট নিউলাইনের পরিবর্তে গুলি দিয়ে আলাদা করুন ।

রেটিনা 0.8.2 , 21 বাইট

M&!`[1-9].*
\B.
0
¶
+

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

M&!`[1-9].*

শূন্য-অংক ছাড়াই শুরু হওয়া ইনপুটটির সমস্ত প্রত্যয় তালিকাভুক্ত করুন।

\B.
0

জেরো দিয়ে সমস্ত অনুবর্তনীয় অঙ্কগুলি প্রতিস্থাপন করুন।

¶
+

+এস সঙ্গে ফলাফল যোগদান করুন ।


3

সি (জিসিসি) , 71 69 বাইট

রিকার্সিভ ফাংশনের প্রতিটি পদক্ষেপ অংশটি বিয়োগ করে যে এটি মুদ্রণ করবে এবং বাকি সংখ্যাটি পাস করবে the

পরামর্শের জন্য সিলিংক্যাট ধন্যবাদ।

g(v,c,w){v&&printf("+%d"+!g(v-w,c*10)+!w*3,w=v%c);w=v;}f(v){g(v,10);}

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


3

ব্র্যাচল্যাগ , 35 32 বাইট

l⟧₅;?z{tℕ₁I&h;10↔^;I×ṫ}ˢ;"+"zckc

-3 বাইট কারণ 0 একটি বৈধ ইনপুট নয়

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

ব্যাখ্যা

                                    #   implicit input          eg  105
l                                   #   length of input             3
 ⟧₅                                 #   descending range ]n,0]      [2, 1, 0]
   ;?                               #   pair with input             [[2, 1, 0], [105]]
     z                              #   zip (considers numbers as array of digits)
                                    #                               [[2, 1], [1, 0], [0, 5]]
      {               }ˢ            #   select (map and filter)     [2, 1]  |   [1, 0]  |   [0, 5]
       t                            #       tail (last element)     1       |   0       |   5
        ℕ₁                          #       is at least 1           1       |   fail    |   5
          I                         #       store in I
           &h                       #       head of input           2       |           |   0
             ;10↔                   #       pair with 10 & reverse  [10, 2] |           |   [10, 0]
                 ^                  #       power                   100     |           |   1
                  ;I                #       pair with I             [100, 1]|           |   [1, 5]
                    ×               #       multiply                100     |           |   5
                     ṫ              #       to string               "100"   |           |   "5"
                        ;"+"        #   pair with "+"               [["100", "5"], "+"]
                            z       #   zip (cycles shorter)        [["100", "+"], ["5", "+"]]
                             c      #   concat (flattens)           ["100", "+", "5", "+"]
                              k     #   knife (remove last)         ["100", "+", "5"]
                               c    #   concat                      "100+5"

ওপি এখন নির্দিষ্ট করে দিয়েছে যে 0 আপনাকে হ্যান্ডল করতে হবে এমন কোনও ইনপুট নয়, তাই আপনি |∧Ṡশেষ থেকে মুছতে পারেন । :)
ডিএলস্ক

3

ব্র্যাচল্যাগ ভি 2, 15 বাইট

~+bᵛ⁰↔;"+"zckwᵐ

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

খুব, খুব অদক্ষ।

একরকম, এই (ফর্ম মধ্যে বিভাজন নম্বর কি সবচেয়ে ভাষায় কঠিন অংশ উপর মাত্র 6 বাইট ব্যবহার করতে পরিচালনা করে একটি 10 যেখানে একটি "সঙ্গে যোগ দিতে জন্য একটি একক অঙ্ক হয়, অবরোহী), এবং একটি সম্পূর্ণ 9 বাইট +"(যা বেশিরভাগ গল্ফিং ভাষায় অন্তর্নির্মিত, তবে ব্র্যাচল্যাগ নয়)।

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

ব্যাখ্যা

~+bᵛ⁰↔;"+"zckwᵐ
~+               Find an additive partition of the input number
   ᵛ               such that each component of the partition,
  b                when the first digit is removed
    ⁰              is equal to 0;
     ↔           reverse it,
      ;"+"z      pair every element with "+",
           c     flatten the resulting list one level,
            k    remove the last element (i.e. the final "+"),
             w   and print
              ᵐ  each remaining element.

( wᵐআরও স্বাভাবিকের চেয়ে বেশি কারণ ব্যবহৃত cহয় কারণ আমরা একটি ভিন্নজাতীয় তালিকার সাথে কাজ করছি - এটিতে সংখ্যা এবং স্ট্রিং উভয়ই রয়েছে - এবং এগুলিকে মিশ্রিত করার পরিবর্তে এগুলি সমস্ত স্বতন্ত্রভাবে মুদ্রণ করা সবচেয়ে সহজ))

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




2

সংযুক্তি , 37 বাইট

Join&"+"@{Id\`-&>Pairs[_'0]}@Suffixes

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

পয়েন্টফ্রি সংস্করণ (41 বাইট): Join&"+"##`\&:Id##`-&>Pairs@`'&0@Suffixes

ব্যাখ্যা

Join&"+"@{Id\`-&>Pairs[_'0]}@Suffixes      input e.g.: 1203
                             Suffixes      take the suffixes of the input digit
                                           e.g.: [1203, 203, 3, 3] 
         {                 }@              apply the inner lambda to the suffixes:
                       _'0                   append `0`
                                             e.g.: [1203, 203, 3, 3, 0]
                 Pairs[   ]                  generate the pairs of integers of the above
                                             e.g.: [[1203, 203], [203, 3], [3, 3], [3, 0]]
             `-&>                            subtraction over each pair
                                             e.g.: [1000, 200, 0, 3]
          Id\                                keep only truthy (nonzero) elements
                                             e.g.: [1000, 200, 3]
Join&"+"@                                  join the result by `+`
                                           e.g.: "1000+200+3"


2

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

$i=$args.Count;($args|%{$_+'0'*--$i}|?{+$_})-join'+'

স্ক্রিপ্ট স্ট্রিংগুলির একটি অ্যারের প্রত্যাশা করে, প্রতিটি স্ট্রিংয়ে একটি ডিজিট থাকে। পরীক্ষার স্ক্রিপ্ট:

$f = {

$i=$args.Count;($args|%{$_+'0'*--$i}|?{+$_})-join'+'

}

@(
    ,('10','1','0')
    ,('10+2','1','2')
    ,('9','9')
    ,('100+20+3','1','2','3')
    ,('100+1','1','0','1')
) | % {
    $e, $a = $_
    $r = &$f @a
    "$($e-eq$r): $(-join$a)=$r"
}

আউটপুট:

True: 10=10
True: 12=10+2
True: 9=9
True: 123=100+20+3
True: 101=100+1

2

জাপট , 13 বাইট

অঙ্কের অ্যারে হিসাবে ইনপুট নেয়।

í*¡ApYÃw)f q+

চেষ্টা করে দেখুন


ব্যাখ্যা

í                 :Interleave
  ¡               :  Map input
   A              :    10
    p             :    To the power of
     Y            :    The current 0-based index
      Ã           :  End map
       w          :  Reverse
 *                :  Reduce each pair by multiplication
        )         :End interleaving
         f        :Filter (remove 0s)
           q+     :Join with "+"

বিকল্প

অঙ্কের স্ট্রিংগুলির একটি অ্যারে হিসাবে ইনপুট নেয়।

ËúTUÊ-EÃfn q+

চেষ্টা করে দেখুন


2

জাভা 10, 82 78 বাইট

n->f(n,1)Object f(int n,int m){return m<n?f(n-n%m,m*10)+(n%m>0?"+"+n%m:""):n;}

পোর্ট অফ আর্নৌল্ডের জাভাস্ক্রিপ্ট (ইএস 6) উত্তর
-2 বাইটস @ সিলিংক্যাটকে ধন্যবাদ ।
-২ বাইট ধন্যবাদ আর্নল্ডকে

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

ব্যাখ্যা:

n->                      // Method with int parameter & Object return-type
  f(n,1)                 //  Call the recursive method with `n` and 1

Object f(int n,int m){   // Recursive method with 2 int parameters & Object return-type
  return m<n?            //  If `m` is smaller than `n`:
          f(n-n%m,m*10)  //   Do a recursive call with `n-n%m` and `m` multiplied by 10
          +(n%m>0?       //   And if `n` is not divisible by `m`:
            "+"          //    Append a "+"
            +n%m         //    As well as `n%m`
           :             //   Else:
            "")          //    Append nothing more
         :               //  Else:
          n;}            //   Simply return the input `n`

আমি মনে করি এই উত্তরটিও মূল প্রশ্নের জন্য বৈধ হবে । :) (সম্ভবত n%mপঠনযোগ্যতার জন্য কোনও ভেরিয়েবলকে দেওয়া হয়েছে।)
আরনাউল্ড


1
@ এসিলিংক্যাট আসলে m<nকাজ করা উচিত।
আর্নল্ড


2

সেড-ই ,109 99 97 75 74 বাইট

h;s:.:0:g;G
:l;s:.(.*)\n(.)(.*)\+?(.*):\1\n\3+\4\2\1:;tl
s:\+0+::g;s:..?::

ইনপুটটির প্রতিটি লাইন একটি পৃথক সংখ্যা হিসাবে বিবেচিত হয়। এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

h;                                           | copy the original string to the temporary buffer
  s:.:0:g;                                   | substitute all digits with zeroes
          G                                  | append the original string to the substituted one
                                             |
:l;                                          | main loop start
   s:.(.*)\n(.)(.*)\+?(.*):\1\n\3+\4\2\1:;   | cut the next digit from the number, append with zeroes and add to the back
                                          tl | loop if the substitution hasn`t converged yet
                                             |
s:\+0+::g;                                   | remove all zero terms
          s:..?::                            | remove \n and the first +, if any

আমার ধারণা ... আরও গল্ফ করা যেতে পারে।


হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম। আপনার উত্তরটি দুর্দান্ত দেখাচ্ছে, যদিও আপনি কেন BADC0FFEE পরীক্ষার কেস যুক্ত করেছেন তা আমি বুঝতে পারি না । আমি মনে করি চ্যালেঞ্জটি কেবলমাত্র দশমিক উপস্থাপনা সম্পর্কে।
জোনাথন ফ্রেচ

আপনার হ্যান্ডেল করার দরকার নেই 01010101010বা 000000, চ্যালেঞ্জের অনুমান অনুসারে। এটি কোনও বাইট সংরক্ষণ করে?
ডেনিস

@ ডেনিস সম্ভবত না, নেতৃস্থানীয় জিরো এবং এর মধ্যে থাকা লোকেরা একই রকম আচরণ করে, তাই যাইহোক আমার সেগুলি মুছতে হবে।
hidefromkgb

2

ব্রেইনফাক, 147 বাইট

>>+[[<]>+[>],]-[>+>+<<-----]>--->--------<<<[<]>---[[<+<+>>-]<[>+<-]>>.<<<[>>[>]>.<<[<]<-]>>[>]>>.<<<[<]>>>[<[-]>[<+>-]>]>[<+>-]>[<+>-]<<<<[<]>-]>.

এটি অনলাইন চেষ্টা করুন! (আপনাকে "!" চিহ্নিত বাক্সটি টিক দিতে হবে এবং কোডের দ্বিতীয় লাইনে "!" এর পরে আপনার ইনপুট টাইপ করতে হবে অন্যথায় এটি চিরকালের জন্য ইনপুটগুলি জিজ্ঞাসা করবে))

এটি সম্ভবত সবচেয়ে সংক্ষিপ্ত উত্তর হতে পারে না বা সবচেয়ে কম হতে পারে এটি গল্ফড হতে পারে তবে ব্রেইনফাকে চেষ্টা করে দেখতে এটি করা বেশ মজাদার ছিল তাই আমি এটি পোস্টও করতে পারি।

@ জোকিং যেমন উল্লেখ করেছেন, এই প্রোগ্রামটি 0 টি সরিয়ে দেয় না। আমি চেষ্টা করব এবং এটিকে ঠিক করব তবে এটি বেশ কঠিন হতে পারে।

ব্যাখ্যা:

>>+[[<]>+[>],]                            Takes inputs and records the amount of them
-[>+>+<<-----]>--->--------               Sets the next 2 cells to 48 (0) and 43 (plus)
<<<[<]>---                                Returns to the start and corrects the number of inputs
                                          Loop
[[<+<+>>-]<[>+<-]>>.                      Prints the first number
<<<[>>[>]>.<<[<]<-]                       Prints the correct number of 0's
>>[>]>>.                                  Prints plus
<<<[<]>                                   Returns to the first cell
>>[<[-]>[<+>-]>]>[<+>-]>[<+>-]<<<<[<]>-]  Removes the first number and shifts everything up by one to make the second number the first 
                                          Loops until on last number
>.                                        Prints last number

দুঃখিত, তবে এটি নির্দিষ্ট হিসাবে শূন্যগুলি সরাবে না। এটি অনলাইন চেষ্টা করুন!
জো কিং

ধন্যবাদ, আমি এটা খেয়াল করিনি। আমি চেষ্টা করে ঠিক করে দেব আমি যখনই থাকব, আমি আমার পোস্টটি সম্পাদনা করব
FinW

2

এপিএল (ডায়ালগ ইউনিকোড) , 20 বাইট

{⍵'+'⍺}/0~⍨(10×⊢)\∘

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

অঙ্কের ভেক্টর হিসাবে ইনপুট নেয়। প্রত্যেকের আগে এবং পরে একটি স্থানের সাথে আউটপুট দেয় +এবং এর মধ্যে নেতৃস্থানীয় স্পেসের পরিবর্তনশীল পরিমাণ অন্তর্ভুক্ত থাকে।

এটি একটি ট্রেন এটি নিম্নে বিভক্ত।

  ┌───┴───┐
  /     ┌─┼──┐
┌─┘     0   
{⍵'+'⍺} ┌─┘ ┌┴┐
        ~   \ 
          ┌─┘
       ┌──┼─┐
       10 × 

প্রথম ফাংশনটি হ'ল এটি অ্যারেটিকে বিপরীত করে, তাই 1 0 2হয়ে যায় 2 0 1

তারপরে আমরা আসি (10×⊢)\যা বিপরীত অ্যারেতে প্রয়োগ করা হয়। এই অংশটি বোস্ট্রোফিডোনাইজ চ্যালেঞ্জের জন্য এনএনজি- র উত্তর দ্বারা অনুপ্রাণিত । ধারনার এনএনজি'র ব্যাখ্যা, অঙ্কের একটি ভেক্টর দেওয়া A B C ..., (10×⊢)\এই ভেক্টরে প্রয়োগ করে নিম্নলিখিতটি দেয়।

A (A (10×⊢) B) (A (10×⊢) (B (10×⊢) C)) ...
A ((10×⊢) B) ((10×⊢) (10×C)) ...
A (10×B) (10×10×C) ...

উপর 2 0 1, (10×⊢)\দেয় 2 0 100

পরবর্তী আসে 0~⍨। এটি 0প্রদান করে অ্যারে থেকে সমস্ত গুলি সরিয়ে দেয় 2 100

অবশেষে +এস। {⍵'+'⍺}/হ্রাস হ'ল যা ডান দিক থেকে শুরু হয় যা একটি দিয়ে বাম আর্গুমেন্টকে সংযুক্ত +করে এবং তারপরে ডান আরগটি অনুসরণ করা হয়। কার্যকরভাবে, এটি সন্নিবেশ করার সময় অ্যারেটিকে বিপরীত করে +। এটি দেয় 100 '+' 2, যা হিসাবে প্রদর্শিত হয় 100 + 2


2

ম্যাথগল্ফ , 12 11 10 বাইট

hrzúm*ç'+u

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

ব্যাখ্যা

অঙ্কের তালিকা হিসাবে ইনপুট দেওয়া যেতে পারে বলে প্রথম কমান্ডের প্রয়োজন নেই।

(▒           Convert to a list of digits)
 h           Get length of input list without popping
  r          Push range(a)
   z         Reverse sort
    ú        Map i -> 10**i for each element in list
     m*      Element-wise multiplication
       ç     Filter faulty items in list
        '+   Push "+"
          u  Join with separator

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

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