বর্ধমান রেঞ্জ!


14

আপনার টাস্কটি, দুটি ধনাত্মক পূর্ণসংখ্যার দেওয়া হয়, x এবং n , ইনক্রিমেন্টাল রেঞ্জ ক্রমের প্রথম x সংখ্যাগুলি ফেরত দেয় ।

ইনক্রিমেন্টাল রেঞ্জ সিকোয়েন্সটি প্রথমে এক থেকে n সমেত একটি ব্যাপ্তি তৈরি করে । উদাহরণস্বরূপ, যদি n ছিল 3 , এটা তালিকা উৎপন্ন হবে [1,2,3] । এরপরে এটি বারবার বিদ্যমান তালিকাতে 1 দ্বারা বাড়ানো সর্বশেষ n মানগুলিকে সংযোজন করে এবং অবিরত থাকে।1

উদাহরণস্বরূপ n=3 এর একটি ইনপুট :

n=3
1. Get range 1 to n. List: [1,2,3]
2. Get the last n values of the list. List: [1,2,3]. Last n=3 values: [1,2,3].
3. Increment the last n values by 1. List: [1,2,3]. Last n values: [2,3,4].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4]
5. Repeat steps 2-5. 2nd time repeat shown below.

2nd repeat:
2. Get the last n values of the list. List: [1,2,3,2,3,4]. Last n=3 values: [2,3,4]
3. Increment the last n values by 1. List: [1,2,3,2,3,4]. Last n values: [3,4,5].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4,3,4,5]

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

n,   x,   Output
1,  49,   [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
2, 100,   [1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51]
3,  13,   [1,2,3,2,3,4,3,4,5,4,5,6,5]

উত্তর:



7

জেলি , 4 বাইট

Ḷd§‘

xবাম এবং nডানদিকে দুটি ধনাত্মক পূর্ণসংখ্যা গ্রহণ করে একটি ডায়াডিক লিঙ্ক , যা ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দেয়।

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

কিভাবে?

Ḷd§‘ - Link: x, n              e.g   13, 3
Ḷ    - lowered range (x)             [0,1,2,3,4,5,6,7,8,9,10,11,12]
 d   - divmod (n)                    [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[4,0]]
  §  - sums                          [0,1,2,1,2,3,2,3,4,3,4,5,4]
   ‘ - increment (vectorises)        [1,2,3,2,3,4,3,4,5,4,5,6,5]

3
দাঁড়াও ... সে ডিভোড? চতুর! এবং আমি লড়াই p
করে যাচ্ছিলাম

6

আর , 33 বাইট

function(n,x,z=1:x-1)z%%n+z%/%n+1

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

জোনাথন অ্যালানের পাইথন সমাধান বন্দর করে ।

আর , 36 বাইট

function(n,x)outer(1:n,0:x,"+")[1:x]

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

আমার আসল সমাধান; ইনক্রিমেন্ট হিসাবে প্রতিটি কলামের সাথে একটি n×x ম্যাট্রিক্স উত্পন্ন করে , অর্থাত, 1n,2n+1,... , তারপরে প্রথম এক্স এন্ট্রি নেয় (কলামগুলি নীচে যাচ্ছে)।


6

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

L<s‰O>

@ জোনাথন অ্যালান এর জেলি উত্তর বন্দর , তাই তাকে upvote নিশ্চিত করুন!

প্রথম ইনপুটটি হল x , দ্বিতীয় ইনপুটটি n

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

L       # Push a list in the range [1, (implicit) input]
        #  i.e. 13 → [1,2,3,4,5,6,7,8,9,10,11,12,13]
 <      # Decrease each by 1 to the range [0, input)
        #  → [0,1,2,3,4,5,6,7,8,9,10,11,12]
  s    # Divmod each by the second input
        #  i.e. 3 → [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[4,0]]
    O   # Sum each pair
        #  → [0,1,2,1,2,3,2,3,4,3,4,5,4]
     >  # And increase each by 1
        #  → [1,2,3,2,3,4,3,4,5,4,5,6,5]
        # (after which the result is output implicitly)

আমার নিজস্ব প্রাথমিক পদ্ধতিটি ছিল 8 বাইট :

LI∍εN¹÷+

প্রথম ইনপুটটি হল n , দ্বিতীয় ইনপুটটি এক্স isএক্স

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

L         # Push a list in the range [1, (implicit) input]
          #  i.e. 3 → [1,2,3]
 I       # Extend it to the size of the second input
          #  i.e. 13 → [1,2,3,1,2,3,1,2,3,1,2,3,1]
   ε      # Map each value to:
    N¹÷   #  The 0-based index integer-divided by the first input
          #   → [0,0,0,1,1,1,2,2,2,3,3,3,4]
       +  #  Add that to the value
          #   → [1,2,3,2,3,4,3,4,5,4,5,6,5]
          # (after which the result is output implicitly)


4

ব্রেন-ফ্লাক , 100 বাইট

(<>)<>{({}[()]<(({}))((){[()](<{}>)}{}){{}{}<>(({})<>)(<>)(<>)}{}({}[()]<(<>[]({}())[()]<>)>)>)}{}{}

মন্তব্য এবং বিন্যাস সহ:

# Push a zero under the other stack
(<>)<>

# x times
{
    # x - 1
    ({}[()]<

        # Let 'a' be a counter that starts at n
        # Duplicate a and NOT
        (({}))((){[()](<{}>)}{})

        # if a == 0
        {
            # Pop truthy
            {}
            <>

            # Reset n to a
            (({})<>)

            # Push 0 to each
            (<>)(<>)
        }

        # Pop falsy
        {}

        # Decrement A, add one to the other stack, and duplicate that number under this stack
        ({}[()]<
            (<>[]({}())<>)
        >)
    >)
}

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


4

জে , 13 12 বাইট

[$[:,1++/&i.

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

কিভাবে

আমরা ডান হিসাবে xবাম আর্গুমেন্ট হিসাবে গ্রহণ n। আসুন নেওয়া যাক x = 8এবং n = 3এই উদাহরণটির জন্য:

  • +/&i.: পূর্ণসংখ্যার ব্যাপ্তি তৈরি করে উভয় আর্গগুলিকে রূপান্তর করুন i., অর্থাৎ বাম দিকটি আরগ হয়ে যায় 0 1 2 3 4 5 6 7এবং ডান দিকের আরগ হয়ে যায় 0 1 2। এখন আমরা +/এই দুটি থেকে একটি "যুক্ত টেবিল তৈরি করি :

     0 1 2
     1 2 3
     2 3 4
     3 4 5
     4 5 6
     5 6 7
     6 7 8
     7 8 9
    
  • 1 +: এই টেবিলের প্রতিটি উপাদানকে 1 যুক্ত করুন:

     1 2  3
     2 3  4
     3 4  5
     4 5  6
     5 6  7
     6 7  8
     7 8  9
     8 9 10
    
  • [: ,: এটি সমতল করুন ,:

     1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10
    
  • [ $: এটা আকার $তাই এটি মূল, untransformed বাম ARG যেমন উপাদানের একই নম্বর আছে [, অর্থাত্, x:

     1 2 3 2 3 4 3 4 
    


4

অক্টাভা , 25 বাইট

@(n,x)((1:n)'+(0:x))(1:x)

নামবিহীন ফাংশন যা সংখ্যার ইনপুট করে nএবংx একটি সারি ভেক্টরকে আউটপুট দেয়।

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

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

বিবেচনা করুন n=3এবং x=13

কোডটি (1:n)'কলামটি ভেক্টর দেয়

1
2
3

তারপরে (0:x)সারি ভেক্টর দেয়

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

সংযোজনটি (1:n)'+(0:x)সম্প্রচারের সাথে মৌলিক হিসাবে যুক্ত, এবং তাই এটি সমস্ত জোড়া অঙ্কের সাথে একটি ম্যাট্রিক্স দেয়:

1  2  3  4  5  6  7  8  9 10 11 12 13 14
2  3  4  5  6  7  8  9 10 11 12 13 14 15
3  4  5  6  7  8  9 10 11 12 13 14 15 16

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

1 2 3 2 3 4 3 4 5 4 5 6 5

3

হাস্কেল , 31 বাইট

n#x=take x$[1..n]++map(+1)(n#x)

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

এটি আমার প্রিয় ধরণের পুনরাবৃত্তি হতে পারে। আমরা 1 থেকে n পর্যন্ত মানগুলি দিয়ে শুরু করি এবং তারপরে সেই একই মানগুলি (স্ব-রেফারেন্সের মাধ্যমে) +1 দিয়ে সম্মতি জানাই। তারপরে আমরা প্রথম x মানগুলি গ্রহণ করি।


2

ফোর্থ (গফার্থ) , 34 বাইট

: f 0 do i over /mod + 1+ . loop ;

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

কোড ব্যাখ্যা

: f            \ start a new word definition
  0 do         \ start a loop from 0 to x-1
    i          \ put the current loop index on the stack
    over       \ copy n to the top of the stack
    /mod       \ get the quotient and remainder of dividing i by n
    + 1+       \ add them together and add 1
    .          \ output result
  loop         \ end the counted loop
;              \ end the word definition

2

এমএটিএল , 16 , 10 বাইট

:!i:q+2G:)

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

গুইস্পি এবং লুইস মেন্ডোকে ধন্যবাদ -6 বাইট সংরক্ষণ করেছে!

ব্যাখ্যা:

:!          % Push the array [1; 2; ... n;]
  i:q       % Push the array [0 1 2 ... x - 1]
     +      % Add these two arrays with broadcasting
      2G    % Push x again
        :)  % Take the first x elements

@ লুইস মেন্ডো ধন্যবাদ! স্পষ্টতই, আমি আমার এমএটিএল নিয়ে বেশ মরিচা :)
জেমস










0

কাঠকয়লা , 18 বাইট

NθFN⊞υ⊕⎇‹ιθι§υ±θIυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। আমার শূন্য-সূচকযুক্ত পরিসীমা সহ তালিকার বীজ বপন করার স্বপ্ন ছিল এবং তারপরে এটিকে আবার স্লাইস করে ফেলতে হবে তবে এটি আসলে 2 বাইট বেশি ছিল। ব্যাখ্যা:

Nθ                  Input `n` into variable
   N                Input `x`
  F                 Loop over implicit range
         ι          Current index
        ‹           Less than
          θ         Variable `n`
       ⎇   ι        Then current index else
               θ    Variable `n`
              ±     Negated
            §υ      Cyclically indexed into list
      ⊕             Incremented
    ⊞υ              Pushed to list
                Iυ  Cast list to string for implicit output

0

জেএস, 54 বাইট

f=(n,x)=>Array.from(Array(x),(_,i)=>i+1-(i/n|0)*(n-1))

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


পিপিসিজিতে আপনাকে স্বাগতম :) যেহেতু এটি একটি পুনরাবৃত্ত ফাংশন নয়, আপনার এটি গণনা করার দরকার নেই f=। আপনি প্যারামিটারগুলি ( n=>x=>) ব্যবহার করে এবং অন্যটি অ্যারে ( [...Array(x)].map()) ম্যাপিংয়ের মাধ্যমে একটি বাইট সংরক্ষণ করতে পারেন ।
শেগি





0

সি (ঝনঝন), 843 বাইট

#include <stdlib.h>
main(int argc, char* argv[]){
        int x,n;
        if (argc == 3 && (n = atoi(argv[1])) > 0 && (x = atoi(argv[2])) > 0){ 
                int* ranges = calloc(x, sizeof *ranges);
                for (int i = 0; i < x; i++){
                        if (i < n){ 
                                ranges[i] = i+1;
                        }   
                        else {
                                ranges[i] = ranges[i-n] + 1;
                        }   
                }   
        printf("[");
        for (int j = 0; j < x - 1; j++){
                printf("%d",ranges[j]);
                printf(",");
        }   
        printf("%d",ranges[x - 1]);
        printf("]\n");
        free(ranges);
        }   
        else {
                printf("enter a number greater than 0 for n and x\n");
        }   
}

2
হাই, পিপিসিজিতে আপনাকে স্বাগতম! এই চ্যালেঞ্জটি ট্যাগ করা [কোড-গল্ফ], যার অর্থ আপনার চ্যালেঞ্জটি যতটা সম্ভব কম বাইট / অক্ষরগুলিতে শেষ করতে হবে। আপনি হোয়াইটস্পেসের লোডগুলি সরিয়ে ফেলতে পারেন এবং ভেরিয়েবলের নামগুলি আপনার কোডের (এক argc, argvএবং ranges) একক অক্ষরে পরিবর্তন করতে পারেন । এছাড়াও, কোনও সতর্কতা বার্তা যুক্ত করার দরকার নেই .. আপনি চূড়ান্তভাবে অন্যথায় না বললে আপনি ইনপুটটি বৈধ বলে ধরে নিতে পারেন।
কেভিন ক্রুইজসেন



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