VUELTA ATRÁS
239
VAR j:CARDINAL; s,vuelta:BOOLEAN; BEGIN LOOP X[k]:=(X[k]+1) MOD (n+1); IF X[k]=0 THEN RETURN END; IF g[X[k-1],X[k]]<>MAX(CARDINAL) THEN j:=1; s:=TRUE; WHILE (j<=k-1) AND s DO s:=(X[j]<>X[k]); INC(j) END; vuelta:=g[X[n],1]<>MAX(CARDINAL); IF (j=k) AND ((k<n)OR((k=n)AND vuelta)) THEN RETURN END END END END NuevoVertice2.
Este algoritmo debe ser invocado desde el programa principal tras inicializar la variable minimo y el primer elemento del vector X con el vértice desde donde parte el ciclo. ... minimo:=MAX(CARDINAL); X[1]:=1; Hamiltoniano3(2); IF minimo<MAX(CARDINAL) THEN ComunicarSolucion(XMIN) ...
6.11 EL CONTINENTAL En el solitario de mesa llamado Continental, treinta y dos piezas se colocan en un tablero de treinta y tres casillas tal y como indica la siguiente figura, quedando vacía únicamente la casilla central: o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Una pieza sólo puede moverse saltando sobre una de sus vecinas y cayendo en una posición vacía, al igual que en el juego de las damas, aunque aquí no están permitidos los saltos en diagonal. La pieza sobre la que se salta se retira del tablero.