Benutzer Diskussion:Belkouchi

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
funktion h lieft Gödelnummer von eingabe Wort (Verschlusselung im 3er-System)

<code id="618c371e8d203">
let set = new Set(["a","b"]); // a: 1 und b: 2 

function h(w){
	let somme=0;
    for (let i = 0; i < w.length; i++) {
	   let val=0;
	   if(w[i]=="a")
		   val=1;
	   if(w[i]=="b")
		   val=2;
	   somme +=val* Math.pow(3,(w.length-i-1));
    }
	return somme;
}
</code>


<run id="618c371e8d6f5">
h("aba");
</run>


funktion p und Prädikat, die überprüft ob eine gegebene Zahl göodelnummer ist oder nicht.

<code id="618c39977e295">
function p(r,y){
	if(isGoedelnumber(y) && r<=y)
		return 1;
	else
		return 0;
}

function isGoedelnumber(n){
	return praedikat(n).length>0 ? true : false;
}

function praedikat(n) {
    let s = 0;
    let sum = 0;
    let result = 0;
    while(sum < n){
        let combination = getCombination([1,2], s)
        if ( combination[0] != 0 ){
            for(let i = 0; i < combination.length; i++){
                sum = 0;
                for (let j= 0; j< combination[i].length; j++) {
                    sum += combination[i][j] * 3 ** j;
                }
                if (sum == n){
                    let result = combination[i].slice(-combination[i].length);
                    return result.reverse();
                }               
            }
        }
        s += 1;
    }
    return [];
}

function getCombination(array, size){
    let arrayValues = [];
    for(let i = 0; i < Math.pow(2,size); i++){
        let cont = size - 1;
        row = [];
        while( cont >= 0 ){
            res = ((1 << cont) & i);
            if( res == 0)
                row.push(array[0]);
            else
                row.push(array[1]);   
            cont -= 1;
        }
        arrayValues.push(row);
    }
    return arrayValues;
}

</code>

funktion g liefert die Folge der Gödelnummern

<code id="618c39977e61f">
function g(i){
   let muf= function f(i){
        let m = 1;
        while(true){
            let min = 1 - p(i, m);
            if (min < 0)
                min = 0;
            if (min == 0)
                return m;
            m += 1;
		}
	}
    if (i == 1)
        return muf(0);
    else
        return muf(g(i - 1) + 1);	
	}


// function Berechnen die Gödelnummern mit worten

function getwort(n){
let i=0;
let cont=0;
let set=[];
while(cont<n){
i++;
let l=praedikat(i);
let w='';
    if(l.length>0){
          for(let j=0;j<l.length;j++){
              w+=convert(l[j]);
              }
			  let v=[];
			  v.push(g(cont+1));
			  v.push(w);
			  set.push(v);
	 cont++;
    w='';
    }
}
return set;
}

function convert(n){
let num = n;
let w = '';
while (num > 0) {
    if(num % 10==1)
	w+='a';
    if(num % 10==2)
	w+='b';
    num = Math.trunc(num / 10);
}
return w;
}
</code>

Prozedur zur Berechnung der ersten 10 Gödelnummern

<run id="618c39977e8d4">
for(let i=1;i<=10;i++){
console.log(g(i));
}
</run>

funktion k liefert das n-te Wort in der gödelgeordneten  Folge der Wörter aus S

<code id="61919ad86fadb">
function k(n){
    let w = "";
    let nm = praedikat(n);
    for (let i = 0; i < nm.length; i++) {
        ch = "";
        if(nm[i] == 1)
            ch = "a";
        if(nm[i] == 2)
            ch = "b";
        w += ch;
	}	
    return w;
	}
</code>

<run id="61919ad86ffaa">
let wort="aba";
let godelnummer=h(wort);
k(godelnummer);

</run>