Einfache Kombinatorik (Simulationen)
Wer des Programmierens mächtig ist, kann viele kombinatorische Fragen auszählen lassen. Beispiel: Wie viele dreistellige Zahlen haben lauter verschiedene Ziffern?
Zusatzaufgabe: Wie viele Möglichkeiten gibt es, eine aufsteigende Folge von 6 aus 45 Zahlen zu bilden?
0 Kommentare
4 Lösung(en)
k=0
for H in range(1,10):
for Z in range(0,10):
for E in range(0,10):
if Z!=E and Z!=H and H!=E: k=k+1
print "Es gibt", k, "dreistellige Zahlen mit versch. Ziffern"
void top() {
int anzahl = 0;
for(int zahl = 100; zahl <= 999; zahl = zahl + 1) {
int einer = (zahl ) % 10;
int zehner = (zahl / 10 ) % 10;
int hunderter = (zahl / 100) % 10;
if(einer != zehner && einer != hunderter && zehner != hunderter) {
anzahl = anzahl + 1;
}
}
System.out.println("Anzahl geforderter Zahlen: " + anzahl);
}
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
function hasDifferentDigits(num) {
num = num.toString().split('').sort();
while (num.length > 1)
if (num.shift() == num[0]) return false;
return true;
}
let diffDigits = [];
for (let i = 102; i <= 987; i++)
if (hasDifferentDigits(i)) diffDigits.push(i);
// ausgabe
console.log(`Es gibt ${diffDigits.length} dreistellige Zahlen mit unterschiedlichen Ziffern:
${diffDigits.join(', ')}`);
/* Zusatzaufgabe*/
// https://de.wikipedia.org/wiki/Binomialkoeffizient
function binCoeff(n, k) {
let result;
if (2 * k > n) k = n - k;
result = 1;
for (let i = 1; i <= k; i++)
result = result * (n - k + i) / i;
return result;
}
console.log(`Es gibt ${binCoeff(45,6)} Möglichkeiten, eine aufsteigende Folge von 6 aus 45 Zahlen zu bilden`);
// lissalanda@gmx.at
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 6.x | C# 10.x | VS-2022
var lst = Enumerable.Range(102, 886).Where(x => new HashSet<char>(x.ToString().ToCharArray()).Count == 3).ToList();
Console.WriteLine($"Es sind {lst.Count} Zahlen mit unterschiedlichen Ziffer:\n{string.Join(", ", lst)}");
static int BinCoe(int n, int k) => (k == 0 || n == k) ? 1 : BinCoe(n - 1, k) + BinCoe(n - 1, k - 1);
Console.WriteLine($"\n\nAnzahl der Möglichkeiten für eine aufsteigende Folge 6 aus 45:\n{BinCoe(45, 6)}");
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
Es gibt 648 dreistellige Zahlen mit lauter verschiedenen Ziffern.
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | k.A. |
Webcode: | 4cnf-kew2 |
Autor: | Martin Guggisberg (Universität Basel / PH FHNW) |