Pascalsches Dreieck
Erzeugt das Pascalsche Dreieck mit beliebig vielen Reihen und hebt alle Zahlen farbig hervor, die durch einen frei wählbaren Teiler teilbar sind.
Das Pascalsche Dreieck ist eine der bekanntesten Zahlenanordnungen der Mathematik: Ganz oben steht eine 1, an den beiden Außenkanten stehen ebenfalls lauter Einsen, und jede andere Zahl ist die Summe der beiden Zahlen, die schräg über ihr stehen. So entsteht Reihe für Reihe ein Dreieck aus Zahlen, das mit jeder Zeile breiter wird. Dieses Script von unserem Benutzer „Vollautomatisch“ baut euch dieses Dreieck in beliebiger Größe direkt im Browser auf.
Die Bedienung ist einfach: Im ersten Feld gebt ihr an, wie viele Reihen das Dreieck haben soll. Ins zweite Feld kommt ein Teiler — jede Zahl im Dreieck, die durch diesen Teiler ohne Rest teilbar ist, wird farbig unterlegt. Im dritten Feld legt ihr diese Farbe fest, entweder als englischer Farbname wie lime, orange oder gold oder als Hex-Wert wie #ffcc00. Ein Klick auf „Dreieck erzeugen“ zeichnet das Ergebnis darunter.
Gerade diese Einfärbung macht das Script zu mehr als einer Zahlentabelle: Färbt ihr alle durch 2 teilbaren Zahlen ein, tritt ein regelmäßiges Dreiecksmuster hervor, das dem Sierpinski-Dreieck ähnelt. Mit anderen Teilern wie 3, 5 oder 7 entstehen jeweils eigene, ebenso regelmäßige Muster. Für den Unterricht oder eine Projektarbeit lässt sich damit gut zeigen, dass in dieser schlichten Additionsregel überraschend viel Struktur steckt.
Wissenswertes zum Thema: Die Zahlen des Dreiecks sind die Binomialkoeffizienten — die Zahl in Reihe n an Position k gibt an, auf wie viele Arten man k Dinge aus n Dingen auswählen kann. Die Summe einer Reihe ist immer eine Zweierpotenz, und die Reihen liefern zugleich die Vorfaktoren beim Ausmultiplizieren von Ausdrücken wie (a + b) hoch n. Benannt ist das Dreieck nach Blaise Pascal, bekannt war es aber schon Jahrhunderte früher in China, Indien und Persien.
Bitte beachtet: Bei sehr vielen Reihen muss das Script entsprechend viele Zahlen berechnen, das kann einen Moment dauern. Wenn euch die Rechnerei hinter den Binomialkoeffizienten interessiert, schaut auch beim Fakultät berechnen und bei der Binomialverteilung vorbei; wer sich für Teilbarkeit interessiert, findet bei den Teilern einer Zahl und beim größten gemeinsamen Teiler passende Nachbarscripts.
Ab etwa 50 Reihen werden die Zahlen so groß, dass JavaScript sie nur noch gerundet in wissenschaftlicher Schreibweise darstellen kann.
So funktioniert das Script
Das Script besteht aus zwei klar getrennten Teilen, so wie es der ursprüngliche Autor schon in seinen Kommentaren markiert hat: Der erste Teil rechnet — er füllt ein Array mit allen Zahlen des Dreiecks. Der zweite Teil zeichnet — er baut aus diesen Zahlen die sichtbaren Kästchen. Davor liegt noch eine kleine Funktion, die die Eingabefelder ausliest und prüft. Ein Array ist dabei nichts anderes als eine durchnummerierte Liste von Werten.
const zahlen = [0, 1, 1, 1];
let spaltennummer = 4;
Alle Zahlen des Dreiecks landen hintereinander in einer Liste, nicht in einer Liste pro Reihe. Position 0 bleibt ungenutzt (deshalb die 0), Position 1 ist die Spitze des Dreiecks, die Positionen 2 und 3 sind die zweite Reihe. Ab Position 4 beginnt also die dritte Reihe — genau dort setzt der Zähler spaltennummer an.
if (zelle === 1 || zelle === reihe) {
zahlen[spaltennummer] = 1;
} else {
zahlen[spaltennummer] =
zahlen[spaltennummer - reihe] + zahlen[spaltennummer - reihe + 1];
}
Hier steckt die ganze Mathematik. Die erste und die letzte Zelle einer Reihe sind immer 1 — das ist die Außenkante des Dreiecks. Alle anderen Zellen sind die Summe der beiden darüberliegenden Zahlen. Weil alles in einer einzigen Liste liegt, findet man diese beiden Nachbarn, indem man von der aktuellen Position genau reihe Plätze zurückgeht: Das ist die Zahl links oben, und der Platz direkt daneben ist die Zahl rechts oben. Die beiden ineinander geschachtelten for-Schleifen laufen dabei zeilenweise durch das Dreieck: die äußere über die Reihen, die innere über die Zellen einer Reihe.
const feld = document.createElement("span");
feld.className = "pd-zelle";
feld.textContent = zellinhalt;
if (zellinhalt % bedingung === 0) {
feld.style.backgroundColor = bgcolor;
}
Für jede Zahl entsteht ein eigenes <span>-Element, das per textContent die Zahl bekommt. Der Prozent-Operator % ist kein Prozentrechnen, sondern liefert den Rest einer Division: 10 % 5 ergibt 0, weil 10 glatt durch 5 teilbar ist, 11 % 5 dagegen 1. Ist der Rest also 0, ist die Zahl durch den eingegebenen Teiler teilbar und bekommt über style.backgroundColor die gewählte Hintergrundfarbe.
ausgabe.textContent = "";
Diese eine Zeile vor dem Zeichnen ist wichtig: Sie leert die Ausgabefläche. Ohne sie würde bei jedem Klick ein weiteres Dreieck unter das alte gehängt. Das Original löste das anders — es schrieb die ganze Seite mit document.write komplett neu. Das geht in modernen Browsern nicht mehr sinnvoll, weil document.write nach dem Laden der Seite deren gesamten Inhalt überschreibt. Stattdessen füllt das Script hier gezielt einen Container.
if (!Number.isFinite(reihenzahl) || reihenzahl < 1 || reihenzahl > 60) {
meldung.textContent = "Bitte tragt bei den Reihen eine ganze Zahl von 1 bis 60 ein.";
return;
}
Number.isFinite() prüft, ob wirklich eine gültige, endliche Zahl im Feld steht — ein leeres Feld oder Buchstaben fallen damit durch. Statt einer Fehlermeldung im Rechenteil erscheint dann ein freundlicher Hinweis in der Ergebnisfläche, und return bricht die Funktion ab.
Zum Anpassen: Die Obergrenze von 60 Reihen ist reine Vorsicht — sie steht an genau zwei Stellen (im max-Attribut des Eingabefelds und in der Prüfung) und darf höher gesetzt werden, wenn ihr bereit seid, kurz zu warten. Ab etwa 50 Reihen werden die Zahlen allerdings größer als das, was JavaScript exakt speichern kann, und erscheinen gerundet. Aussehen und Größe der Kästchen ändert ihr über die Regeln zu .pd-zelle im <style>-Block, etwa min-width für schmalere Felder oder font-size für kleinere Zahlen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser