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


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 ম্যাট্রিক্স উত্পন্ন করে , অর্থাত, 1…n,2…n+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.