public override string Solve() { var polymer = InputReader.ReadLines().First(); var units = Unit.ConvertPolymer(polymer); var reactor = new PolymerReactor(); return(reactor.ReactPolymerUnits(units).Count().ToString()); }
public override string Solve() { var polymer = InputReader.ReadLines().First(); var units = Unit.ConvertPolymer(polymer); var reactor = new PolymerReactor(); var shortestAfterReaction = new List <Unit>(units); foreach (var type in units.Select(x => x.Type).Distinct()) { var modifiedPolymer = units.Where(x => x.Type != type); var afterReaction = reactor.ReactPolymerUnits(modifiedPolymer); if (afterReaction.Count() < shortestAfterReaction.Count) { shortestAfterReaction = afterReaction.ToList(); } } return(shortestAfterReaction.Count.ToString()); }