Bergervei/Javascript-Spielwiese

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
== Gebrauch des Smileys ==

<code id="575e4fe7ef3fd">
function ggT(m, n) {
 if (n == 0)
  return m;
 else
  return ggT(n, m % n);
}
</code>

<check execute="(ggT(123, 69) == 3) && (ggT(9797, 303) == 101) && (ggT(31, 5) == 1)">
true
</check>

<run id="575e4fe7ef477">
ggT(123, 9);
</run>

== Dreieckprüfer ==

<table cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top" width="460">[[Bild:DreieckPruefer.gif]]</td>
<td align="left" valign="top" width="740">
<code id="5bd5881c0731e">
function DreieckPruefer(a, b, c) {
 var txt = "";
 // -- weitere Anweisngen --
 return txt;
}
</code>

<check execute="(DreieckPruefer(5, 3, 4).search('nicht konstruierbar') == -1) && (DreieckPruefer(97, 3, 1).search('nicht konstruierbar') != -1)">
true
</check>

<run id="5bd593cfb3c71">
(DreieckPruefer(3, 5, 4));
</run>
</td>
</tr>
</table>

== Tilgung eines zinslosen Kredits ==

<code id="5bd593cfb3ae9">
function tilgung(kredit, prozent) {
 // -- weitere Anweisungen --
 return kredit;
}
</code>

<run id="5bd593cfb3cfe">
tilgung(25000, 7.5);
</run>

== Taxigebühr ==

Das Taxiunternehmen "LöbTax" bietet seinen Kunden folgende Tarife an:
{| border=0
|-
|<ul><li>Grundgebühr:</li></ul>
|2,50 €
|-
|<ul><li>Kilometerpreis bis 5 km:</li></ul>
|1,70 €
|-
|<ul><li>Kilometerpreis bis 10 km:</li></ul>
|1,55 €
|-
|<ul><li>Kilometerpreis ab 10 km:</li></ul>
|1,40 €
|}
Implementiere die entsprechende Funktion zur Berechnung der Taxigebühr in Abhängigkeit der gefahrenen Streck in Kilometern. 

<code id="5bd593cfb3b84">
function TaxiPreis(km) {
 var preis = 0;
 // -- weitere Anweisungen --
 return preis;
}
</code>

<run id="5bd593cfb3d89">
TaxiPreis(12.5);
</run>

== Turtlegrafik ==

<code id="57617d4f30174" hidden>
function center(turtle) {
 turtle.move(200, 150);
}

function black(turtle) {
 turtle.penColor(0, 0, 0);
}

function red(turtle) {
 turtle.penColor(255, 0, 0);
}

function brown(turtle) {
 turtle.penColor(100, 50, 0);
}

function orange(turtle) {
 turtle.penColor(255, 100, 0);
}

function yellow(turtle) {
 turtle.penColor(255, 200, 0);
}

function green(turtle) {
 turtle.penColor(0, 255, 0);
}

function blue(turtle) {
 turtle.penColor(0, 0, 255);
}

function pink(turtle) {
 turtle.penColor(200, 50, 200);
}
</code>

<code id="57618d00e9982">
var farbliste = ["red", "orange", "yellow", "green", "blue", "pink"];

function n_eck(turtle, x, n) {
 var winkel = 360 / n;
 for (var i = 1; i <= n; i++) {
  turtle.forward(x);  
  turtle.right(winkel); 
 }
}

function farbstern(turtle, x, n, m) {
 var winkel = 360 / m;
 var farbe;
 for (var i = 1; i <= m; i++) {
  farbe = farbliste[Math.floor((i - 1) * farbliste.length / m)];
  switch (farbe) {
   case "red":
    red(turtle); break;
   case "brown":
    brown(turtle); break;
   case "orange":
    orange(turtle); break;
   case "yellow":
    yellow(turtle); break;
   case "green":
    green(turtle); break;
   case "blue":
    blue(turtle); break;
   case "pink":
    pink(turtle); break;
   default:
    black(turtle); break;
  }
  n_eck(turtle, x, n);
  turtle.right(winkel);
 }
}
</code>

