lehrkraefte:blc:informatik:ffprg1-2022:nerdle:start

Nerdle

Siehe auch https://nerdlegame.com/ Dort finden sich auch die Regeln.

Es gibt auch noch https://nerdlegame.org/ (ohne Umstellungen)

Das mit der Kommutativiät kann zu Problemen führen:

Da wäre auch die Rechnung “8*6/16=3” denkbar, die die '8' in der zweiten Zeile als korrekt markieren könnte. Offenbar werden möglichen Umstellungen korrekt gefiltert, nachdem man geraten hat.

Auch ist nicht klar, welche Umstellung für die Bewertung ausgewählt werden soll. Die erste? Die, die am besten passt? Was heisst das genau?

Schreiben Sie Funktionen, die verschiedene Typen von Rechnungen generieren (und je nachdem auch gleich alle möglichen Umstellungen).

Beispiel:

import random
 
# 8 Zeichen, ein =, ein +, also 6 Zeichen für 3 Zahlen
def additionEinfach():
    if random.randrange(3)==0:  # 1/3 der Fälle generiere 1-stellig+2-stellig=3-stellig
        a = random.randrange(1,10)  # Einstellige Zahl
        c = random.randrange(100,100+a)  # Dreistellige Zahl so, dass c-a zweistellig ist
        b = c-a
        if random.randrange(2)==0:  # Zahlen vertauschen
            a,b = b,a
        return "%d+%d=%d" % (a,b,c)
    else:  # Generiere 2-stellig+2-stellig=2-stellig
        a = random.randrange(10,90)
        b = random.randrange(10,100-a)
        c = a+b
        return "%d+%d=%d" % (a,b,c)
 
 
# Testen:    
for i in range(10):
    print(additionEinfach())
 
 

Erweitern Sie obige Funktion so, dass mit 50% Wahrscheinlicheit jeweils die Umkehrung c-b=a generiert wird.

Lösungsvorschlag

Lösungsvorschlag

Anstatt einfaches return wird folgendes verwendet:

        if random.randrange(2)==0:  # 50% Wahrscheinlichkeit
            return "%d+%d=%d" % (a,b,c)
        else:
            return "%d-%d=%d" % (c,b,a)

Programmieren Sie dann weitere solche Funktionen.

Die Eingabe muss überprüft werden, ob die Rechnung überhaupt korrekt ist.

  • Dazu sind in den Regeln einige Bedingungen beschrieben (siehe Link oben)

Die Auswertung eines Ausdrucks kann wie folgt erfolgen:

  • Von links nach rechts werden erst die Operationen * und / ausgeführt und durch die Resultate ersetzt.
  • Dann werden die Operationen + und - ausgeführt und durch die Resultate ersetzt.
  • Steht dann links und rechts vom = das Gleiche, ist die Eingabe ok.

Das Überprüfung kann dann sehr einfach mit den generierten Rechnungen getestet werden (plus eigene «falsche» Eingaben).

Ist die Gleiche wie beim Wordle.

Mit Umstellungen

Wenn man mit allen Umstellungen arbeiten möchte, muss die Bewertungsfunktion auf alle verbleibenden Umstellungen angewandt werden und die «beste» Bewertung ausgesucht werden (z.B. die mit den meisten grünen, dann die meisten violetten (gelben)). Alle Umstellungen, die eine andere Bewertung ergeben würden, müssen entfernt werden.

  • lehrkraefte/blc/informatik/ffprg1-2022/nerdle/start.txt
  • Last modified: 2022/06/02 07:25
  • by Ivo Blöchliger