বিকল্প সংখ্যা


12

ধনাত্মক পূর্ণসংখ্যার অ্যারে বিবেচনা করুন:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...

তারপরে, তাদেরকে সম্মতি জানাতে:

1234567891011121314151617181920212223242526...

এবং তারপরে এগুলি পরিবর্তনশীল দৈর্ঘ্যের অংশগুলিতে বিভক্ত করুন, প্রতিটি দৈর্ঘ্য N ম ধনাত্মক পূর্ণসংখ্যার সমান :

[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
 1  2    3     4     5       6       7        8          9          10      ...

কার্য

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

উদাহরণ এবং পরীক্ষার কেস

1-তালিকাভুক্ত পরীক্ষার কেস। আপনি যদি 0-সূচকযুক্ত চান, কেবল হ্রাস এন।

N, Chunk, Deltas, Sum

1  -> 1          -> []                               -> 0
2  -> 23         -> [1]                              -> 1
3  -> 456        -> [1, 1]                           -> 2
4  -> 7891       -> [1, 1, -8]                       -> -6
5  -> 01112      -> [1, 0, 0,1]                      -> 2
6  -> 131415     -> [2, -2, 3, -3, 4]                -> 4
7  -> 1617181    -> [5, -5, 6, -6, 7, -7]            -> 0
8  -> 92021222   -> [-7, -2, 2, -1, 1, 0, 0]         -> -7
9  -> 324252627  -> [-1, 2, -2, 3, -3, 4, -4, 5]     -> 4
10 -> 2829303132 -> [6, -6, 7, -6, -3, 3, -2, 2, -1] -> 0

ধাঁধা 2 উপর CodeGolf-Hackathon (আমি মূল লেখক খুব am, তাই আমি পুনরায় পোস্ট করুন করতে অনুমতি দেওয়া করছি)। সম্পর্কিত, অনুপ্রেরণাসম্পর্কিত



1
পরপর সংখ্যার মধ্যে সমস্ত পার্থক্যের যোগফল কেবল সর্বশেষ এবং প্রথমটির মধ্যে পার্থক্য।
স্মার্টস

উত্তর:


5

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

1 টি বাইট সংরক্ষিত হয়েছে @tsh এর জন্য ধন্যবাদ

0-ইন্ডেক্স।

k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))``-n

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


শূন্য k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
সূচকযুক্ত

4

এপিএল (ডায়ালগ) , 32 বাইট

{+/2-⍨/⍎¨⍵↑(+/⍳⍵-1)↓' '~⍨⍕⍳+/⍳⍵}

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

কিভাবে?

+/⍳⍵- এর সমষ্টি 1থেকেn

- যে পরিসীমা তৈরি

' '~⍨⍕ - স্ট্রিং মধ্যে, ফাঁকা ছাড়াই

(+/⍳⍵-1)↓- প্রথম (এর সমষ্টি ড্রপ 1করার n-1) অক্ষর

⍵↑- পরবর্তী nঅক্ষর রাখুন

⍎¨ - প্রতিটি চরকে পূর্ণসংখ্যায় পরিণত করুন

2-⍨/ - পার্থক্য তালিকা (প্রতি 2 আইটেমের জন্য পিছিয়ে বিয়োগ)

+/ - যোগ কর.


4

কাস্তে , 9 বাইট

ΣẊ-!SCṁdN

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

হ্যাকাথনে আমার সমাধান।

ব্যাখ্যা:

ΣẊ-!SCṁdN⁰
    S      (x -> y -> z):f -> (x -> y):g -> x:x :: return f(x, g(x))
     C      f= [num]:x -> [x]:y -> [x] :: cut y in pieces where each piece has its respective length in x
      ṁ     g= (x -> [y]):f -> ([x]:x -> [y]) :: maps f over x then concatenate
       d     f= num:x -> [num] :: return decimal digits of x
        N   x= sequence of natural numbers [1..]
   !     ⁰ [x]:x -> num:y -> x :: get yth (impl. input) element of x (above result)
 Ẋ         (x -> x -> y):f -> [x]:x -> [y] :: map f over overlapping pairs of x (above result)
  -         f= num:x -> num:y -> num :: return y - x
Σ          [num]:x -> num :: return sum of x (above result)

4

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