<canvas w="400" h="300"></canvas>

<run id="57618d00e99ff">
canvas1.clear(); 
turtle1.move(200, 150);
farbstern(turtle1, 75, 5, 55);
</run>

<code id="5b0c70d02658f">
function kreis(turtle, x, y, r) {
 var winkel = 180 / r / Math.PI;
 var n = 360 / winkel;
 turtle.move(x - r, y);
 for (var i = 1; i <= n; i++) {
  turtle.forward(1);
  turtle.right(winkel);
 }
}
</code>

<canvas w="400" h="300"></canvas>

<run id="5b0c70d026631">
canvas2.clear();
kreis(turtle2, 200, 150, 50);
</run>

== Zeichenzähler ==

<code id="5ba880a3466e7">
function zeichenzaehler(zeichenkette, z) {
 var zaehler = 0;
 for (var i = 0; i < zeichenkette.length; i++)
  if (z == zeichenkette.substr(i, 1)) zaehler++;
 return zaehler;
}
</code>

<run id="5ba87ccf7e1d4">
zeichenzaehler("Mississippi-Missouri", "i");
</run>

== Vokalzähler ==

<code id="5ba880a346776">
function vokalzaehler(zeichenkette) {
 var zaehler = 0;
 var vokale = "AEIOU";
 zeichenkette = zeichenkette.toUpperCase();
 for (var j = 0; j < vokale.length; j++)
  for (var i = 0; i < zeichenkette.length; i++)
   if (vokale.substr(j, 1) == zeichenkette.substr(i, 1)) zaehler++;
 return zaehler;
}
</code>

<run id="5ba87ccf7e23f">
vokalzaehler("Mississippi-Missouri");
</run>

== Drei Chinesen mit dem Kontrabass... ==

<code id="5bbcd022ed78a">
function dreiChinesen(zeichenkette, zeichen) {
 var neukette = "", zei = "";
 var vokale = "AEIOUÄÖÜaeiouäöü";
 var pos = -1;
 for (var i = 0; i < zeichenkette.length; i++) {
  zei = zeichenkette.substr(i, 1);
  pos = vokale.indexOf(zeichenkette.substr(i, 1));
  if (pos >= 0)   
   if (pos < 8)
    neukette = neukette + zeichen.toUpperCase();
   else
    neukette = neukette + zeichen.toLowerCase();
  else
   neukette = neukette + zei;
 }
 return neukette;
}
</code>

<check execute="(dreiChinesen('Drei Chinesen mit dem Kontrabass...', 'a') == 'Draa Chanasan mat dam Kantrabass...') && (dreiChinesen('AeIoU', 'e') == 'EeEeE') && (dreiChinesen('', 'i') == '')">
true
</check>

<run id="5bbcd022ed841">
dreiChinesen("Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was.", "i");
</run>

== Plindromprüfung ==

<code id="5ba880a346807">
function palindrompruefer(zeichenkette) {
 var neukette = "";
 zeichenkette = zeichenkette.toUpperCase();
 for (var i = 0; i < zeichenkette.length; i++)
  neukette = zeichenkette.substr(i, 1) + neukette;
 return (zeichenkette == neukette);
}
</code>

<run id="5b9619346de9e">
palindrompruefer("Rentner");
</run>

== Schüttelwörter ==

<code id="5bbcd6e2a1b86" hidden>
function schuettelTest(zeichenkette, neukette) {
 var test = (zeichenkette.length == neukette.length);
 var pos = -1;
 if (test)
  for (i = 0; i < neukette.length; i++) {
   pos = zeichenkette.indexOf(neukette.substr(i, 1));
   test = test && (pos >= 0);
  }
 return test;
} 
</code>

