স্কয়ার এ নাম্বার আমার ওয়ে


32

লোকেরা আমাকে বলতে থাকে যে কোনও সংখ্যার বর্গটি সংখ্যাটি নিজেই গুণিত হয়। এটা স্পষ্টতই মিথ্যা। কোনও সংখ্যার বর্গক্ষেত্রের সঠিক উপায় হ'ল এটিটিকে একটি বর্গক্ষেত্রে পরিণত করা, এটি নিজের উপরের সংখ্যার সমান সংখ্যক বারের উপরে নিজের উপর স্ট্যাক করে এবং তারপরে ফলক বর্গ থেকে সমস্ত সংখ্যা উভয় অনুভূমিকভাবে পড়া (থেকে কেবল বাম থেকে ডানদিকে) এবং উল্লম্বভাবে (কেবলমাত্র উপরে থেকে কেবল) এবং তারপরে এগুলি যুক্ত করে। সুতরাং, 123 সংখ্যাটির জন্য, আপনি প্রথমে বর্গ তৈরি করুন:

123
123
123

তারপরে আপনি স্কোয়ার থেকে সমস্ত সারি এবং কলাম নিয়ে যাবেন এবং এগুলি একসাথে যুক্ত করুন:

123+123+123+111+222+333

যা আমাদের একটি ফলাফল দেয় 1035

নেতিবাচক সংখ্যার জন্য, আপনি সাধারণত স্ট্যাক করুন (মনে রাখবেন আপনি কেবল অঙ্কের সংখ্যা গণনা করেন , তাই নেতিবাচক চিহ্নটি দৈর্ঘ্যের মধ্যে অন্তর্ভুক্ত নয়), এবং তার পরে অনুভূমিক সংখ্যাগুলি সাধারণত পড়ুন (নেতিবাচক চিহ্ন সহ), এবং তারপরে নেতিবাচক চিহ্নগুলি উপেক্ষা করুন উল্লম্ব সংখ্যা। সুতরাং, সংখ্যার জন্য -144আমরা বর্গাকার পাই:

-144
-144
-144

যা আমাদের দেয় -144-144-144+111+444+444, সমান567

শুধুমাত্র একটি অঙ্কের সংখ্যার জন্য, বর্গক্ষেত্র সর্বদা দ্বিগুণ সংখ্যার সমান (একবার অনুভূমিকভাবে এবং একবার উল্লম্বভাবে পড়ুন)। সুতরাং 4আমাদের দেয়

4

যা আমাদের দেয় 4+4, সমান 8

দশমিক অংশের সাথে সংখ্যার জন্য, সাধারণত স্ট্যাক করুন (মনে রাখবেন যে আপনি সংখ্যাটি যে পরিমাণে স্ট্যাক করেন তার মধ্যে কেবল অঙ্কগুলি গণনা করা হয়, এবং সুতরাং দশমিক পয়েন্টটি গণনা করা হয় না) এবং উল্লম্ব সংখ্যাগুলি পড়ার সময় দশমিক চিহ্নগুলি উপেক্ষা করুন। উদাহরণস্বরূপ, নম্বরটি 244.2আমাদের দেয়

244.2
244.2
244.2
244.2

যা আমাদের দেয় 244.2+244.2+244.2+244.2+2222+4444+4444+2222, সমান 14308.8

ভগ্নাংশ বা জটিল সংখ্যাগুলি স্কোয়ার করা যায় না।

তোমার কাজ:

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

উদাহরণ:

123    -> 1035
388    -> 3273
9999   -> 79992
0      -> 0
8      -> 16
-6     -> 0
-25    -> 27
-144   -> 567
123.45 -> 167282.25
244.2  -> 14308.8
2      -> 4
-0.45  -> 997.65
0.45   -> 1000.35

স্কোরিং:

আমার হাতগুলি সেই সমস্ত স্কোয়ারটি লেখার থেকে জটিল হয়ে উঠছে, এবং আমার কম্পিউটার অনুলিপি / পেস্ট সমর্থন করে না, তাই টাইপ করার জন্য আমার ন্যূনতম পরিমাণ কোড সহ এন্ট্রি (কোনও কারণে বাইটে পরিমাপ করা?) জয়!


1
"123.45" এবং "244.2" বৈধ ভাসমান এবং নিজেই নয় কারণ কম্পিউটারে বাইনারিতে নম্বর রয়েছে। দশমিক উপস্থাপনার উপর সমস্যা নির্ভর না হওয়া পর্যন্ত এটি সাধারণত কোনও সমস্যা নয়।
লিকি নুন

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

@ গ্রিফন তাই আমাদের অবশ্যই স্ট্রিং হিসাবে ইনপুট নিতে হবে?
লিকি নুন

3
@ গ্রিফোন এটি এখানেই ব্যর্থ হয়। 244.2ভাসা সংখ্যা নয়। এটি স্ট্রিংয়ে রূপান্তর করা যায় না "244.2"
লিকি নুন

3
@Gryphon কিন্তু মত আচরণ এই এটা খুব অসুবিধাজনক করে তোলে।
লিকি নুন

উত্তর:


8

05 এ বি 1 ই , 7 বাইট

þSDg×+O

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

ব্যাখ্যা

þSDg×+O Implicit input
þ       Keep digits
 S      Get chars
  D     Duplicate
   g    Length
    ×   Repeat string(s)
     +  Add (implicit input added to all elements)
      O Sum

3
আপনি দয়া করে করতে পারেন যখন খুব ব্যাখ্যা
জোনাথন অ্যালান

1
এছাড়াও আমি নোট হবে একক শূন্য ইনপুটের প্রয়োজন জন্য -1 <ইনপুট <1 (অর্থাত 0.45 এবং .45 বিভিন্ন ইনপুট কিন্তু একই সংখ্যা হয়, শুধুমাত্র সাবেক গ্রহণযোগ্য)
জোনাথন অ্যালান

@ জোনাথান অ্যালান দ্বিতীয়ত কোনওভাবেই পরিচালনা করা হয় না।
এরিক আউটগল্ফার

@ জোনাথান অ্যালান হয়ে গেছে
এরিক দি আউটগল্ফার

7

জেলি ,  13  12 বাইট

fØDẋ€L$ŒV+VS

একটি মোনাডিক লিঙ্ক অক্ষরের একটি তালিকা গ্রহণ করে (একটি সুসংগঠিত দশমিক সংখ্যা, একক শীর্ষস্থানীয় শূন্য -1 <n <1 এর প্রয়োজনীয়তা ) এবং একটি সংখ্যা ফেরত দেয়।

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

14 গ্রহণ করতে এবং রিটার্ন সংখ্যা (ইনপুট এ সীমাবদ্ধ বাইট +/- 10 -5 দ্বারা ŒṘ): ŒṘfØDẋ€L$ŒV+⁸S

কিভাবে?

fØDẋ€L$ŒV+VS - Link: list of characters         e.g. "-0.45"
 ØD          - yield digit characters                "0123456789"
f            - filter keep                           "045"
      $      - last two links as a monad:
     L       -   length (number of digit characters) 3
   ẋ€        -   repeat list for €ach digit          ["000","444","555"]
       ŒV    - evaluate as Python code (vectorises)  [0,444,555]
          V  - evaluate (the input) as Jelly code    -0.45
         +   - addition (vectorises)                 [-0.45,443.55,554.55]
           S - sum                                   997.65

উম্মে, আপনি প্রতিস্থাপন করতে পারেন +€সঙ্গে +-1 15-বাইট সংস্করণে।
এরিক আউটগল্ফার

ইতিমধ্যে করেছি, যদিও ধন্যবাদ!
জোনাথন অ্যালান

উম্মে 15-বাইট সংস্করণে নেই। সম্পাদনা: 3 সেকেন্ড খুব তাড়াতাড়ি আমার মনে হয় ...
এরিক দ্য আউটগল্ফার

হ্যাঁ সবেমাত্র আপনি 15 বাইট সংস্করণটি লক্ষ্য করেছেন - আবার ধন্যবাদ!
জোনাথন অ্যালান

6

হাস্কেল, 59 56 বাইট

f s|l<-filter(>'.')s=0.0+sum(read<$>(s<$l)++[c<$l|c<-l])

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

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

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

l<-filter(>'.')s      -- let l be the string of all the numbers of the input string
f s   = 0.0 + sum     -- the result is the sum of (add 0.0 to fix the type to float)
   read<$>            -- turn every string of the following list into a number
   s<$l               -- length of l times the input string followed by
   [c<$l|c<-l]        -- length of l times c for each c in l   

5

জাপট ভি 2 , 16 বাইট

o\d
l
¬xpV +V*Ng

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

o\d    First line: Set U to the result.
o      Keep only the chars in the input that are
 \d      digits. (literally /\d/g)

l    Second line: Set V to the result.
l    U.length

¬xpV +V*Ng    Last line: implicitly output the result.
¬             Split U into chars.
 x            Sum after
  pV            repeating each V times.
     +V*Ng    Add V * first input (the sum of the horizontals) to the result.

4

সি # (.নেট কোর), 150 141 133 বাইট

9 লেটলকোডারকে 9 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে @ দ্য লেথলকোডারকে ধন্যবাদ
আরও 8 টি বাইট

a=>{var c=(a+"").Replace(".","").Replace("-","");int i=0,l=c.Length;var r=a*l;for(;i<l;)r+=int.Parse(new string(c[i++],l));return r;}

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

একটি ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং 'স্কোয়ারড' নম্বরটিকে একটি ফ্লোট হিসাবে আউটপুট করে।


এই কোডটি নিম্নলিখিত অ্যালগরিদম অনুসরণ করে:

  1. ইনপুট থেকে একটি নতুন স্ট্রিং তৈরি করুন, তবে দশমিক পয়েন্ট এবং চিহ্ন ছাড়া, যাতে আমরা সেখান থেকে কলামগুলির জন্য আমাদের দৈর্ঘ্য এবং সংখ্যাগুলি পেতে পারি।

  2. পয়েন্ট 1 এ আমরা যে স্ট্রিংটি তৈরি করেছি তার দৈর্ঘ্যের ইনপুট গণনা করুন।

  3. আমাদের 'স্কোয়ার' এর প্রতিটি কলামের জন্য কলাম নম্বর এবং সারি দৈর্ঘ্য সহ একটি নতুন স্ট্রিং তৈরি করুন এবং এটি আমাদের ফলাফলের সাথে যুক্ত করুন।

উদাহরণ:

ইনপুট: -135.5

  1. যদি আমরা দশমিক পয়েন্ট এবং প্রতীকগুলি প্রতিস্থাপন করি তবে আমরা স্ট্রিংটি পাই 1355, যার দৈর্ঘ্য রয়েছে 4
  2. ইনপুট বার 4: -135.5 * 4 = -542
  3. এখন আমরা প্রতিটি কলামের জন্য নতুন স্ট্রিং তৈরি করেন, তাদের বিশ্লেষণ করতে এবং তাদেরকে আমাদের ফলাফল যোগ করুন:
    1111, 3333, 5555, 5555

যদি আমরা এই সংখ্যাগুলি যোগ করি তবে 15012আমাদের প্রোগ্রামটি আউটপুট দেবে which


1
সাইটে স্বাগতম, এবং প্রথম প্রথম উত্তর (বিশেষ করে ব্যাখ্যা প্রশংসা করা হয়!)!
দাদা

@ দাদা আপনাকে ধন্যবাদ! এমনকি শক্ত আমি এর মতো স্টাফ থেকে যে বাইটগুলি পেয়েছি তা থেকে আমি সন্তুষ্ট নই string.Replace(), তবে আমার অনুমান যে এটি কেবলমাত্র কাজ করে!
ইয়ান এইচ।

কিছু বাইট সেট iএবং lভাসমান দ্বারা সংরক্ষণ করতে সক্ষম হতে পারে ।
TheLethalCoder

@ দ্য লেথালকোডার সেই হিসাবে ভেবেছিলেন, দুঃখের সাথে সূচকগুলি ভাসমানগুলির সাথে কাজ করে না এবং স্পষ্টতই ফ্লোটে .Lengthরূপান্তরিত হতে পারে না।
ইয়ান এইচ।