l=fromEnum<$>(show=<<[1..])
f n|t<-sum[2..n]=l!!t-l!!(t-n+1)

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

ব্যাখ্যা:

একটি তালিকার ডেল্টাসের যোগফল সর্বশেষ এবং প্রথম উপাদানটির পার্থক্যের সমান।

শেষ উপাদান (শূন্য সূচীবদ্ধ) হল t, triangle(n)-1 = sum[2..n]। প্রথম উপাদান, তারপরে t-n+1, তালিকার nউপাদান রয়েছে।




3

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

f=(n,s=i='',m=n*-~n/2)=>s[m]?s[m]-s[m-n+1]:f(n,s+i++)
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>

1-ইন্ডেক্স। পূর্ববর্তী 60-বাইট ননরসিভারসিভ সংস্করণ:

f=
(n,s=[...Array(n*n+1).keys()].join``)=>s[m=n*-~n/2]-s[m-n+1]
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>





1

পার্ল 6 ,  58  55 বাইট

{[+] ($_=(1..*).map(|*.comb).rotor(1..*)[$^a])[1..*]Z-@$_}

এটা পরীক্ষা করো

{[+] ($_=(1..*).map(|*.comb)[^$^a+[+] ^$a])[1..*]Z-@$_}

এটা পরীক্ষা করো

সম্প্রসারিত:

{ # bare block lambda with placeholder parameter 「$a」
  [+]  # reduce using &infix:«+» the following


    (
      $_ =                # store into 「$_」 for later use

        ( 1 .. * )        # Range of all positive integers
        .map( | *.comb )\ # split into digits and flatten into single list

        [                 # index into the sequence (1 based)

          ^$^a            # Range up to (and excluding) the input
                          # 「0 ..^ $a」 or 「0 .. $a-1」

          +               # shift it up by
          [+] ^$a         # the sum of the values up to (and excluding) the input

        ]

    )[ 1 .. *]            # skip the first value

    Z-                    # zip using &infix:«-»

    @$_                   # 「$_」 used as a List
}

1

পিএইচপি , 163 147 বাইট

$v=$argv[1];for($i=1;$i<=$v*$v;$i++){$s.=$i;$j+=$i<$v?$i:0;}$s=array_slice(str_split($s),$j,$v);for($i=0;$i<$v-1;$i++){$k+=$s[$i+1]-$s[$i];}echo$k;

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

কোড গল্ফিংয়ে আমার প্রথম প্রচেষ্টা ... একটি অনুভূতি আছে যে এটি আরও সংক্ষিপ্ত হতে পারে

সম্পাদনা করুন: বেশ কয়েকটি তাত্ক্ষণিকতা সরিয়ে 16 বাইট সংরক্ষণ করা হয়েছে


সাইটে স্বাগতম! পিএইচপি
তে


0

পাইথ , 29 27 বাইট

@ মিস্টার এক্সকোডারকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।

s.+msdc:sm+hd""U*QQKsUQ+QK1

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


1
এটি আরও গল্ফ করা যেতে পারে এ সম্পর্কে নিশ্চিত 27 বাইট ...
মিঃ এক্সকডার

0

জেলি , 14 বাইট

²RDFṫ³ḶS‘¤ðḣIS

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

ব্যাখ্যা

²RDFṫ³ḶS‘¤ðḣIS    Main Link
²                  Square input
 R                 Range: [1,2,3,..,n^2]
  D                Digits: [1,2,...,[1,0],[1,1],...]
   F               Flatten list
     ³ḶS‘¤         n(n-1)/2+1
    ṫ              Remove the first n(n-1)/2+1 elements from the list of digits
          ðḣ       Take the first n digits of the list. ð is needed to prevent I from acting on n.
            I      Increment. Take the diferences
             S     Sum

আমি প্রাথমিকভাবে ব্যাপ্তিটি শুরু করেছিলাম (এন (এন + 1) / 2) তবে যেহেতু তালিকার আগে তালিকার শেষে আপনার অতিরিক্ত সংখ্যা থাকতে পারে তাই আমি এটিকে ব্যাপ্তিতে পরিবর্তন করেছি (এন ^ 2)। যাইহোক আপনার 1-9 এর পরে অতিরিক্ত সংখ্যা রয়েছে।


+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣISআসল (সফল তবে দীর্ঘ) প্রচেষ্টা
ডাইলানান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.