Schach & Reis

Es fing allgemein mit der Legende von der Erfindung des Schachs an und speziell mit der Frage, wieviele Reiskörner genau auf dem Schachbrett sind.

Entwickelt:

2002

Code:

HTML, Javascript/DHTML

Entwicklung:

Den Tipp zur Berechnung habe ich von einem Bekannten bekommen, der mich von der Leitung gestoßen hat. Inzwischen ist es auch in PHP umgesetzt um die Schachfrage auf selfhtml pow()  http://www.gueldenstern.de/uns_scha.html zu "klären".
Hier sollte man dem Nutzer aber keine Gelegenheit geben wahllos Beträge einzugeben, denn mit PHP findet die Rechenleistung auf dem Server statt.

Status:

Veraltet, aber brauchbar. Eine Anpassung an DOM ist nicht sehr aufwändig.

Erklärung:

Bis zu einer gewissen Grenze bietet Javascript hier Möglichkeiten etwa mit  selfhtml pow()  pow(), aber ab einer gewissen Größe der Zahlen spielen diese internen Funktionen nicht mehr mit (eben bei 2 hoch 64).

Bei diesem Script gibt es - abgesehen von der Leistung des Nutzerrechners - keine mir bekannte Grenze nach oben. Allerdings kann ein Test in dieser Richtung den Rechner extrem belasten...

Die Funktion addiert lediglich auf und gibt das Ergebnis mit document.write in einer Tabelle aus. Um XHTML-konform mit DOM zu arbeiten müsste man Elemenknoten erstellen, füllen und einbinden.

Hinweis

Die Belastung kann den Nutzerrechner lahm legen

Der Quellcode:

 und so siehts aus...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <meta http-equiv="Content-Type"
       content="text/html; charset=utf-8">
 <meta name="robots" content="index,follow">
 <meta name="author" content="Jörg Ahrens">
 <meta name="publisher" content="Jörg Ahrens">
 <meta name="copyright" content="Jörg Ahrens">
 <meta name="date" content="2002-09-16T10:00:00+02:00">

 <title>[Gueldensterns Schach & Reis - Berechnung]</title>

</head>
<body>

 <p>Man kann meines Erachtens beliebige<br>
   Potenzen berechnen,aber ich bitte zu<br>
   beachten, dass ab einer gewissen Größe<br>
   der Rechner des Nutzers extrem belastet wird!<br>
   Nur zur Sicherheit als Hinweis:<br>
   Javascript läuft auf dem Nutzerrechner.</p>

 <form name="Rechnen" action="">
  Basis <input name="Basis" size="2" maxlength="3">
  hoch <input name="Potenz" size="2" maxlength="4">
  <input type="button" value="berechnen" onClick="Rechne()">
 </form>

 <script type="text/javascript">
 <!--

  /*************************************
   Script von Jörg Ahrens
   www.gueldenstern-webdesign.de
   Fragen an:
   info@gueldenstern-webdesign.de
  *************************************/

  function Rechne() {
   var NUM=new Array(2); // Reiskorn
   var DEC=new Array(2); // Zehner
   var POI=new Array(2); // Zahl mit Punkt

   NUM[1]=new Array();
   DEC[1]=new Array();
   POI[1]=new Array();

   NUM[2]=new Array();
   DEC[2]=new Array();
   POI[2]=new Array();

   var POT=parseFloat(document.forms["Rechnen"].Potenz.value);
   var BAS=parseFloat(document.forms["Rechnen"].Basis.value);
   //var POT=64;
   //var BAS=2;
   var LEN=BAS*POT;
   var NUL1,NUL2,FIG;     // Nullfinder
   var POI_STR1,POI_STR2;
   var POI_STR1,POI_STR2;
   var NEX1,NEX2;         // naechsteZahl
   var SIZ;               // WieGross
   var SIZ_F,SIZ_B;       // WieGrossVorn/HInten

   for(i=LEN;i>=0;i--) {
    NUM[1][i]=0;
    NUM[2][i]=0;
    DEC[1][i]=0;
    DEC[2][i]=0;
   }
   NUM[1][LEN]=1;
   NUM[2][LEN]=1;
   with(document) { 
    write("<table border=1 ");
    write("cellspacing=2 cellpadding=2\>");
    write("<tr><td>Exponent</td>");
    write("<td align=\"right\">");
    write(BAS);
    write(" hoch Exponent</td>");
    write("<td align=\"right\">");
    write("Summe");
    write("</td></tr>");
   }
   for(i=0;i<=POT;i++) {
    NUM_STR1=NUM[1].join("");
    NUM_STR2=NUM[2].join("");
    NUL1=0;                // Nullfinder
    NUL2=0;
    while(NUM_STR1.charAt(NUL1)=="0") {
     NUL1++;
    }
    while(NUM_STR2.charAt(NUL2)=="0") {
     NUL2++;
    }
    NUM_STR1=NUM_STR1.slice(NUL1);
    NUM_STR2=NUM_STR2.slice(NUL2);
    FIG1=NUM_STR1.length/3;
    FIG1=Math.floor(FIG1);
    FIG2=NUM_STR2.length/3;
    FIG2=Math.floor(FIG2);
    if(Math.floor(NUM_STR1.length/3)==
       Math.ceil(NUM_STR1.length/3)) {
     NEX1=0;
    } else if(Math.floor(NUM_STR1.length/3)==
              Math.round(NUM_STR1.length/3)) {
     NEX1=1;
    } else if(Math.ceil(NUM_STR1.length/3)==
              Math.round(NUM_STR1.length/3)) {
     NEX1=2;
    }
    if(Math.floor(NUM_STR2.length/3)==
       Math.ceil(NUM_STR2.length/3)) {
     NEX2=0;
    } else if(Math.floor(NUM_STR2.length/3)==
              Math.round(NUM_STR2.length/3)) {
     NEX2=1;
    } else if(Math.ceil(NUM_STR2.length/3)==
              Math.round(NUM_STR2.length/3)) {
     NEX2=2;
    }
    document.write("<tr><td align=right>");
    if(NUM_STR1.length<=3) {
     with(document) {
      write(i);
      write("</td><td align=\"right\">");
      write(NUM_STR1);
      write("</td>");
     }
    } else {
     POI[1][0]=NUM_STR1.substr(0,NEX1);
     for(z=0;z<FIG1;z++) {
      if(NEX1==0 && z==0) {
       POI[1][z+1]=NUM_STR1.substr((z*3)+NEX1,3);
      } else {
       POI[1][z+1]="."+NUM_STR1.substr((z*3)+NEX1,3);
      }
     }
     POI_STR1=POI[1].join("");
     with(document) {
      write(i);
      write("</td><td align=\"right\">");
      write(POI_STR1);
      write("</td>");
     }
    }
    if(NUM_STR2.length<=3) {
     with(document) {
      write("<td align=\"right\"\>");
      write(NUM_STR2);
     }
    } else {
     POI[2][0]=NUM_STR2.substr(0,NEX2);
     for(z=0;z<FIG2;z++) {
      if(NEX2==0 && z==0) {
       POI[2][z+1]=NUM_STR2.substr((z*3) + NEX2,3);
      } else {
       POI[2][z+1]="."+NUM_STR2.substr((z*3)+NEX2,3);
      }
     }
     POI_STR2=POI[2].join("");
     with(document) {
      write("<td align=\"right\">");
      write(POI_STR2);
     }
    }
    document.write("</td></tr>");
    for(j=LEN;j>=0;j--) {
     NUM[1][j]=NUM[1][j]*BAS+DEC[1][j];
     if(NUM[1][j]>=10) {
      SIZ=String(NUM[1][j]);
      SIZ_F=SIZ.substr(0,SIZ.length-1);
      //SIZ_B=SIZ.substr(SIZ.length-1,1);
      NUM[1][j]=NUM[1][j]-Number(SIZ_F)*10;
      DEC[1][j-1]=DEC[1][j-1]+Number(SIZ_F);
     }
     NUM[2][j]=NUM[2][j]+NUM[1][j]+DEC[2][j];
     if(NUM[2][j]>=10) {
      SIZ=String(NUM[2][j]);
      SIZ_F=SIZ.substr(0,SIZ.length-1);
      //SIZ_B=SIZ.substr(SIZ.length-1,1);
      NUM[2][j]=NUM[2][j]-Number(SIZ_F)*10;
      DEC[2][j-1]=DEC[2][j-1]+Number(SIZ_F);
     }
    }
    for(j=LEN;j>=0;j--) {
     DEC[1][j]=0;
     DEC[2][j]=0;
    }
   }
   document.write("<\/table>");
   document.write("<a href=\"htmlschachjs.html\">Neu<\/a>");
  }
 //-->
 </script>
</body>
</html>

Gueldenstern Webdesign ist Jörg Ahrens · 24, bd Robert Schuman · L-8340 Olm
Sitemap · Impressum · © 2002-2024

GUELDENSTERN WEBDESIGN

Gueldenstern Webdesign

JÖRG AHRENS · OLM · LUXEMBURG ::  GESTALTUNG  ·  PROGRAMMIERUNG  ·  SERVICES