// xover
objref parent[2], xdice
parent[0] = new Vector()
parent[1] = new Vector()
xdice = new Random()
proc xover() {local xlength, xpoint
parent[0] = genome[$1].newgene.c
parent[1] = genome[$2].newgene.c
if (genome[$1].newgene.size() > genome[$2].newgene.size()) {
xlength = genome[$2].newgene.size()-2 } else {
xlength = genome[$1].newgene.size()-2 }
xpoint = int(xdice.uniform(1, xlength))
genome[$1].newgene.resize(0)
genome[$1].newgene.append(parent[0].at(0, xpoint-1), parent[1].at(xpoint,parent[1].size()-1))
genome[$2].newgene.resize(0)
genome[$2].newgene.append(parent[1].at(0, xpoint-1), parent[0].at(xpoint,parent[0].size()-1))
// print "Xover between ", $1," and ", $2, " at point: ", xpoint
}