private Transposition GetIterateTransposition(InputData data)
        {
            var rod = new RodDto {
                Length = data.Rod.Length
            };
            var blanks        = data.Blanks.ToList();
            var rand          = new Random();
            var transposition = new List <int>();

            while (blanks.Any())
            {
                var front = blanks
                            .Where(x => x.Length < rod.Length)
                            .ToList();

                if (!front.Any())
                {
                    rod = new RodDto {
                        Length = data.Rod.Length
                    };
                    continue;
                }

                var skip = rand.Next(100) < skipPercent?rand.Next(front.Count) : 0;

                var blank = front
                            .Skip(skip)
                            .First();

                transposition.Add(blank.Id);
                blanks.RemoveAll(x => x.Id == blank.Id);
            }

            return(new Transposition(transposition));
        }
        public InputData(int rod, IEnumerable <int> blanks)
        {
            Rod = new RodDto {
                Length = rod
            };
            var nextId = 1;

            Blanks = blanks
                     .Select(x => new BlankDto
            {
                Id     = nextId++,
                Length = x
            })
                     .ToList();
        }