code: public static <G extends Gene<?, G>, C extends Comparable<? super C>>
  	UnaryOperator<EvolutionResult<G, C>>
  	toUniquePopulation(final Factory<Genotype<G>> factory) {
  		return toUniquePopulation(factory, 100);
  	}
docs: Return a mapping function, which removes duplicate individuals from the
  population and replaces it with newly created one by the given genotype
  {@code factory}.
  
  <pre>{@code
  final Problem<Double, DoubleGene, Integer> problem = ...;
  final Engine<DoubleGene, Integer> engine = Engine.builder(problem)
  .mapping(EvolutionResult.toUniquePopulation(problem.codec().encoding()))
  .build();
  final Genotype<DoubleGene> best = engine.stream()
  .limit(100);
  .collect(EvolutionResult.toBestGenotype());
  }</pre>
  
  @since 4.0
  @see Engine.Builder#mapping(Function)
  
  @param factory the genotype factory which create new individuals
  @param <G> the gene type
  @param <C> the fitness function result type
  @return  a mapping function, which removes duplicate individuals from the
  population
  @throws NullPointerException if the given genotype {@code factory} is
  {@code null}