Fusion constructor
Implementation
Fusion({required this.source, required this.target})
: assert(source.containsDuplicate() == false,
'Source list contains duplicates'),
assert(!source.contains(target), 'Source list contains target'),
cost = source.fold(
0,
(previousValue, element) => (previousValue +
(pow(element.level, 2) * 27 + 126 * element.level + 2147))
.toInt());