<code id="5ba880a3468ae">
function schuetteln(zeichenkette) {
 var neukette = "";
 var pos, zeichen;
 do {
  pos = Math.floor(Math.random() * zeichenkette.length);
  zeichen = zeichenkette.substr(pos, 1);
  neukette = neukette + zeichen;
  zeichenkette = zeichenkette.replace(zeichen, "");
 }
 while (zeichenkette.length > 0);
 return neukette;
} 
</code>

<check execute="schuettelTest('das ist ein langer Text', schuetteln('das ist ein langer Text')) && (schuetteln('das ist ein langer Text') != schuetteln('das ist ein langer Text'))">
true
</check>

<run id="5b960f62e3580">
schuetteln("Informatik");
</run>

== Cäsar-Verschlüsselung ==

<code id="5bc36b68951aa">
function wandeln(zeichen, schritt) {
 var code = zeichen.charCodeAt();
 if (code > 64 && code < 91) {
  code = code + schritt;
  while (code > 90) code = code - 26;
  while (code < 65) code = code + 26;
  return String.fromCharCode(code);
 }
 else
  return zeichen;
}

function caesarCodieren(zeichenkette, schluesselbuchstabe, richtung) {
 var neukette = "";
 zeichenkette = zeichenkette.toUpperCase();
 schluesselbuchstabe = schluesselbuchstabe.toUpperCase();
 for (var i = 0; i < zeichenkette.length; i++) {
  let buchstabe = zeichenkette.substr(i, 1);
  let schritt = schluesselbuchstabe.charCodeAt() - 65;
  neukette = neukette + wandeln(buchstabe, richtung * schritt);
 }
 return neukette;
}

function caesarVerschluesseln(zeichenkette, schluesselbuchstabe) {
 return caesarCodieren(zeichenkette, schluesselbuchstabe, 1);
}

function caesarEntschluesseln(zeichenkette, schluesselbuchstabe) {
 return caesarCodieren(zeichenkette, schluesselbuchstabe, -1);
}
</code>

<run id="5ba880a346a3f">
caesarVerschluesseln("Informatik", "B");
</run>

<run id="5ba880a346ae6">
caesarEntschluesseln("JOGPSNBUJL", "B");
</run>

=== Häufigkeitsuntersuchungen ===

<code id="5bc4ebd3e782b">
function maxBuchstabe(zeichenkette) {
 var alphabet ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 var maxzeichen = "", maxanzahl = 0;
 zeichenkette = zeichenkette.toUpperCase();
 for (var j = 0; j < alphabet.length; j++) {
  let zeichen = alphabet.substr(j, 1);
  let anzahl = 0;
  for (var i = 0; i < zeichenkette.length; i++)
   if (zeichenkette.substr(i, 1) == zeichen) anzahl++;
  if (anzahl > maxanzahl) {
   maxzeichen = zeichen; maxanzahl = anzahl;
  }
 }
 return maxzeichen;
}

function caesarKnacken(zeichenkette, buchstabe) {
 zeichenkette = zeichenkette.toUpperCase();
 buchstabe = buchstabe.toUpperCase();
 var schritt = maxBuchstabe(zeichenkette).charCodeAt() - buchstabe.charCodeAt();
 var code = 65 + schritt;
 while (code > 90) code = code - 26;
 while (code < 65) code = code + 26;
 var schluesselbuchstabe = String.fromCharCode(code);
 return caesarEntschluesseln(zeichenkette, schluesselbuchstabe);
}

function caesarTesten(zeichenkette, testkette) {
 for (var i = 0; i < testkette.length; i++) {
  let txt = caesarKnacken(zeichenkette, testkette.substr(i, 1));
  console.log(txt);
 }
} 
</code>

<run id="5bc36b689535a">
txt = "Das ist ein relativ kurzer, aber brisanter Informatik-Text!";
txt_geheim = caesarVerschluesseln(txt, "D");
caesarTesten(txt_geheim, "ERNSTL");
</run>