আইএলডির যোগফল গণনা করুন


21

ইনপুট:

একটি পূর্ণসংখ্যা

আউটপুট:

ইনপুট নিজেই যোগফল + ইনপুটটির দৈর্ঘ্য + ইনপুটটির প্রতিটি পৃথক অঙ্ক।

nr + nr-length + {sum of digits} = output

উদাহরণ:

ইনপুট: 99
আউটপুট: 99(এনআর) + 2(এনআর-দৈর্ঘ্য) + (9 + 9)(অঙ্ক) →119

ইনপুট: 123
আউটপুট: 123 + 3 + (1 + 2 + 3)132

চ্যালেঞ্জ বিধি:

  • ইনপুটটিতে নেতিবাচক ইনপুটও থাকতে পারে, যা বিশেষ সমাধান করা হয়। -/ বিয়োগ-চিহ্ন হয় +1দৈর্ঘ্যের জন্য, এবং প্রথম অংশ digit
    উদাহরণ স্বরূপ:

    ইনপুট: -123
    আউটপুট: -123 + 4 + (-1 + 2 + 3)-115

  • আপনি ধরে নিতে পারেন যে ইনপুট বা আউটপুট কখনই কোনও (32-বিট) পূর্ণসংখ্যার ব্যাপ্তির বাইরে থাকবে না।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস:

87901 → 87931
123 → 132
99 → 119
5 → 11
1 → 3
0 → 1
-3 → -4
-123 → -115
-900 → -905
-87901 → -87886

আধা-সম্পর্কিত: সমস্ত অঙ্কের সমষ্টি গণনা করুন


আমি মনে করি যে নেতিবাচক সংখ্যার সাথে, উদাহরণস্বরূপ -123যোগফল শৃঙ্খলার (-1 + 1 + 2 + 3)পরিবর্তে (-1 + 2 + 3)ঠিক হওয়া উচিত ?
ইয়াতসি

@ টুকুএক্সএক্স না, এটি হওয়া উচিত -1 + 2 + 3। এই চ্যালেঞ্জের জন্য আমি -/ মাইনাস-সাইনটিকে আরও কিছুটা আকর্ষণীয় করে তোলার জন্য প্রথম সংখ্যাকে একটি নেতিবাচক অঙ্ক হিসাবে মার্জ করতে পছন্দ করি ।
কেভিন ক্রুইজসেন

উত্তর:


10

05 এ বি 1 ই, 28 20 18 8 বাইট

ÐgsS'+ýO

ব্যাখ্যা

Ð           # triplicate input
 g          # get length of input
  sS'+ý     # split input and merge with '+' as separator 
       O    # sum and implicitly display

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

@ আদনানকে 10 বাইট সংরক্ষণ করা হয়েছে


2
সৌভাগ্য যে, 05AB1E, গাণিতিক এক্সপ্রেশন স্বয়ংক্রিয়ভাবে মূল্যায়ন করে যাতে আপনি এটা করতে পারেন: ÐgsS'+ýO
আদনান

1
@ আদনান: চমৎকার! আমি জানি না যে এটি করেছে।
এমিগানা

13

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

lambda x:x+len(`x`)+eval("+".join(`x`))

পরীক্ষা স্যুট

আমার পাইথ-উত্তরের মতো একই ইওল-ট্রিক ব্যবহার করা ।


আমি পাইথন কখনই ব্যবহার করি নি, তাই আমার সম্ভাব্য অজ্ঞতাটি ভুলে যাও তবে নেতিবাচক ইনপুটটির জন্য নেতিবাচক প্রথম সংখ্যাটি কীভাবে নিতে evalএবং কীভাবে joinজানতে পারে? আমি আশা -123ভালো কিছু পরিণত - + 1 + 2 + 3আউট লিখিত, কিন্তু দৃশ্যত তা না হয় .. (অথবা এটা হয়, এবং এটি স্বয়ংক্রিয়ভাবে মার্জ - + 1করার -1দ্বিতীয় পদক্ষেপ হিসেবে?)
কেভিন Cruijssen

2
আপনার মত কেভিন ক্রুজসেন যোগ দেওয়ার পরে -123হয়ে যায় "-+1+2+3"যা আপনি যখন পাবেন তখন সঠিক ফলাফল evalদেয়। eval("-+1")ফলাফল হিসাবে উদাহরণস্বরূপ চেষ্টা করুন -1
ডেনকার