1
a=>{var c=a.Replace(".","").Replace("-","");int i=0,l=c.Length;var r=float.Parse(a)*l;for(;i<l;)r+=int.Parse(new string(c[i++],l));return r;}141 বাইট। হিসাবে ইনপুট গ্রহণ করে floatএবং একটি স্ট্রিংয়ের সাথে কাস্টিং দিয়ে সঞ্চয় করতে সক্ষম হতে পারে n+""তবে আমি পরীক্ষা করে দেখিনি।
TheLethalCoder

3

ব্র্যাচল্যাগ , 23 বাইট

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+

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

ব্র্যাচল্যাগ ভাসা নিয়ে ভাল যায় না ...

ব্যাখ্যা:

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+ Takes string (quoted) input, with '-' for the negative sign
     ᶠ                  Return all outputs (digit filter)
{   }                    Predicate (is digit?)
 ∋                        An element of ? (input)
  ị                       Convert to number (fails if '-' or '.')
   ṫ                      Convert back to string (needed later on)
      ⟨   ⟩             Fork
       ≡                 Identity
         l               Length
                        with
        z                Zip
             ᵐ          Map
            ₎            Subscript (optional argument)
           j              Juxtapose (repeat) (this is where we need strings)
              ;         Pair with literal
               [ ]       List
                ?         ?
                  z     Zip
                   c    Concatenate (concatenate elements)
                     ᵐ  Map
                    ị    Convert to number
                      + Add (sum elements)

3

হুশ , 15 বাইট

§+ȯṁrfΛ±TṁrSR#±

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

ব্যাখ্যা

এটি কিছুটা বিরক্তিকর যে বিল্ট-ইন পার্সিং ফাংশনটি rএকটি ডিফল্ট মান ফেরানোর পরিবর্তে অবৈধ ইনপুটগুলিতে পার্স ত্রুটি দেয়, যার অর্থ আমাকে অ-অঙ্কগুলি নিয়ে গঠিত কলামগুলিকে স্পষ্টভাবে ফিল্টার করতে হবে। যদি এটি ত্রুটিযুক্ত ইনপুটগুলিতে 0 ফিরে আসে তবে আমি fΛ±3 বাইট ফেলে এবং সেভ করতে পারি ।

§+ȯṁrfΛ±TṁrSR#±  Implicit input, e.g. "-23"
             #±  Count of digits: 2
           SR    Repeat that many times: ["-23","-23"]
         ṁr      Read each row (parse as number) and take sum of results: -46
  ȯṁrfΛ±T        This part is also applied to the result of SR.
        T        Transpose: ["--","22","33"]
     fΛ±         Keep the rows that contain only digits: ["22","33"]
   ṁr            Parse each row as number and take sum: 55
§+               Add the two sums: 9

3

পাইথন 3 , 95 94 87 85 84 বাইট

def f(i):l=[x for x in i if"/"<x];k=len(l);print(k*float(i)+sum(int(x*k)for x in l))

টেস্ট স্যুট

পাইথন 3 , 78 বাইট

lambda x:sum(float(i*len(z))for z in[[i for i in str(x)if"/"<i]]for i in[x]+z)

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

দ্বিতীয় পদ্ধতিরটি পাইপথন 3-এর একটি বন্দর যা @ অ্যাসিডিয়ালেম এর সমাধান দ্বারা অনুপ্রাণিত হয়।


3

পাইথন 2 , 81 74 বাইট

-7 বাইটস @ মিঃ কে ধন্যবাদ এক্সকোডার :'/'<i

  • পূর্ণসংখ্যা বা ভাসা লাগে, ভাসা ফেরত দেয়।
lambda x:sum(float(i*len(z))for z in[[i for i in`x`if"/"<i]]for i in[x]+z)

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

ব্যাখ্যা:

বলুন 123.45ইনপুট হিসাবে দেওয়া হয়। [i for i in`x`if"/"<x]স্ট্রিংযুক্ত সংখ্যার ['1','2','3','4','5'](যা হ'ল z) একটি তালিকা দেয় । এখন আমরা বলছি মাধ্যমে [x]+zঅর্থাত [123.45,'1','2','3','4','5'], দ্বারা প্রতিটি উপাদান গুন len(z)এখানে 5এবং ভাসা প্রতিটি রূপান্তর (তাই স্ট্রিং এছাড়াও তদনুসারে রূপান্তর যে), ফলনশীল [617.25,11111.0,22222.0,33333.0,44444.0,55555.0]। অবশেষে আমরা গণনা sum(...)এবং প্রাপ্ত 167282.25


78 বাইট । প্রতিস্থাপন i.isdigit()সঙ্গে"/"<i<":"
জনাব Xcoder

1
74 বাইট । আপনি প্রতিস্থাপন করতে পারেন i.isdigit()সঙ্গে "/"<i, আসলে, কারণ তাদের উভয়ই .এবং -সংখ্যার চেয়ে কম হওয়া ASCII কোড রয়েছে, এডিএন /তাদের মধ্যে রয়েছে
জনাব Xcoder

আপনাকে স্বাগতম. আমি আমার উত্তরের বিকল্প হিসাবে পাইথন 3 এ পোর্ট করেছি
মিঃ এক্সকোডার

3

জাভাস্ক্রিপ্ট, 75 62 বাইট

a=>(b=a.match(/\d/g)).map(b=>a+=+b.repeat(c),a*=c=b.length)&&a

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

-2 ধন্যবাদ বাইট Arnauld
-5 ধন্যবাদ বাইট রোমশ (আমি যদিও ফাংশন, একটি সংখ্যা অবশ্যই পেতে হবে কিন্তু এখন আমি অন্য উত্তরের যে দেখতে অনেকটা খুব স্ট্রিং গ্রহণ)


3

পার্ল 5 , 37 33 + 1 (-পি) = 38 34 বাইট

$_*=@n=/\d/g;for$\(@n){$_+=$\x@n}

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

4 বাইট শেভ করতে ডোমের কোড থেকে কিছু কৌশল ব্যবহার করা হয়েছে

ব্যাখ্যা:

@n=/\d/g;    # extract digits from input
$_*=@n;      # multiply input by number of digits
for$\(@n){   # for each digit:
  $_+=       # add to the input
  $\x@n}     # this digit, repeated as many times as there were digits
             # taking advantage of Perl's ability to switch between strings
             # and numbers at any point

একটি খুব অনুরূপ পদ্ধতির সাথে হাজির হয়েছে, তবে $ using ব্যবহার করে এবং লুপটি থেকে বেরিয়ে কয়েকটা বাইট ছাড়িয়েছে: অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

আমার চুল কাটাতে আপনার কাছ থেকে কিছু অনুপ্রেরণা ব্যবহার করেছেন। আপনার শেষে "} {" কী তৈরি? আমি তার সাথে পরিচিত নই।
এক্সকালি

এটি আমি এই সাইট থেকে শিখেছি, এটি মূলত -nএবং -pআক্ষরিকভাবে while(){...}কোডের চারপাশে মোড়ানো তাই এর মধ্যে }{ব্রেক হয়ে যায়। এই আনসেটগুলি $_কিন্তু আপনি যদি $\ নিজের ভেরিয়েবল হিসাবে ব্যবহার করেন তবে এটি এখনও মুদ্রিত হবে যেহেতু $\ প্রতিটি মুদ্রণের সাথে যুক্ত হয়। এর অর্থ আপনি এতে নম্বর বা কিছু সঞ্চয় করতে পারেন এবং তা উপেক্ষা করতে পারেন $_। এটি দুর্দান্ত ব্যাখ্যা ছিল তা নিশ্চিত নন, তবে পার্ল থ্রেডে g গল্ফ করার টিপসটি দেখুন , আমি নিশ্চিত যে এটি আরও ভাল ব্যাখ্যা করব! যদিও আপনার স্কোরকে সাহায্য করেছেন বলে খুশি!
ডোম হেস্টিংস



2

পাইথ , 21 20 বাইট

K@jkUTQ+smv*lKdK*lKv

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

@ এরিকথআউটগলফারের উত্তর থেকে সম্পূর্ণ ভিন্ন পদ্ধতির ব্যবহার করে , যা আমাকে 22 থেকে 21 অবধি চ্যাটে 1 গল্ফ গল্ফ সাহায্য করেছিল।


ব্যাখ্যা

K@jkUTQ+s.ev*lKbK*lKv

কে @ জেকিউকিউ - অঙ্কগুলি ফিল্টার করে এবং একটি ভেরিয়েবল কেতে নির্ধারণ করে
         m - মানচিত্র। একটি ভেরিয়েবল দিয়ে অঙ্কগুলির মাধ্যমে পরিলক্ষিত d
           v - মূল্যায়ন (ফ্লোটে রূপান্তর)।
            * lKd - কে এর দৈর্ঘ্যে প্রতিটি স্ট্রিং ডিজিটকে গুণ করে
        s - যোগফল
       + - যোগফল
                 * lKvQ - স্ট্রিংয়ের সংখ্যাগুলির দৈর্ঘ্য অনুসারে সংখ্যাটি গুণ করে

2

অক্টাভা , 100 82 বাইট

আমাকে ধন্যবাদ দেওয়ার জন্য অনেক ধন্যবাদ @ টমকিয়ারপেন্ডার যে অ্যাসাইনমেন্টগুলির একটি ফেরতের মূল্য রয়েছে এবং আমাকে 18বাইটস সংরক্ষণ করেছেন !

@(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(s'*logspace(0,n-1,n)))

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

Ungolfed / ব্যাখ্যা

function f=g(v)
  s=strrep(num2str(abs(v)),'.','')-'0';  % number to vector of digits (ignore . and -)
  n=nnz(s);                              % length of that vector
  f=n*v+sum(sum(s'*logspace(0,n-1,n)))   % add the number n times and sum the columns of the square
end

যেভাবে এটি কাজ করে তা হ'ল মূলত আমাদের নিজের সংখ্যাটি nবার যুক্ত করতে হবে এবং তারপরে কলামগুলির যোগ যোগ করতে হবে। সাম্মিং s' * logspace(0,n-1,n)কলামগুলির যোগফল অর্জন করে, উদাহরণস্বরূপ যদি v=-123.4সেই ম্যাট্রিক্স হয়:

[ 1     10    100   1000;
  2     20    200   2000;
  3     30    300   3000;
  4     40    400   4000 ]

সুতরাং আমাদের কেবল sumএটি করা দরকার এবং আমরা শেষ করেছি।


1
আপনি সমস্ত বেনামে কোনও বেনামি ফাংশনে মিশিয়ে 18 বাইট সংরক্ষণ করতে পারেন @(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(s'*logspace(0,n-1,n)))এটি অনলাইন চেষ্টা করুন!
টম কার্পেন্টার

1

সুইফট 4 , 139 134 বাইট

func f(s:String){let k=s.filter{"/"<$0};print(Float(s)!*Float(k.count)+k.map{Float(String(repeating:$0,count:k.count))!}.reduce(0,+))}

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


ব্যাখ্যা

  • func f(s:String)- fএকটি স্প্রিং স্ট্রিং প্যারামিটার সহ একটি ফাংশন সংজ্ঞায়িত করে s

  • let k=s.filter{"/"<$0}- ডিজিটের ফিল্টারগুলি: আমি লক্ষ্য করেছি যে উভয় -এবং .ভাবে সংখ্যা বসিয়ে চেয়ে ছোট হওয়া ASCII মান আছে, এবং /মধ্যে ., -এবং 0। অতএব, আমি "/"আমার পাইথন উত্তরে যেমনটি করেছি, তেমনি আমি এখনকার চরিত্রের চেয়ে ছোট কিনা তা যাচাই করেছিলাম।

  • print(...) - ফলাফল মুদ্রণ।

  • Float(s)!*Float(k.count)- স্ট্রিং এবং অঙ্কের সংখ্যা উভয়কে ফ্লোটে রূপান্তর করে এবং তাদের গুণ করে (সুইফট ফ্লোট এবং আন্ত গুণকে অনুমতি দেয় না :())। সুতরাং এটি সংখ্যার xবার যুক্ত করে, xএটিতে থাকা সংখ্যাগুলির সংখ্যা কোথায় ।

  • k.map{Int(String(repeating:$0,count:k.count))!- বর্তমান মান সহ k.map{}মানচিত্র । প্রতিটি অঙ্ক নেয়, অভিন্ন অঙ্কের একটি স্ট্রিং তৈরি করে এবং এটি একটি ভাসমান-পয়েন্ট সংখ্যায় রূপান্তর করে।k$0String(repeating:$0,count:k.count)xFloat(...)!

  • .reduce(0,+) - উপরের তালিকার যোগফল পাবে।

  • এবং শেষ পর্যন্ত +দুটি ফলাফলের যোগফল।


আসুন একটি উদাহরণ নেওয়া যাক!

আমাদের স্ট্রিং বলুন "0.45"। প্রথমে, আমরা অঙ্কগুলি ফিল্টার করি, তাই আমাদের সাথে বাকী থাকে 0, 4, 5। আমরা রূপান্তর "0.45"ডিজিটের সংখ্যা দ্বারা ভাসা এবং সংখ্যাবৃদ্ধি: 0.45 * 3 = 1.35। তারপর আমরা প্রতিটি অঙ্ক গ্রহণ করা এবং যে অঙ্ক পুনরাবৃত্তি না হওয়া পর্যন্ত স্কয়্যার (আছে কত সংখ্যার) প্রস্থ পূরণ একটি স্ট্রিং মধ্যে এটি চালু: 0, 4, 5 -> 000, 444, 555। আমরা এই যোগফল 000 + 444 + 555 = 999,। তারপর আমরা একসাথে ফলাফল যোগ করুন: 1.35 + 999 = 1000.35


1

সি #, 139 137 বাইট

using System.Linq;n=>{var d=(n+"").Where(char.IsDigit);return d.Sum(i=>int.Parse(new string(i,d.Count())))+new int[d.Count()].Sum(_=>n);}

@ আইএন এইচ ধন্যবাদ 2 বাইট সংরক্ষণ করা

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

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func<double, double> f = n =>
            {
                var d = (n + "").Where(char.IsDigit);
                return d.Sum(i => int.Parse(new string(i, d.Count()))) + new int[d.Count()].Sum(_ => n);
            };

            Console.WriteLine(f(123));
            Console.WriteLine(f(-144));
            Console.WriteLine(f(4));
            Console.WriteLine(f(244.2));

            Console.ReadLine();
        }
    }
}

var d=(n+ ...পরিবর্তে ব্যবহার করে আপনি শুরুতে 2 বাইট সংরক্ষণ করতে পারেন var d = (n ...
ইয়ান এইচ।

@IanH। সমস্ত স্পেস সরিয়ে ফেলতে ভুলে গেছেন --_- সমর্থন কল করার সময় উত্তর দেওয়ার জন্য আমি এটাই পাই।
TheLethalCoder

1

গণিত, 107 বাইট

(t=Length[s=#&@@RealDigits[#]//.{a___, 0}:>{a}];If[IntegerPart@#==0,t++];t#+Tr[FromDigits@Table[#,t]&/@s])&

1

পিএইচপি, 78 88 +1 বাইট

for($e=preg_match_all("#\d#",$n=$argn);~$c=$n[$i++];)$s+=str_repeat($c,$e);echo$s+$n*$e;

পাইপ হিসাবে চালান -nR

পিএইচপি 7.1 এ সতর্কতা জন্মাতে পারে। ঠিক করার জন্য $c,$eসঙ্গে পুনরায় স্থান $c>0?$c:0,$e


0

পাইথন 3 , 68 70 73 77 বাইট

lambda n:sum(float(n)+int(_*sum(x>"/"for x in n))for _ in n if"/"<_)

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

প্রতিটি অঙ্কের অক্ষরের উপরে লুপ হয় এবং সামগ্রিক অঙ্কের অক্ষর দ্বারা এটি পুনরাবৃত্তি করে, এটি একটি পূর্ণসংখ্যায় পরিণত করে এবং এতে যোগ করে n। এই উপায়ে nযোগ dসময় হয়, যোগ অঙ্কের অনুভূমিক অংশের সাথে অঙ্কের পুনরাবৃত্তি, যা উল্লম্ব অংশ। মূলত ব্যবহৃত হয়েছে str.isdigitতবে >"/"এই থ্রেডে অন্যকে ধন্যবাদ, প্রচুর বাইট সংরক্ষণ করেছে। nস্ট্রিং হিসাবে নিয়ে দুটি বাইট সংরক্ষণ করে , তবে আউটপুটটি আরও মেসওয়্যার করে।

lambda n:sum(n+int(_*sum(x>"/"for x in str(n)))for _ in str(n)if"/"<_)

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

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