  We propose a novel algorithm that outputs the final standings of a soccer
league, based on a simple dynamics that mimics a soccer tournament. In our
model, a team is created with a defined potential(ability) which is updated
during the tournament according to the results of previous games. The updated
potential modifies a teams' future winning/losing probabilities. We show that
this evolutionary game is able to reproduce the statistical properties of final
standings of actual editions of the Brazilian tournament (Brasileir\~{a}o).
However, other leagues such as the Italian and the Spanish tournaments have
notoriously non-Gaussian traces and cannot be straightforwardly reproduced by
this evolutionary non-Markovian model. A complete understanding of these
phenomena deserves much more attention, but we suggest a simple explanation
based on data collected in Brazil: Here several teams were crowned champion in
previous editions corroborating that the champion typically emerges from random
fluctuations that partly preserves the gaussian traces during the tournament.
On the other hand, in the Italian and Spanish leagues only a few teams in
recent history have won their league tournaments. These leagues are based on
more robust and hierarchical structures established even before the beginning
of the tournament. For the sake of completeness, we also elaborate a totally
Gaussian model (which equalizes the winning, drawing, and losing probabilities)
and we show that the scores of the "Brasileir\~{a}o" cannot be reproduced. Such
aspects stress that evolutionary aspects are not superfluous in our modeling.
Finally, we analyse the distortions of our model in situations where a large
number of teams is considered, showing the existence of a transition from a
single to a double peaked histogram of the final classification scores. An
interesting scaling is presented for different sized tournaments.
