5 Zahlen
Eine kleine Kopfrechenaufgabe: Findet fünf Zahlen, die zusammen genau 71 ergeben.
Von unserem User Genjo wurde diese kleine Rechenaufgabe eingeschickt. Die Aufgabe lautet: Findet fünf Zahlen, die zusammen genau 71 ergeben. Tragt sie in die fünf Felder ein und klickt auf „Prüfen“ — das Script addiert und sagt euch, ob es gepasst hat. Mit „Leeren“ fangt ihr von vorn an, wiederholen könnt ihr das beliebig oft.
Ehrlich gesagt: Die Aufgabe ist etwas statisch und wenig variabel, denn das Ziel ist immer dieselbe Zahl 71. Zum ernsthaften Üben des Kopfrechnens eignet sie sich daher nur bedingt — und wer mag, darf gern schummeln und 67 + 1 + 1 + 1 + 1 eintragen. Der Reiz liegt eher darin, dass sich das Script mit wenigen Handgriffen umbauen lässt: Das Ziel steht als einzelne Zahl im Code und ist in Sekunden ausgetauscht.
Interessant ist die Aufgabe trotzdem, wenn man sie umdreht: Wie viele Möglichkeiten gibt es überhaupt, 71 als Summe von fünf Zahlen zu schreiben? Lässt man beliebige ganze Zahlen zu, sind es unendlich viele, weil man mit negativen Zahlen jederzeit ausgleichen kann. Beschränkt man sich auf positive Zahlen, wird daraus ein klassisches Abzählproblem der Kombinatorik.
Wer lieber wechselnde Aufgaben rechnet, ist bei den Grundrechenaufgaben besser aufgehoben. Zum Herumalbern mit Zahlen gibt es außerdem Denk dir eine Zahl, Gedanken lesen und die Knobelei Die Kamelhändler.
Wie gut kannst du rechnen? Welche fünf Zahlen ergeben zusammen 71?
So funktioniert das Script
Das Script ist ein gutes erstes Beispiel für eine Schleife: Es liest fünf Eingabefelder nacheinander aus, addiert sie zu einer Summe und vergleicht diese mit dem Ziel. Je nach Ergebnis erscheint einer von zwei Sätzen. Alles steckt in einer sofort ausgeführten Funktion, damit die Namen im Inneren nicht mit anderen Scripts der Seite kollidieren.
const ZIEL = 71;
const felder = ["fz-1", "fz-2", "fz-3", "fz-4", "fz-5"];
Ganz oben stehen die beiden Angaben, die das Spiel ausmachen: die Zielzahl und die Liste der Feld-IDs. Das nennt man eine Konstante — const heißt, der Wert wird später nicht mehr geändert. Groß geschriebene Namen wie ZIEL sind eine unter Programmierern verbreitete Gewohnheit, um solche Stellschrauben auf den ersten Blick erkennbar zu machen.
for (let i = 0; i < felder.length; i++) {
const wert = parseInt(document.getElementById(felder[i]).value, 10);
if (isNaN(wert)) {
ausgabe.textContent = "Bitte in alle fünf Felder eine ganze Zahl eintragen.";
return;
}
summe += wert;
}
Das Herzstück. Die Schleife zählt i von 0 bis 4 hoch — Listen werden in JavaScript ab null gezählt, und felder.length ist die Anzahl der Einträge, also 5. In jedem Durchlauf holt sich das Script über felder[i] die nächste ID, damit das zugehörige Eingabefeld und daraus dessen Inhalt. parseInt(…, 10) macht aus dem Text eine ganze Zahl im Zehnersystem.
Bleibt ein Feld leer oder steht Unsinn darin, liefert parseInt den Wert NaN („not a number“). isNaN erkennt das, die Meldung erscheint, und return verlässt die Funktion sofort — es wird gar nicht erst weitergerechnet. Sonst wächst mit summe += wert die Summe um den gelesenen Wert; das ist die Kurzschreibweise für summe = summe + wert.
if (summe === ZIEL) {
ausgabe.textContent = "Boaaaa!!! Schummelst du???";
} else {
ausgabe.textContent =
"Was? Diese leichte Aufgabe kannst du nicht lösen? Deine Summe ist " + summe + ".";
}
Der Vergleich mit drei Gleichheitszeichen (===) prüft Wert und Typ und ist in JavaScript dem doppelten == vorzuziehen. Die beiden Sätze sind die des ursprünglichen Scripts; neu ist nur, dass bei einem Fehlversuch die tatsächliche Summe mit ausgegeben wird — so seht ihr, wie weit ihr daneben lagt.
felder.forEach(function (id) { document.getElementById(id).value = ""; });
Der Knopf „Leeren“ geht dieselbe Liste noch einmal durch und setzt jedes Feld auf eine leere Zeichenkette. forEach ist die bequeme Schwester der for-Schleife: Die übergebene Funktion wird einmal je Listeneintrag aufgerufen. Anschließend springt die Schreibmarke per focus() zurück ins erste Feld.
Zum Anpassen: Die Zielzahl ändert ihr in der Zeile const ZIEL = 71;. Wollt ihr mit mehr oder weniger Zahlen spielen, ergänzt oder streicht ihr Einträge in der Liste felder und dazu passend die Eingabefelder im HTML — der Rest des Scripts arbeitet über felder.length und passt sich von selbst an. Auch die beiden Sprüche dürft ihr natürlich durch eigene ersetzen.
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
-
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