C++: Kann ich diesen Code irgendwie noch vereinfachen?

2 Antworten

Hier ne andere Möglichkeit die nur eine Schleifendurchlauf benötigt:

Du hast ja nur 6 Werte im Würfel.

Also können wir die randomwerte schon am Anfang zählen.

Liste mit 6 werten die am Anfang alle null sind.

Wenn du ne 1 würfelst zählste den 1. Wert in der Liste hoch. Bei ner 5 den 5.

Wenn du mit den würfen dich bist haste ne Liste mit zahlen wie oft diese gefallen ist.

Z.b. 1 0 3 0 1 0

Also 1 einser 3 dreier und 1 Fünfer.

Nun musste nur noch die Liste durchlaufen und schauen welcher Wert mindestens 2 ist und dann haste deine pasches.

Fertig.

Code mässig dürfte das wesentlich weniger kompliziert werden. Anstatt die Zahlen einfach in die Liste zu Puschen bitte diese als Index (minus 1 natürlich) um den Inhalt der Liste hochzuzählen.

Plus du sparst dir die geschachtelten schleifen die dir bei sehr vielen würden eh von der Rechenzeit explodieren würden.

Woher ich das weiß:Studium / Ausbildung – Bachelor

du kannst deine for-schleifen umbauen

die erste zählt i von 0 bis 5 die zweite j von i+1 bis 6

das spart Durchläufe und die Prüfung, ob i und j gleich sind.

ganz allgemein sind schleifen auch um einiges schneller, wenn du sie so schreibst

int i=5; do ... while --i;

einmal zahlst du rückwärts, das macht mich nicht viel aus, aber du kannst dann die prüfung auf die abbruchbedingung weglassen, weil while bei 0 abbricht.

Zum Schluss ist --i schneller als i--