/*      Suites digitales autodescriptives de type II
	wdigitpos.js
	Jean-Paul Davalan (C) 2009

	http://jeux-et-mathematiques.davalan.org/mots/suites/digitposition/index.html
*/
function wdigitpos(x, lim) {
if(x<1||x>9) return ""
x = parseInt(x)
var car =""+x, deb=0, bits = [], u = [], ru=[],s = [], p = [];
u[0]=0;s[0]="0";p[0]=0;ru[0]=0;
//if(x==0) { u[1]=3;s[1]="3";p[1]=1;bits[3]="0";deb=1;ru[3]=1; }

function suivant(n) {
	var k, l = s[n].length;
	p[n+1] = p[n] + l;
	
	for(k=1;! compatible(k, p[n+1]);k++) ;
	
	bits[k]=car; u[n+1]=k;s[n+1] = ""+k;ru[k]=n+1;
	for(var i=0; i<s[n+1].length; i++)
		if(s[n+1].charAt(i)==car)
			bits[p[n+1]+i]=car
	return k;
}

function compatible(k, p) {
	var r = ""+k;
	if(ru[k]!=null) return false
	if(k<p) {
		if(bits[k]==null) 
			return false
		else {
			for(var i=0; i<r.length; i++)
				if(bits[p+i]!=null && r.charAt(i)!=car)
					return false
			return true
		}
	}
	if(car=="0" && bits[p+r.length]==car) return false
	for(var i=0; i<r.length; i++)  {
		if(( p+i == k && r.charAt(i)!=car )|| (bits[p+i]!=null && r.charAt(i)!=car))
			return false;
	}
	return true
}

for(var i=deb; i<lim; i++)  suivant(i)
var st = "<u>Suite u<sub>"+x+"</sub>(n) pour c="+x+"  jusqu'à n="+lim+"</u><br>"
for(var i=1; i<=lim;i++)
	st += u[i]+((i<lim)?", ":"")
var maxi, mini=0
for(var i in bits) {
	if(ru[i]==null) {
		if(i>maxi) maxi=i
	}
}
mini=maxi
for(var i in bits) {
        if(ru[i]==null) {
                if(i<mini) mini=i
        }
}
st += "<br>Le premier chiffre "+car+" non référencé est à la position "+mini+"<br>"
return st
}
/* ------------------------------------------------------------ */
/* ------------------------------------------------------------ */
function wcherche() {
        var c = parseInt(document.frmw.c.value)%10
        c = (c<=0)?1 : c
        document.frmw.c.value = c
        var lim = parseInt(document.frmw.lim.value)
        lim = (lim<10) ? 10 : lim
        document.frmw.lim.value = lim
        document.getElementById("widSols").innerHTML= wdigitpos(c, lim)
}
function wsuivt(k) {
	var c = (k+parseInt(document.frmw.c.value))%10
	c = (c<=0)?1 : c
	document.frmw.c.value = c
        wcherche()
}
function wefface() {
        document.getElementById("widSols").innerHTML=""
        document.frmw.c.value=""
        document.frmw.lim.value=""
}


