এই দুটি নম্বর যুক্ত করার জন্য আমার কতটি বাহন দরকার?


27

কার্য

দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, বেস 10 তে দীর্ঘ সংযোজনে তাদের যুক্ত করার জন্য প্রয়োজনীয় বাহনের সংখ্যা আউটপুট করুন।

উদাহরণ

¹¹¹   <-- carries
 999
+  1
----
1000

তিনটি বহন করা দরকার।

 ¹
 348
+ 91
----
 439

একটি বহন প্রয়োজন।

Testcases

999,   1 -> 3
398,  91 -> 1
348,  51 -> 0
348,  52 -> 2
  5,  15 -> 1
999, 999 -> 3
505, 505 -> 2

স্কোরিং

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।



14
প্রস্তাবিত পরীক্ষার কেস: 190192, 90909(বহন করার বিরতি রয়েছে)।
জোনাথন অ্যালান

5
@ জেনি_ম্যাথির জবাব থেকে: বহনকারীর সংখ্যা দুটি ইনপুটগুলির অঙ্কের যোগফলের যোগফল এবং (2) দুটি ইনপুটগুলির যোগফলের যোগফলের নয়টি দিয়ে বিভক্ত হওয়ার সমান। এর কারণ এটি যখন বহন করা হয়, আপনি 10 থেকে বিয়োগ করে অঙ্কের যোগফলে 1 যোগ করেন। উদাহরণস্বরূপ, 9+9আপনাকে দেয় 18তবে অঙ্কের যোগফলটি 9+9-10+1কারণ একটি বহন রয়েছে।
জংহওয়ান মিন


আমরা কি অনুমান করতে পারি যে আমাদের ভাষার অন্তর্নির্মিত সংখ্যাটি উপযুক্ত? বিশেষত পাইথন 2 এর জন্য, আমাদের কি উপরের সংখ্যার জন্য reprএকটি সংযোজন করা উচিত ? L2**63-1
xnor

উত্তর:


21

গণিত, 46 39 বাইট

x=Tr@*IntegerDigits;(x@#+x@#2-x@+##)/9&

ইনপুট

[348,51]

জংহওয়ান থেকে -7 বাইট


ডাং, আমি এই পদ্ধতিটি সত্যিই পছন্দ করি। (1) দুটি ইনপুটগুলির অঙ্কের যোগফলের যোগফল এবং (2) দুটি ইনপুটগুলির যোগফলের অঙ্কের যোগফলের বহনকারীর সংখ্যার নয়গুণ কারণ একটি বহন করার সময় আপনি 10 থেকে বিয়োগ করেন অঙ্কের যোগফল এবং অঙ্কের যোগফলটিতে 1 যুক্ত করুন।
JungHwan ন্যূনতম

আমিও! গল্ফিং টিপসের জন্য ধন্যবাদ
J42161217

টেস্টকেসগুলি বলেছে [৩৪৮,৫১] 0 ফিরে আসতে হবে তবে আমি যখন এটি চালাচ্ছি তখন আমি 56/3 পাচ্ছি ...?
নম্বরমানিয়াক

স্বাগতম, দেখে মনে হচ্ছে এটি এখন কাজ করছে। ম্যাথামেটিকার আগে কী করছিল তা নিশ্চিত নন ...
নম্বরমানিয়াক

6

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

Ovs এর সমাধান থেকে স্থির চুরি করা

f=(a,b,c=0)=>a|b|c&&c+f(a/10,b/10,a%10+b%10+c>=10)

ব্যাখ্যা

f=(a,b,c=0)=>                                      Function taking two numbers and optional carry
             a|b|c                                 If a number or the carry are nonzero
                  &&                               Then
                    c+f(a/10,b/10,a%10+b%10+c>=10) Return carry plus all other carries

ব্যাখ্যা বহন করুন

a%10+b%10+c     Sum of mod 10 of the numbers and c - remember these are not floordiv'ed
           >=10 Greater than or equals to 10 (we can't use greater than 9 here)

f=(a,b,c=0)=>a|b|c&&c+f(a/10,b/10,a%10+b%10+c>=10)
console.log([[999,1],[398,91],[348,51],[348,52],[5,15],[999,999],[256,64],[190192,90909]].map(test=>`${(test[0]+'').padStart(6,' ')}, ${(test[1]+'').padStart(6,' ')} -> ${f(...test)}`).join('\n'));


1
348 , 52হওয়া উচিত2
টোটো

কিভাবে কাজ করে? আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
অর্জুন

5

সি (জিসিসি) , 65 বাইট

i,l;f(a,b){for(i=l=0;a+b;a/=10,b/=10)i+=a%10+b%10+l>9?l=1:0;a=i;}

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


আপনার গ্লোবাল ভেরিয়েবলগুলি আরম্ভ করার দরকার নেই।
ব্যবহারকারী1502040

@ ব্যবহারকারী1502040 আপনার প্রয়োজন, যদি সেগুলি আরম্ভ না করেই ফাংশনের অভ্যন্তরে ব্যবহৃত হয়।
ফুটো নুন

1
শুধু আরম্ভের এখানে প্রায় আমার মাথা পেয়ে: ভেরিয়েবল হয় স্বয়ংক্রিয়ভাবে শূন্য সক্রিয়া, কিন্তু শুধুমাত্র একবার, তাই PPCG উপর ফাংশন জমা কাজ করতে হবে কারণ ফাংশনের রান একাধিকবার তারা নিজে দ্বিতীয় সুবিধার জন্য zeroed করা প্রয়োজন যদি এবং পরবর্তী রান।

5

জেলি ,  13 12 11  9 বাইট

জেনি_ম্যাথির গাণিতিক উত্তর পোর্ট করে -1 বাইট ।
আরও ভাল গল্ফিং দ্বারা আরও 2 বাইট: পি

;SN$DFS:9

পরীক্ষার স্যুটটি দেখুন

কিভাবে?

;SN$DFS:9 - Main link: list of numbers, [a,b]     e.g.   [348,53]
   $      - last two links as a monad
 S        -   sum                                            401
  N       -   negate                                        -401
;         - concatenate                             [348,53,-401] 
    D     - convert to decimal lists     [[3,4,8],[5,3],[-4,0,-1]]
     F    - flatten                           [3,4,8,5,3,-4,0,-1]
      S   - sum                                               18
       :9 - integer divide by nine                             2

আমার 12 বাইট সমাধান ...

:⁵+
DUSç\>9S

একটি মোনাডিক লিঙ্ক একটি জোড়া সংখ্যক পূর্ণসংখ্যার গ্রহণ করে এবং পূর্ণসংখ্যার হিসাবে বহন করে এমন সংখ্যার ফিরিয়ে দেয়।

যদিও একটি সংক্ষিপ্ত উপায় সম্ভবত আছে! সেখানে ছিল!

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

কিভাবে

:⁵+ · Link 1: perform a carry: right-column's-digit-sum, a; left-colum's-digit-sum; b
 ⁵  · literal 10
:   · a integer-divided by 10 - the carry amount
  + · add to b

DUSç\>9S · Main link: list of summands        e.g. [348,52]
D        · convert to decimal lists                [[3,4,8],[5,2]]
 U       · upend (reverse each)                    [[8,4,3],[2,5]]
  S      · sum (add the digits up)                 [10,9,3]
    \    · cumulative reduce with:
   ç     ·   last link (1) as a dyad               [10,10,4]
      9  · literal 9
     >   · greater than?                           [ 1, 1,0]
       S · sum                                     2

এর অনেকগুলি ব্যবহার Dএবং S...
এরিক দ্য আউটগল্ফার

4

পাইথন , 48 বাইট

f=lambda a,b,m=1:m<1e99and(~a%m<b%m)+f(a,b,m*10)

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

প্রতিটি স্থানের মানের জন্য m=1, 10, 100, ..., 10**99, সেই জায়গার মানটিতে কোনও বাহন রয়েছে কিনা তা পরীক্ষা করে দেখুন। ওভারফ্লো চেকটি a%m+b%m>=mসংক্ষিপ্ত করা হয়েছে ~a%m<b%m

একটি উত্তম 45-বাইট বৈকল্পিক যেখানে ভাসমান aএবং bপরিবর্তে নীচে স্থানান্তরিত

f=lambda a,b:a+b and(a%1+b%1>=1)+f(a/10,b/10)

দুর্ভাগ্যক্রমে ভাসমান নির্ভুলতার ইস্যুগুলিতে চলে আসে।


আপনি কি a+b<mআপনার সমাপ্তির শর্ত হিসাবে ব্যবহার করতে পারবেন না ?
নীল

@ নীল এটি <=দীর্ঘ হওয়া প্রয়োজন।
xnor

1e99andকদর্য
জোনাস শোফার

4

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

f=(a,b,d=1)=>a+b<d?0:(a%d+b%d>=d)+f(a,b,d*10)

1 টি জায়গায় বহন করার জন্য অতিরিক্ত ডু-কিছুই না পুনরুক্তি যোগ করে 1 বাইট সংরক্ষণ করা হয়েছে। @ এক্সনোরের ক্যারি চেকটি বরাদ্দ করে 7 বাইট সংরক্ষণ করা হয়েছে আমার কাছে আরও মার্জিত 45-বাইট সংস্করণ ছিল তবে এটি ভাসমান-পয়েন্টের ভুল দ্বারা ভুগছে; এটি সঠিক দশমিক গাণিতিক সহ কোনও ভাষায় অনুবাদিত দুর্দান্ত কাজ করবে:

f=(a,b,c=a+b)=>c<1?0:a%1+b%1-c%1+f(a/10,b/10)

3

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

f=lambda a,b,c=0:c+a+b and c+f(a/10,b/10,a%10+b%10+c>9)

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


1
@ জোনাথান অ্যালান যেমন উল্লেখ করেছেন, আপনি যদি আপনার ফাংশনে কোনও কল ব্যবহার করেন, আপনাকে অবশ্যই এটি ঘোষণা করতে হবে। বলা হচ্ছে, আপনার উত্তর 55 বাইট
মিঃ এক্সকডার

@ মিঃ এক্সকোডার এটি স্থির করেছেন
ওভস


2

নিম , 10 বাইট

𝔸𝐣𝐬₁₂𝔻𝐬𝕊λ𝕍

ব্যাখ্যা:

𝔸            𝔸ppend the two inputs into a list
 𝐣            𝐣oin them together
  𝐬           𝐬um the characters
   ₁₂         Push the first input, then the second
     𝔻        A𝔻d.
      𝐬       𝐬um the characters
       𝕊      𝕊ubtract
         𝕍    Integer di𝕍ision by
        λ     nine (variable)

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

বিকল্প সমাধান, এছাড়াও 10 বাইট:

𝔸D𝐣𝐬S𝐬𝐬𝕊9𝕍

ব্যাখ্যা:

𝔸             𝔸ppend the two inputs into a list
 D            Duplicate
  𝐣            𝐣oin
   𝐬           𝐬um
    S          Swap
     𝐬         𝐬um
      𝐬        𝐬um the characters
       𝕊       𝕊ubtract
         𝕍     integer di𝕍ide by
        λ       nine (variable)

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


1

পিএইচপি> = 7.1, 81 বাইট

for([,$x,$y]=$argv,$i=1;($x+$y)/$i|0;$i*=10)$d+=$c=$x/$i%10+$y/$i%10+$c>9;echo$d;

-2 বাইট সরানোর |0এই ক্ষেত্রে লুপ পর্যন্ত রান $iহলINF

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


কখন $iহয়ে যায় INF?
বিড়াল

@ কেট আমি কেন তা গুরুত্বপূর্ণ তা নিশ্চিত নই। আমি এটি ব্যবহার করি না। 1.0E+309প্রথম INFমানটি অনলাইনে চেষ্টা করে দেখুন!
জার্গ হালসারম্যান

0

ব্রেনল্ফ , 20 বাইট

VR{.M}d<d&+v+d&+c-9/

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

অন্য সবার মতো একই পদ্ধতি ব্যবহার করে।

একটি বাইট সংরক্ষণ করেছেন গেল বা 2 আমি দূরদর্শিতা ছিল করার অনুমতি ছিল dতারপর আমি প্রতিস্থাপিত করে থাকেন পারে লোভী পরিবর্তক ব্যবহার করার d<dসঙ্গে &dপরের বার অই ভাল।

ব্যাখ্যা

VR{.M}d<d&+v+d&+c-9/  Implicit input from commandline args
VR                    Create stack2 and return to stack1
  {..}                Foreach loop, runs on each item in stack1
   .M                 Duplicate and move duplicate to stack2
      d<d             Split both items on stack into digits
         &+           Sum entire stack
           v+         Switch to stack2 and sum last 2 items on stack
             d&+      Split result into digits and sum all digits
                c     Collapse stack2 into stack1
                 -    Subtract last item from 2nd to last
                  9/  Divide by 9
                      Implicit output of last item on stack
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.