using System;
public class Test
{
public static void Main()
{
double[] array = new double[] {1,2,3,4,5};
var indexer1 = new Index(array, 1, 2);
Console.WriteLine(indexer1[0]);
}
class Index {
private readonly double[] arr;
private readonly int offset; // set this to x in the constructor
public int Length { get { return arr.Length; } }
public double this[int idx] {
get { return arr[idx+offset]; }
set { arr[idx+offset] = value; }
}
public Index(double[] arr1, int x, int y) {
arr = arr1;
offset = x;
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCWRvdWJsZVtdIGFycmF5ID0gbmV3IGRvdWJsZVtdIHsxLDIsMyw0LDV9OwoJCXZhciBpbmRleGVyMSA9IG5ldyBJbmRleChhcnJheSwgMSwgMik7IAoJCUNvbnNvbGUuV3JpdGVMaW5lKGluZGV4ZXIxWzBdKTsKCX0KCQpjbGFzcyBJbmRleCB7CiAgICBwcml2YXRlIHJlYWRvbmx5IGRvdWJsZVtdIGFycjsKICAgIHByaXZhdGUgcmVhZG9ubHkgaW50IG9mZnNldDsgLy8gc2V0IHRoaXMgdG8geCBpbiB0aGUgY29uc3RydWN0b3IKICAgIHB1YmxpYyBpbnQgTGVuZ3RoIHsgZ2V0IHsgcmV0dXJuIGFyci5MZW5ndGg7IH0gfQogICAgcHVibGljIGRvdWJsZSB0aGlzW2ludCBpZHhdIHsKICAgICAgICBnZXQgeyByZXR1cm4gYXJyW2lkeCtvZmZzZXRdOyB9CiAgICAgICAgc2V0IHsgYXJyW2lkeCtvZmZzZXRdID0gdmFsdWU7IH0KICAgIH0KICAgIHB1YmxpYyBJbmRleChkb3VibGVbXSBhcnIxLCBpbnQgeCwgaW50IHkpIHsKICAgICAgICBhcnIgPSBhcnIxOwogICAgICAgIG9mZnNldCA9IHg7CiAgICB9Cn0KCQoJCgkKfQ==