ÿþ<html> <head> <script> primzahl=new Array(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83); var pot=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0); var krit=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0); var rang=new Array(1,1,1,1,1,1,1,1,1,1,1,1,1); var reihe=new Array(1,1,1,1,1,1,1,1,1,1,1,1,1); var reiheasstring=''; var index=0; var satz5 = new Array(4096); for (var i = 0; i < satz5.length; ++i){ satz5[i] = new Array(14); } var temp=new Array(12); var tonhoehe=new Array(12); temp[0]=0; var nummer5=0; var neu=0; var toene=1; function rekursion(tiefe){ for (var faktor=-1;faktor<2;faktor=faktor+2){ temp[tiefe+1]=temp[tiefe]+faktor*reihe[tiefe+1]; if (tiefe<11) rekursion(tiefe+1); if (tiefe==11){ for (var m=0;m<13;m++){ satz5[nummer5][m]=temp[m]; } //Zahl der unterschiedlichen Tonhöhen bestimmen for (var i=0;i<13;i++){ tonhoehe[i]=120+temp[i]-12*Math.floor((120+temp[i])/12); } toene=1; for (var aussen=1;aussen<13;aussen++){ neu=1; for (var innen=0;innen<aussen;innen++){ if (tonhoehe[innen]==tonhoehe[aussen]) neu=0; } toene=toene+neu; } satz5[nummer5][13]=toene; //Spannweite bestimmen min=100; max=-100; for (var m=0;m<13;m++){ if (temp[m]>max) max=temp[m]; if (temp[m]<min) min=temp[m]; } satz5[nummer5][14]=max - min; nummer5=nummer5+1; } } } function initialisieren(){ var auswahl='Tag: <select name="eingabetag">'; for (var i=1;i<32;i++){ auswahl=auswahl+' <option value="'+i+'">'+i+'</option>'; } auswahl=auswahl+'</select>'; auswahl=auswahl+' Monat: <select name="eingabemonat">'; for (var i=1;i<13;i++){ auswahl=auswahl+' <option value="'+i+'">'+i+'</option>'; } auswahl=auswahl+'</select>'; auswahl=auswahl+' Jahr: <select name="eingabejahr">'; for (var i=0;i<100;i++){ auswahl=auswahl+' <option value="'+i+'">'+i+'</option>'; } auswahl=auswahl+'</select>'; document.getElementById('formular').innerHTML=auswahl; document.forms[0].eingabetag[23].selected=true; document.forms[0].eingabemonat[10].selected=true; document.forms[0].eingabejahr[6].selected=true; } function berechne(tag, monat, jahr){ for (var i=0;i<13;i++){ rang[i]= 1; reihe[i]=1; } // Primzahlindex bestimme for (var i=0;i<12;i++){ if (primzahl[11-i]>tag) index=11-i; } //Potenzen berechnen for (var i=1;i<13;i++){ pot[i]=Math.pow(primzahl[index+i-1],(1+jahr+i)/(monat+112)); hilf=''+pot[i]; krit[i]=hilf.substr(4,5); pot[i]=Math.round(1000000000*pot[i])/1000000000; } //Rang berechnen for (var i=1;i<13;i++){ for (var k=1;k<13;k++){ if (krit[k]<krit[i]) rang[i]=rang[i]+1; } reihe[rang[i]]=i; } //Tabelle bestimmen tabelle='<br><b>Zahlenfolge:</b> '+reihe[1]; reiheasstring=''+reihe[1]; for (i=2;i<13;i++) tabelle=tabelle + ', '+reihe[i] ; for (i=2;i<13;i++) reiheasstring=reiheasstring + ', '+reihe[i] ; document.getElementById('tabelle').innerHTML=tabelle; //Satz 5 for (var i=0;i<4096;i++){ satz5[i][0]=0 } temp[0]=0; nummer5=0; neu=0; toene=1; rekursion(0); max=0; min=20; for (var i = 0; i < 4096; ++i){ if (satz5[i][13]>max) max=satz5[i][13]; if (satz5[i][13]<min) min=satz5[i][13]; } var umfang_b=1000; var umfang_c=1000; for (var i = 0; i < 4096; ++i){ if (satz5[i][13]==max && satz5[i][14]<umfang_b) umfang_b=satz5[i][14]; if (satz5[i][13]==min && satz5[i][14]<umfang_c) umfang_c=satz5[i][14]; } //Ausgabe var ausgabe5='<b>nögliche Reihen b)</b><br>(Jede Zahl ist der Halbtonabstand + nach oben, - nach unten vom 1. Ton.<br>Zu jeder Reihe ist auch die Umkehrung enthalten.)<table><tr>'; for (var i=0; i<13; ++i) ausgabe5=ausgabe5+'<td align="center"></td>'; ausgabe5=ausgabe5+'<td>Tonh&ouml;hen</td><td>Umfang</td>'; for (var i = 0; i < 4096; ++i){ if (satz5[i][13]==max && satz5[i][14]==umfang_b){ ausgabe5=ausgabe5+'<tr>'; for (var k = 0; k < 15; ++k){ ausgabe5=ausgabe5+'<td align="center">'+satz5[i][k]+'</td>'; } ausgabe5=ausgabe5+'<tr>'; } } ausgabe5=ausgabe5+'</table>'; ausgabe5=ausgabe5+'<br><b>mögliche Reihen c)</b><table><tr>'; for (var i=0; i<13; ++i) ausgabe5=ausgabe5+'<td align="center"></td>'; ausgabe5=ausgabe5+'<td>Tonh&ouml;hen</td><td>Umfang</td>'; for (var i = 0; i < 4096; ++i){ if (satz5[i][13]==min && satz5[i][14]==umfang_c){ ausgabe5=ausgabe5+'<tr>'; for (var k = 0; k < 15; ++k){ ausgabe5=ausgabe5+'<td align="center">'+satz5[i][k]+'</td>'; } ausgabe5=ausgabe5+'<tr>'; } } ausgabe5=ausgabe5+'</table>'; document.getElementById('ausgabe5').innerHTML=ausgabe5; } </script> </head> <body> <h3>Berechnung der Reihen für Fehlversteck</h3> <p>P r o g r a m m &ensp; v o n &ensp; A x e l &ensp; K l e i n s c h m i d t<br> Bitte w&auml;hlen Sie ein Datum und klicken Sie dann auf "Berechnen":</p> <form action="test.htm"> <span id="formular"></span> </form> <script> initialisieren(); </script> <input type="button" value="Berechnen" onClick="berechne(1*document.forms[0].eingabetag.value,1*document.forms[0].eingabemonat.value,1*document.forms[0].eingabejahr.value)"> <div id="tabelle"></div> <br> <div id="ausgabe5"></div> </body> </html>