Example #1
0
 private static void WriteOptions(string path, TdpOptions options)
 {
     File.WriteAllText(path, options.ToString());
     Console.WriteLine($".tdp file can be found at {path}");
 }
 public TileWriter(TdpOptions options, IEnumerable <Tile> tiles)
 {
     this.options = options;
     this.tiles   = tiles;
 }
Example #3
0
        public static void Write(CounterSettings settings)
        {
            var tiles = new HashSet <Tile>();

            var seed = new Seed(settings);

            tiles.UnionWith(seed.Tiles);

            var rightWall = new RightWall(settings);

            tiles.UnionWith(rightWall.Tiles);

            var leftWall = new LeftWall(settings);

            tiles.UnionWith(leftWall.Tiles);

            var rightTurn = new RightTurn(settings);

            tiles.UnionWith(rightTurn.Tiles);

            var rightPreReaderRightCarry = new PreReaderRight(settings, true);

            tiles.UnionWith(rightPreReaderRightCarry.Tiles);

            var rightPreReaderRightNoCarry = new PreReaderRight(settings, false);

            tiles.UnionWith(rightPreReaderRightNoCarry.Tiles);

            var leftPreReaderFirst = new PreReaderLeft(settings, true);

            tiles.UnionWith(leftPreReaderFirst.Tiles);


            var leftPreReaderNth = new PreReaderLeft(settings, false);

            tiles.UnionWith(leftPreReaderNth.Tiles);


            var readerTiles = AddReaders(settings.BinaryDigitPatterns, settings.BaseK);

            tiles.UnionWith(readerTiles);

            var hookTiles = AddHooks(settings.BinaryDigitPatterns);

            tiles.UnionWith(hookTiles);

            var writerTiles = AddWriters(settings.BinaryDigitPatterns, Convert.ToInt32(settings.StoppingValue));

            tiles.UnionWith(writerTiles);

            tiles.UnionWith(GetAllGadgets());

            var tileSetName = $"base-{settings.BaseK}-counter-to-{settings.StoppingValue}";
            var options     = new TdpOptions(tileSetName, seed.Start.Name);



            var path = Utils.GetPath();

            tiles = tiles.DistinctBy(t => t.Name).ToHashSet();

            WriteOptions($"{path}{tileSetName}.tdp", options);

            WriteDefinitions($"{path}{tileSetName}.tds", tiles);
        }