Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.29 KB | None | 0 0
  1. using System;
  2.  
  3. internal class Range
  4. {
  5.     internal int[] this[int n]
  6.     {
  7.         get { return this[0, n]; }
  8.     }
  9.  
  10.     internal int[] this[int a, int b]
  11.     {
  12.         get { return this[a, b, 1]; }
  13.     }
  14.  
  15.     internal int[] this[int a, int b, int step]
  16.     {
  17.         get
  18.         {
  19.             if (a < b && step > 0)
  20.             {
  21.                 int len = (b - a + (step - 1)) / step;
  22.                 int[] arr = new int[len];
  23.                 int val = a;
  24.                 for (int i = 0; i < len; i++, val += step)
  25.                 {
  26.                     arr[i] = val;
  27.                 }
  28.                 return arr;
  29.             }
  30.             else if (a > b && step < 0)
  31.             {
  32.                 int tmp = a;
  33.                 a = b;
  34.                 b = tmp;
  35.                 int abStep = Math.Abs(step);
  36.                 int len = (b - a + (abStep - 1)) / abStep;
  37.                 int[] arr = new int[len];
  38.                 int val = b;
  39.                 for (int i = 0; i < len; i++, val += step)
  40.                 {
  41.                     arr[i] = val;
  42.                 }
  43.                 return arr;
  44.             }
  45.             else if (a == b && step != 0)
  46.             {
  47.                 return new int[0];
  48.             }
  49.             throw new ArgumentException();
  50.         }
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement