/// <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());
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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());
        }
Пример #5
0
        /// <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());
        }
Пример #9
0
        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());
        }
Пример #10
0
        /// <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());
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #14
0
        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());
        }
Пример #15
0
        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");
        }