using System.Collections.Generic;
public static void Main()
var walls = new List<int> { 10, 11, 12, 13, 14, 15 };
var indexDiff = indexDoor - indexStart;
var wallCountPathA = 1 + Math.Abs(indexDiff);
var wallCountPathB = 2 + walls.Count - wallCountPathA;
var wallIndicesPathA = new List<int>(wallCountPathA);
var wallIndicesPathB = new List<int>(wallCountPathB);
var wallsPathA = new List<int>(wallCountPathA);
var wallsPathB = new List<int>(wallCountPathB);
var directionA = Math.Sign(indexDiff);
for (var i = 0; i < Math.Max(wallCountPathA, wallCountPathB); i++)
var indexA = indexStart + (directionA * i);
wallIndicesPathA.Add(indexA);
wallsPathA.Add(walls[indexA]);
var indexB = (walls.Count + indexStart - (directionA * i)) % walls.Count;
wallIndicesPathB.Add(indexB);
wallsPathB.Add(walls[indexB]);
Console.WriteLine("Wall indices in path A: [ " + string.Join(", ", wallIndicesPathA) + " ]");
Console.WriteLine("Wall indices in path B: [ " + string.Join(", ", wallIndicesPathB) + " ]");
Console.WriteLine("Walls in path A: [ " + string.Join(", ", wallsPathA) + " ]");
Console.WriteLine("Walls in path B: [ " + string.Join(", ", wallsPathB) + " ]");