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>