1
@ কেভিন ক্রুজসেন - + 1-> - 1। অ্যানারি প্লাস অপারেটর বিদ্যমান, তাই - + 1মূলত একই রকম -(+(1))। সংখ্যার +aমতোই a
এরিক আউটগলফার

9

পাইথ, 11 10 বাইট

বাইটের জন্য @ লিক্যনুনকে ধন্যবাদ!

++vj\+`Ql`

পরীক্ষা স্যুট

ব্যাখ্যা

++ ভিজে \ + `কিউএলকিউকিউ # কিউ = ইনপুট, শেষ দুটি সুস্পষ্টভাবে যুক্ত হয়েছে

  vj \ + `প্রশ্ন # '+' এর ইনপুটটিতে যোগদান করুন এবং এটি প্রকাশ করুন
        l`Q # ইনপুটটির দৈর্ঘ্য
           প্রশ্ন # ইনপুট নিজেই
++ # ফলাফলটি অর্জন করতে এই তিনটি মান যুক্ত করুন

7

সিজেম, 18

q_,\~__Ab(@g*\~]:+

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

ব্যাখ্যা:

q_      read the input and make a copy
,\      get the string length and swap with the other copy
~__     evaluate the number and make 2 copies
Ab      convert to base A=10 (array of digits), it uses the absolute value
(       take out the first digit
@g*     get a copy of the number, get its sign and multiply with the digit
\~      dump the other digits on the stack
]:+     add everything together

6

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

ll,: EF + +:: এল + + আমি (? 0> জ: 2 *: অ 1 + .; আমি।)
ll, (? 0> জ: 1 - আমি; i0) ,? খ: EF + +: এল: আমি +।

ব্যাখ্যা

lL,             L is the length of the Input
(
    0>?         Input < 0
       h:1--I   I is (First digit - 1) * -1
;               Or
    I0          I is 0
),
?b:ef+          Sum all digits of the Input
      :?:L:I+.  Output = sum of digits + (Input minus first digit) + L + I

6

এক্সএসএলটি 1.0 (এক্সএসএলটি ছাড়াই), 673 বাইট

<transform xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0"><output method="text"/><param name="i"/><template match="/"><variable name="d"><variable name="s">0<if test="0>$i">1</if></variable><variable name="d"><call-template name="d"><with-param name="i" select="substring($i,$s+2)"/></call-template></variable><value-of select="substring($i,1,$s+1)+$d"/></variable><value-of select="$i+string-length($i)+$d"/></template><template name="d"><param name="i"/>0<if test="$i!=''"><variable name="d"><call-template name="d"><with-param name="i" select="substring($i,2)"/></call-template></variable><value-of select="substring($i,1,1)+$d"/></if></template></transform>

হালকা স্ফীত:

<transform xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <output method="text"/>
    <param name="i"/>
    <template match="/">
        <variable name="d">
            <variable name="s">0<if test="0&gt;$i">1</if></variable>
            <variable name="d">
                <call-template name="d">
                    <with-param name="i" select="substring($i,$s+2)"/>
                </call-template>
            </variable>
            <value-of select="substring($i,1,$s+1)+$d"/>
        </variable>
        <value-of select="$i+string-length($i)+$d"/>
    </template>
    <template name="d">
        <param name="i"/>0<if test="$i!=''">
            <variable name="d">
                <call-template name="d">
                    <with-param name="i" select="substring($i,2)"/>
                </call-template>
            </variable>
            <value-of select="substring($i,1,1)+$d"/>
        </if>
    </template>
</transform>

এক্সস্লটপ্রোক ব্যবহার করে চালান:

xsltproc --param i -87901 ild.xsl ild.xsl

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


1
এমন কিছু ব্যবহারের জন্য +1 যা পুরোপুরি সংখ্যার গণনা করা এবং এটি যেভাবেই কাজ করার জন্য নয়।
ডিজেএমসিএমহেম

আপনি "অবৈধ তবে কোডগল্ফের পক্ষে ভাল" বানাতে কিছু উদ্ধৃতি সরাতে পারবেন না?
এরিক দি আউটগল্ফার

name="i" select="..."উদাহরণস্বরূপ উদ্ধৃতিগুলির পরে অবশ্যই আপনার প্রয়োজন হবে না <with-param name="i"select="substring($i,$s+2)"/>?
বিড়াল

@ ক্যাট পুরো ডকুমেন্টে কেবল তিনটি রয়েছে এবং প্রকৃতপক্ষে স্থান অপসারণের ফলে xsltproc দম বন্ধ হয়ে যায়।
psmay

1
@psmay ওহ, এটি অদ্ভুত। এরিক বলছিলেন আপনি যদি উক্তিগুলি অপসারণ করেন তবে এটি মান অনুসারে প্রযুক্তিগতভাবে অবৈধ হতে পারে তবে এখনও এইচটিএমএল এর মতো সঠিকভাবে কাজ করতে পারে, বেশিরভাগ প্রয়োগগুলি উদ্ধৃত বৈশিষ্ট্য মান ছাড়া ট্যাগ রেন্ডার করবে <p id=hello>ইত্যাদি xsltprocess জিনিস দ্বারা।
বিড়াল

4

এমএটিএল, 20 বাইট

tVtnw48-PZ}t0<?x_]vs

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

সমস্ত পরীক্ষার কেস

ব্যাখ্যা

        % Implicitly grab the input
tV      % Duplicate the input and convert to a string
tn      % Duplicate and find the length of this string
w       % Flip the top two stack elements to get us the string again
48-     % Subtract 48 (ASCII 'O'). Yields a negative number for a negative sign
        % and digits otherwise
P       % Flip the resulting array
Z}      % Break the array up so each element is pushed to the stack
t0<?    % If the first character was a negative sign
  x_    % Pop the negative sign off the stack and negate the first digit
]       % End of if
vs      % Vertically concatenate and sum all stack contents
        % Implicitly display the result

4

Clojure, 102 বাইট

(fn[n](load-string(str"(+ "n" "(count(str n))" "(apply str(map #(if(= % \-)%(str %" "))(str n)))")")))

বেনামে ফাংশন যা এর মতো দেখতে একটি স্ট্রিং তৈরি করে (+ -123 4 -1 2 3 )এবং এটিকে দেখায় । যতই সুন্দর ভার্জোজ তা হ'ল, সংখ্যা থেকে স্ট্রিং তৈরি করুন, এর দৈর্ঘ্য এবং তারপরে সংখ্যার স্ট্রিং প্রতিনিধিত্বের প্রতিটি চিহ্নকে নিজের থেকে বিয়োগ করে স্থান এবং বিয়োগ ব্যতীত একই মানচিত্রটি রেখে যান

আপনি এটি এখানে চলমান দেখতে পাবেন: https://ideone.com/FG4lsB


4

ডায়ালগ এপিএল , 19 17 16 বাইট

≢+#⍎'\d'⎕R'&+',⊢

স্ট্রিং এবং রিটার্ন নেয়

দৈর্ঘ্য
+প্লাস
#রুট নামস্থানে
মূল্যায়ন
'\d'⎕R'&+'একটি সঙ্গে Regex পরিশেষে যোগ ডিজিটের প্লাস
,দ্বারা অনুসরণ
অপরিবর্তিত স্ট্রিং

Gn3 ngn ধন্যবাদ


3

মতলব, 76 67 বাইট

n=input('');t=num2str(n)-48;if(n<0)t(1)=0;t(2)=-t(2);end
n+sum(t+1)

9 লাইট সংরক্ষণ করেছেন লুইস মেন্ডোকে ধন্যবাদ

ব্যাখ্যা:

n=input('');     -- takes input
t=num2str(n)-48; -- makes it a string and then array of digits with "-" becoming -3 (48 is code for 0)
if(n<0)
t(1)=0;          -- set first element (-3) to 0
t(2)=-t(2);      -- the second element is the most significant digit, so we have to negate it
end
n+sum(t+1)       -- take sum of n, sum of all digits and length of t
                    (guaranteed by +1 of every element)

1
sum(t+1)+nএর চেয়ে খাটোsum([n numel(t) t])
লুইস মেন্ডো

1
ওহ, আমি কেন এই কাজ করে তা ভেবে কিছুক্ষণ ব্যয় করেছি। দুর্দান্ত, ধন্যবাদ!
pajonk

3

ডিসি, 57 বাইট

dc -e"0 1?rdsc*d[1r]s+d0>+dZr[+la10~lc*rdsaZ1<A]sAdsaZ1<Ala+++f"

ব্যাখ্যা:

0 1      # Push 0, then 1 on the stack
?        # Wait for input from stdin
         # If input is negative, the leading minus will subtract 1 from 0
r        # Swap (rotate) top two items on stack.
         # Stack status if input (`$') was...
         #       positive                    negative
         # TOP       1     <- coefficient ->    -1
         #           $                           $
         #           0
