/// <summary> /// 100 + 12L tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.North(16) .Up() .North(13) .North(4 * L, "blue") .North(30) .North(4 * L, "blue") .North(8) .East() .South() .Down() .North(3) .West() .North() .East() .North() .West() .North(3) .Up() .East(2) .South(14) .South(4 * L, "blue"); return(builder.Tiles().ToList()); }
private List <Tile> AddWestWall() { var builder = new GadgetBuilder().Start(); switch (digitsInMSR) { case 2: builder.West(2); break; case 3: builder.West(4); break; } var tiles = builder.Tiles() .Skip(1) .ToList(); tiles.ForEach(SpawnFiller); return(tiles); }
/// <summary> /// 1 tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); return(builder.Tiles() .ToList()); }
/// <summary> /// 30 + 4L tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.South(29) .South(4 * L, "blue"); return(builder.Tiles() .ToList()); }
/// <summary> /// 7 tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.South() .Down() .West(3) .North(); return(builder.Tiles().ToList()); }
/// <summary> /// 29 tiles /// </summary> public List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.North(11) .Up() .West(2) .Down() .North(13); return(builder.Tiles() .ToList()); }
/// <summary> /// 25 tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.East() .North(4) .Down() .North(9) .East() .North(8); return(builder.Tiles() .ToList()); }
private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.North(2) .East() .North() .West() .North(); return(builder.Tiles() .Skip(1) .ToList()); }
private List <Tile> Create() { var builder = new GadgetBuilder().Start(); var difference = digits % 3 == 0 ? -1 : 0; var generalRegions = (int)Math.Floor((decimal)digits / 3) + difference; builder.East(generalRegions * 6) .North(3) .Down(); // Skip one for the extra tile at the start return(builder.Tiles() .Skip(1) .ToList()); }
/// <summary> /// 37 + 4L tiles /// </summary> private List <Tile> Create() { var builder = new GadgetBuilder().Start(); builder.South(10) .West() .South(4) .East() .South(15) .South(4 * L, "blue") .South() .West() .South(3); return(builder.Tiles().ToList()); }
private static void BuilderPatternDemo() { AbstractWidget abstractWidget = new SmallWidget(FinishColor.PlatedPlatinum); WagBuilder wagBuilder = new WidgetBuilder(abstractWidget); WagDirector wagDirector = new WidgetDirector(); IWag widget = wagDirector.Build(wagBuilder); Console.WriteLine(widget); AbstractGadget abstractGadget = new SmallGadget(FinishColor.PlainBlack); WagBuilder builder = new GadgetBuilder(abstractGadget); WagDirector director = new GadgetDirector(); IWag gadget = director.Build(builder); Console.WriteLine(gadget); }
private List <Tile> Create() { var builder = new GadgetBuilder().Start(); switch (digitsInMSR) { case 1: builder.North(29) .North(4 * L, "blue") .North(30) .North(4 * L, "blue") .North(30); break; case 2: builder.North(29) .North(4 * L, "blue") .North(30); break; case 3: builder.North(29); break; } var tiles = builder.Tiles() .ToList(); var last = tiles.Last(); var leftWall = AddWestWall(); tiles.AddRange(leftWall); last.AttachEast(Output); if (leftWall.Any()) { last.AttachWest(leftWall.First()); } return(tiles); }
private void CreateSeed() { var builder = new GadgetBuilder().Start(); if (kIsOdd) { builder.West(2) .North(); } var seed = builder.Tiles() .ToList(); seed.RenameWithIndex("seed"); seed.Last() .North = new Glue($"{CounterWrite} {1} {Seed} 0 {1} "); tiles.AddRange(seed); }
private List <Tile> CreateTiles() { var builder = new GadgetBuilder().Start(); foreach (var bit in reversedBits) { switch (bit) { case '0': builder.North(2) .East() .North() .West() .North(); break; case '1': builder.North(2) .Up() .East() .North() .West() .Down() .North(); break; default: throw new ArgumentOutOfRangeException(nameof(bit)); } } // Skip 1 since the first tile is not apart of the encoded digits. return(builder.Tiles() .Skip(1) .ToList()); }
public RoofUnit(int digitsInMSR, int digits, int L, Glue input, bool kIsOdd) { this.digitsInMSR = digitsInMSR; this.L = L; Output = new Tile("Roof"); Tiles = Create(); Tiles.Add(Output); Input = Tiles.First(); Input.South = input; var difference = digits % 3 == 0 ? -1 : 0; var generalRegions = (int)Math.Floor((decimal)digits / 3) + difference; var builder = new GadgetBuilder().Start(); for (var i = 0; i < generalRegions; i++) { builder.East(6); } if (kIsOdd) { builder.East(); } var tiles = builder.Tiles() .Skip(1) .ToList(); tiles.First() .AttachWest(Output); SpawnFiller(Output); tiles.ForEach(SpawnFiller); Tiles.AddRange(tiles); Tiles.RenameWithIndex("Roof"); }