dsc      # Store a copy of coefficient in `c'
*        # Multiply input by coefficient:
         #  If input was positive, it stays positive.
         #  If input was negative, it's actually interpreted as positive.
         #   In this case, multiply by -1 to make it negative.
d        # Duplicate signed input
[1r]s+   # Define a function `+': Push 1 and rotate
d 0>+    # If input is negative, push 1 underneath the top of the stack
         # This 1 represents the length of the `-` in the input
         # Note that the stack now has 3 items on it, regardless of input sign
dZ       # Push the length of the input (not including leading minus)
r        # Rotate, moving a copy of the input to the top
[        # Begin function definition
 +       # Add top two items of stack
 la      # Load value from `a' (which holds nothing at time of function definition)
 10~     # Slice the last digit off `a' (spoiler: `a' is going to hold the input while
         #  we gather its digits)
 lc*     # Multiply digit by coefficient
         #  Since the input is signed, the input modulo 10 will have the same sign.
         #  We want all digits to be positive, except the leftmost digit, which should
         #   have the sign of the input.
         #  This ensures that each digit is positive.
 r       # Rotate: move remaining digits to top of stack
 dsa     # Store a copy of the remaining digits in `a'
 Z 1<A   # Count the number of digits left; if more than 1, execute A
]sA      # Store the function as `A'
d sa     # Store a copy of the input in `a'
         #  Props to you if you're still reading this
Z 1<A    # Count the number of digits left; if more than 1, execute A
la       # Load leftmost digit of input (still signed appropriately)
+++      # Add the top four items on the stack
f        # Dump stack

এটি আমার প্রত্যাশার চেয়ে অনেক জটিল ছিল! ভাল চ্যালেঞ্জ :)


আমার অনুরূপ দৃষ্টিভঙ্গি আছে কিনা তা দেখার জন্য আমার কাজ করা অবধি আমি আপনার দিকে না তাকানোর এক বিন্দু জানিয়েছিলাম ... তবে আমি দেখতে পাচ্ছি যে আপনি নিজের 10~জন্য অদলবদল করে বাইট ফিরে পেতে পারেন A~!
brhfl

3

বাশ + কোর্টিলস, 36 বাইট

bc<<<$1+${#1}+$(sed s:\\B:+:g<<<0$1)

ব্যাখ্যা:

     $1+                      # the input number (+)
     ${#1}+                   # the length of the number, the '-' sign included (+)
     $(sed s:\\B:+:g<<<0$1)   # insert '+' between two consecutive word characters
                              #A word character is any letter, digit or underscore.
bc<<<                         # calculate the sum

সেডে, \Bটানা দুটি অ-শব্দের অক্ষরের মধ্যেও মিল রয়েছে, তাই নেতিবাচক সংখ্যার জন্য এটি '^' এবং '-' এর মধ্যে মেলে। নোট করুন0$1উদাহরণস্বরূপ, \Bদেওয়ার জন্য প্রয়োজনীয় কৌশলটি0-1+2+3

চালানোর উদাহরণ: 'ইনপুট.টিএসটিএস্ট' এ প্রশ্নের বিবৃতিতে সমস্ত পরীক্ষার কেস রয়েছে

while read N;do echo "$N -> "$(./ILD_sum.sh "$N");done < input.txt

আউটপুট:

87901 -> 87931
123 -> 132
99 -> 119
5 -> 11
1 -> 3
0 -> 1
-3 -> -4
-99 -> -96
-123 -> -115
-900 -> -905
-87901 -> -87886

@ ডিজিটাল ট্রামুমা যা নেতিবাচক পূর্ণসংখ্যার জন্য কাজ করে না।
শৈশুমারা

@ ডিজিটালট্রামা ওয়েল, হ্যাঁ (তবে কোডের আকার পরিবর্তন হবে না) এবং না (যদি সেডটি যেমন রয়েছে তেমন ছেড়ে দেওয়া হয়)। কারণটি হ'ল ব্যাকটিক্সের সাথে তুলনা করে কমান্ড সাবস্টিটিউশন ব্যবহার করার সময় একটি ব্যাকস্ল্যাশকে আলাদাভাবে আচরণ করা হবে $()। ব্যাকটিক্স দিয়ে এটি করার দুটি বিকল্প উপায় রয়েছে তবে উভয়ই শেষ পর্যন্ত একটি 36 বাইট সমাধান দেয়: sed 's:\B:+:g'<<<0$1এবং sed s:\\\B:+:g<<<0$1
শৈশুমারা

2

পাওয়ারশেল ভি 4, 48 বাইট

param($n)$n,"$n".length+[char[]]"$n"-join'+'|iex

এটা করা উচিত v2 + এ কাজ করা , তবে আমি কেবল v4-তে পরীক্ষা করেছি।

ইনপুট নেয় $n,অপারেটরের সমন্বয়ে একটি নতুন অ্যারে তৈরি করে $nএবং .lengthকখন $nস্ট্রিংয়ে রূপান্তরিত হয়। সেই স্ট্রিংটিকে $nচর-অ্যারে হিসাবে কাস্টিনেট করে । তারপরে, পাইপ করার আগে সেই একই অ্যারেটি -joinএকসাথে সম্পাদিত +হয় iex(অনুরূপ eval)। ফলাফলটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।

উদাহরণস্বরূপ, ইনপুট জন্য -123, অ্যারের মত চেহারা হবে (-123, 4, -, 1, 2, 3), এবং স্ট্রিং পরে -joinচেহারা হবে -123+4+-+1+2+3। তারপরে Invoke-Expressionঘটে এবং ফলাফলটি -115আশানুরূপ হয়।


2

load-all175 বাইট সহ ফ্যাক্টর

ভাল, এটি খুব ছোট নয়। আনারি মাইনাসের বিশেষ পরিচালনাটি সত্যই বিরক্তিকর; আমি অনুমান করি যে আমি এটি আরও ভাল করতে পারলাম এবং আমি করব, সম্ভবত।

[ dup [ 10 >base length ] [ [ 10 >base >array [ 48 - ] V{ } map-as ] [ 0 < ] bi [ reverse dup pop* dup pop swap [ neg ] dip dup [ push ] dip ] [ ] if 0 [ + ] reduce ] bi + + ]

এই বিকল্প প্রতিস্থাপন ব্যবহার:

s/(-?[\d]+)\s*->\s*(-?[\d]+)/{ $2 } [ $1 calculate-ild ] unit-test/g

আমরা ওপি'র পরীক্ষার কেসগুলিকে একটি ফ্যাক্টর টেস্ট স্যুটে পরিণত করতে পারি।

USING: arrays kernel math math.parser sequences ;
IN: sum-ild

: sum-digits ( n -- x )
    [ number>string >array [ 48 - ] V{ } map-as ]
    [ 0 < ]
    bi
    [
      reverse dup pop* dup pop swap [ neg ] dip dup [ push ] dip
    ]
    [ ] if
    0 [ + ] reduce ;

: calculate-ild ( n -- x )
  dup
  [ number>string length ]
  [ sum-digits ]
  bi + + ;

USING: tools.test sum-ild ;
IN: sum-ild.tests

{ 87931 } [ 87901 calculate-ild ] unit-test
{ 132 } [ 123 calculate-ild ] unit-test
{ 119 } [ 99 calculate-ild ] unit-test
{ 11 } [ 5 calculate-ild ] unit-test
{ 3 } [ 1 calculate-ild ] unit-test
{ 1 } [ 0 calculate-ild ] unit-test
{ -4 } [ -3 calculate-ild ] unit-test
{ -115 } [ -123 calculate-ild ] unit-test
{ -905 } [ -900 calculate-ild ] unit-test
{ -87886 } [ -87901 calculate-ild ] unit-test

2

সি #, 118 বাইট

int k(int a){var s=a.ToString();for(int i=0;i<s.Length;a+=s[i]<46?-(s[++i]-48)+ ++i-i:(s[i++]-48));return a+s.Length;}

আপনার যে 1+ ++iজায়গাতে জায়গার দরকার তা হ'ল সম্পূর্ণ হাস্যকর ইমো
বিড়াল

আপনি ঠিক বলেছেন তবে
এগুলি

1
আপনি s[i]<46
বিয়োগের

@সিসিডিডিথ আপনি কি পারবেন না ++i+1?
এরিক আউটগল্ফার

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ না, কারণ ইনফিক্স ম্যাথের বোবা ক্রমের মূল্যায়নের
বিড়াল

2

স্পেসবিএএস - 147 বাইট

1 INPUT a$: l=LEN a$: b$="text "+a$+"+"+STR$ l+"+": FOR i=1 TO l: b$=b$+a$(i)+("+" AND i<l): NEXT i: EXECUTE b$

স্ট্রিং তৈরি করে যা তখন রান হয়ে যায়। দুর্ভাগ্যক্রমে শর্টহ্যান্ডের EXECUTEসাথে কাজ করে না , তবে 1 টি অক্ষর সংরক্ষণ করেছে।?PRINTTEXT

এখানে চিত্র বর্ণনা লিখুন


2

সি #, 106 বাইট

আমি জাভা আমার বাইট মারলাম, আমার জীবন শেষ

int r(int n){var s=n+"";return n+s.Length+s.Select((k,j)=>int.Parse(s[k==45?1:j]+"")*(k==45?-2:1)).Sum();}

অবহেলিত (কিন্ডা)

    public static int r(int n)
    {
            var s = n + "";
            return n + s.Length + s.Select((k, j) =>int.Parse(s[k==45?1:j]+"")*(k==45?-2:1)).Sum();
    }

2
নিশ্চিত যে আপনি স্ট্রিংটি var এবং '-' দিয়ে 45
ScifiDeath

আপনি (n)=>{....একটি বেনাম ল্যাম্বডা জন্য করতে পারেন
বিড়াল

বিড়াল আপনি বিস্তারিত বলতে পারেন? আমি নিজেই এটি বের করার চেষ্টা করছি কিন্তু এটি আমার পক্ষে কাজ করছে না। আমি কখনই তা করিনি
17

আমি জানি এটি কিছুক্ষণ হয়ে গেছে, তবে আপনি এটি 89 বাইটে গল্ফ করতে পারেন: n=>n+(n+"").Length+(n+"").Select((k,j)=>int.Parse((n+"")[k<48?1:j]+"")*(k<48?-2:1)).Sum()যদিও আপনাকে +18 যোগ করতে হবে using System.Linq;যার জন্য আপনি নিজের বর্তমান উত্তরে ভুলে গিয়েছিলেন।
কেভিন ক্রুইজসেন

2

জাভা 8, 174 136 122 107 105 93 78 বাইট

i->{int f=0;for(int j:(i+"").getBytes())i+=j<48?f++:f-->0?50-j:j-47;return i;}

-১৪ বাইট @ লিক্যুনকে ধন্যবাদ জানায়
-15 বাইটস @ ক্লিফ্রুটকে ধন্যবাদ ।

ব্যাখ্যা:

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

i->{                   // Method with integer as both parameter and return-type
  int f=0;             //  Integer-flag, starting at 0
  for(int j:(i+"").getBytes())
                       //  Loop over the digits as bytes
    i+=                //   Increase the input with:
       j<48?           //    If the current byte is '-':
        f++            //     Increase the input with the flag-integer `f` (which is 0),
                       //     and increase the flag-integer `f` by 1 afterwards
       :               //    Else:
        f-->0?         //     If the flag-integer `f` is 1,
                       //     and decrease the flag-integer `f` back to 0 afterwards
         50-j          //      Increase it with 50 minus the current byte
        :              //    Else
         j-47;         //     Increase it with the byte as digit
                       //      + 1 to cover for the length part in ILD
  return i;}           //  Return the modified input as result

1
int c(int i){char[]c=(i+"").toCharArray();int x=i,l=c.length,s=i+l,j=-1;for(;++j<l;x=1)s+=x>0?c[j]-38:38-c[++j];return s;}
ফাঁস নুন

1
int c(int i){char[]c=(i+"").toCharArray();for(int x=i,j=-1;++j<c.length;i+=1+Integer.parseInt(x<0?"-"+--c[j+=x=1]:c[j]+""));return i;}এটি অবশেষে জাভাতে গল্ফের মতো অনুভূত হয়েছে এটি প্রথমে ভুল উত্তর দেয় এবং তারপরে ক্র্যাশ হয়।
ক্লিফরুট

@LakakyNun আপনার কোড পরীক্ষার ক্ষেত্রে ব্যর্থ 0
কেভিন ক্রুজসেন

1
ওহ, কত হাস্যকর; দুই ঘটনার পরিবর্তন 38করতে 48
ফাঁস নুন

1
int c(int i){byte[]c=(i+"").getBytes();for(int j=-1;++j<c.length;i+=(c[j]<48?50-c[++j]:c[j]-47));return i;}হ্যাঁ
ক্লিফ্রুট

1

পার্ল 6 - 30 বাইট

আক্ষরিক হিসাবে এটি পায়

{$^a+$^a.chars+[+]($^a.comb)}

এটি একটি বেনামি ফাংশন হিসাবে ব্যবহার করুন

> {$^a+$^a.chars+[+]($^a.comb)}(99)
119 

1

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

n=>eval([n+=``,n.length,...n].join`+`)

পুরানো যোগদান এবং ইওল ট্রিক ব্যবহার করে। আমি যদি স্ট্রিং ইনপুটটিতে জোর দিতে পারি তবে 4 বাইট সংরক্ষণ করুন:

f=
n=>eval([n,n.length,...n].join`+`)
;
<input type=number oninput=o.value=f(this.value)><input id=o readonly>


"আমাকে যদি পূর্ণসংখ্যার প্রতিনিধিত্বমূলক পূর্ণসংখ্যা এবং স্ট্রিং উভয়কেই অনুমতি দিতে হয় তবে 4 বাইট যুক্ত করুন" আপনি না, এটি বেছে নেওয়া isচ্ছিক, তবে সম্ভবত 99.9% পূর্ণসংখ্যা বেছে নেবে। আমি এটি প্রধানত বিরল ভাষাগুলির জন্য যুক্ত করেছি যা কেবল স্ট্রিংগুলিকে সমর্থন করে তবে প্রায় প্রতিটি ভাষাই যেহেতু আমার প্রশ্ন থেকে সেই অংশটি সরিয়ে ফেলব।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এর আগে অস্পষ্ট হওয়ার জন্য দুঃখিত; 34-বাইট সংস্করণটি কেবল স্ট্রিংগুলিতে কাজ করে।
নীল

1

সি ++, 255 বাইট

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main(){
    string input;
    cin >> input;
    int sum = atoi(input.c_str()) + input.length();
    for(unsigned i = 0; i < input.length(); ++i)
        sum += input.at(i) - 48;
    return 0;
}

1

পার্ল 5 - 37 বাইট

warn eval(join'+',/./g)+($_+=()=/./g)

ইনপুটটি $ _ এ রয়েছে


1

জাভাস্ক্রিপ্ট (বাইরের লাইব্রেরি ব্যবহার করে) (45 বাইট)

আমি জাভাস্ক্রিপ্টে লিনকিউ আনার জন্য লিখেছিলাম এমন একটি লাইব্রেরি ব্যবহার করে, আমি নিম্নলিখিতগুলি লিখতে সক্ষম হয়েছি:

(i)=>i+(i+"").length+_.From(i+"").Sum(x=>x|0)

এখানে চিত্র বর্ণনা লিখুন


1
লাইব্রেরিতে লিঙ্ক?
ফেজ

github.com/mvegh1/Eeumerable । এখনও কোনও ডক্স নেই, দুঃখিত
আপেলজ্যাকস 01

1

সি, 132 116 113 80

t,c;f(char*v){for(c=atoi(v+=t=*v==45);*v;t=0,++v)c+=t?50-*v-2*c:*v-47;return c;}

ফাংশনটি f()স্ট্রিং হিসাবে ইনপুট নেয় এবং পূর্ণসংখ্যার হিসাবে ফলাফল প্রদান করে। পুরো প্রোগ্রাম সংস্করণ (113 বাইট):

t;main(int c,char**v){char*p=v[1];c=atoi(p+=t=*p==45);for(c=t?-c:c;*p;++p,t=0)c+=t?50-*p:*p-47;printf("%d\n",c);}

একটি যুক্তি প্রয়োজন।


1

পার্ল, 27 বাইট

22 বাইট কোড + 5 এর জন্য -paF

$"="+";$_+=@F+eval"@F"

ব্যাখ্যা

ব্যবহার -aautosplit বিকল্প (একটি খালি বিভেদক সঙ্গে -F) ডিজিটের গৃহীত একটি অ্যারের তৈরি করা। যাদু পরিবর্তনশীল ব্যবহার $"যা হয়েছে তা নিয়ন্ত্রণ গৃহস্থালির কাজ যখন এটি একটি স্ট্রিং মধ্যে ইন্টারপোলেট এর একটি অ্যারের যোগদানের জন্য ব্যবহার করা হয় (আমরা ব্যবহার"+" এখানে) এবং সত্য একটি তালিকা যে স্কেলার প্রসঙ্গে ব্যবহৃত তালিকার দৈর্ঘ্য (অঙ্কের সংখ্যা) ফিরিয়ে দেবে।

ব্যবহার

echo -n 99 | perl -paF -e'$"="+";$_+=@F+eval"@F"'
119

পার্ল, 27 বাইট

22 বাইট কোড + 5 এর জন্য -paF

বিকল্প সমাধান, এটি আর কোনও বাইটের জন্য অনেক বেশি পঠনযোগ্য। আমি অন্যটিকে আরও ক্রিপ্টিক দেখায় পছন্দ করি!

$_+=@F+eval join"+",@F

1

ডিসি, 56 বাইট

?dZrdd1sa[1+r0r-_1sa]sb0>b[A~rd0<x]dsxxrla*[+z1<y]dsyxp

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

?                #input
dZrdd            #find no. of digits, rotate to bottom of stack, dup input twice
1sa              #coefficient for first digit stored in register 'a'
[1+r0r-_1sa]sb   #macro 'b' executes on negative numbers. add one (for the neg. sign)
                 #rotate this value out of the way, leave a positive copy on top
0>b              #run the above macro if negative
[A~rd0<x]dsxx    #create and run macro 'x'; mod 10 to grab least significant digit
                 #keep doing it if quotient is greater than zero
rla*             #a zero remains in the way of our most significant digit, rotate it down
                 #and multiply said digit by our coefficient 'a' from earlier
[+z1<y]dsyx      #add two top stack values (we left that zero there to ensure this always
                 #works), check stack depth and keep doing it while there's stack
p                #print!

1

আর, 108 বাইট

আবার পার্টিতে কিছুটা দেরি হলেও এখানে চলে গেছে:

s=strsplit(paste(n<-scan()),"")[[1]];n+nchar(n)+sum(as.integer(if(n<0)c(paste0(s[1],s[2]),s[1:2*-1])else s))

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

সতর্কতা বার্তাগুলি অনুমোদিত হলে ব্যতিক্রমটি কিছুটা (96 বাইটে) গল্ফ করা যায়।

s=as.integer(strsplit(paste(n<-scan()),"")[[1]]);if(n<0){s[2]=s[2]*-1;s=s[-1]};n+nchar(n)+sum(s)

এই ক্ষেত্রে স্ট্রিং ভেক্টর সরাসরি ব্যবহার করে পূর্ণসংখ্যায় রূপান্তরিত হয় as.integer। যাইহোক, নেতিবাচক সংখ্যার জন্য ভেক্টর প্রথম উপাদান একটি বিয়োগ চিহ্ন হবে: "-"। এটি কিছু ঝামেলার কারণ করে: যেমন: as.numeric(c("-",1,2,3))ফিরে আসবে NA 1 2 3এবং একটি সতর্কতা বার্তা। এটির জন্য, এনএ সরান এবং তারপরে -1যোগফল নেওয়ার আগে প্রথম উপাদানটি দিয়ে গুণ করুন ।


1

আরপিগ্রন, 30 বাইট

] '' . ] '-?.' | sum _ \ L + +

Explination

]               # Clone the input
                #
'' . ]          # Convert it to a string, then clone it again.
'-?.' | sum     # Split it into chunks via the pattern '-?.' (A - if there is one, followed by a single character). Sum the resulting array.
_               # Floor the value, purely because I hate floats.
\ L + +         # Swap the top value with the value underneith it, to work with the string again. Get it's length, add the top, middle, and bottom, which is now the length, the sum and the input respectively.

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



1

এডাব্লুকে , 64 63 61 বাইট

{s=j=0;for(;j++<n=split($1,a,"");s+=$1>0||j-2?a[j]:-a[j]);$0+=n+s}1

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

টিআইও লিঙ্কটিতে s=j=0;মাল্টি-লাইন ইনপুটটির জন্য 6 টি অতিরিক্ত বাইট রয়েছে । এটি আমি নিয়ে আসতে পারি সবচেয়ে সংক্ষিপ্ততম পদ্ধতি। আমি যদি আগ্রহী তবে এটিকে আরও ছোট করে করা যায় কিনা AWK

2-বাইট সংরক্ষণ করা হয়েছে, ধন্যবাদ কেভিন


1
(-2 বাইট) $0=n+s+$0গল্ফ করা যাবে না $0+=n+s?
কেভিন ক্রুইজসেন

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