Closed nimec01 closed 9 months ago
Betreffs lokalem Ausprobieren, das ist hier mal knapp beschrieben und lässt sich hoffentlich anwenden: https://github.com/fmidue/logic-tasks/issues/46#issuecomment-1612003313
Bzgl. des Festhängens bei Testfällen: kann sein, dass in irgendeinem der Formelgeneratoren (oder so) noch ein unter seltenen Bedingungen zuschlagender Fall von nicht abbrechender Rekursion versteckt ist. 😢
Mit
stack repl
> :m + Control.Monad.Output
> :m + Test.QuickCheck
> generate (generateSuperfluousBracketsInst defaultSuperfluousBracketsConfig) >>= \i -> putStrLn (stringWithSuperfluousBrackets i)
konnte ich erreichen, was ich wollte. Die Formeln enthielten bis jetzt auch immer mindestens zwei verschiedene Operatoren.
Ist die Implementation so weit in Ordnung?
Prinzipieller Ansatz ist richtig, das Zählen ist m.E. aber noch nicht ganz korrekt, siehe oben.
Zu überlegen wäre noch, ob nicht der Parameter minUniqueOperators
, bzw. umbenannt vielleicht minUniqueBinOperators
, sogar in den SynTreeConfig
Teil wandern könnte (und dann Einbau der Filterung direkt in genSynTree
), wodurch dann auch andere Aufgabentypen von dieser zusätzlichen Steuerungsmöglichkeit profitieren würden. (Wo diese Steuerungsmöglichkeit nicht gebraucht wird, kann der Parameter ja jeweils auf 0
oder 1
gesetzt werden.)
Zum Zeitpunkt eines Merge müsste @owestphal mal sagen, ob es im Moment unproblematisch geht oder lieber bis nach einem eventuellen nächsten Autotool-Deploy gewartet werden sollte (weil Konfigurationstyp-Änderungen ungewünschte Auswirkungen auf im aktuellen Semester bereits gestellte Aufgabeninstanzen haben könnten).
Änderungen an der Konfiguragtion sollten wenn möglich bis nach dem Semester warten. Sonst bekommen alle Bonusaufgaben rückwirkend neue Instanzen oder funktionieren nicht mehr. Das macht Nachvollzeihen der Fehler für die Studierenden schwierig und die Bonuspunkte als Ganzes sehr undurchsichtig.
Zu überlegen wäre noch, ob nicht der Parameter
minUniqueOperators
, bzw. umbenannt vielleichtminUniqueBinOperators
, sogar in denSynTreeConfig
Teil wandern könnte (und dann Einbau der Filterung direkt ingenSynTree
), wodurch dann auch andere Aufgabentypen von dieser zusätzlichen Steuerungsmöglichkeit profitieren würden. (Wo diese Steuerungsmöglichkeit nicht gebraucht wird, kann der Parameter ja jeweils auf0
oder1
gesetzt werden.)
Ich habe die Logik jetzt entsprechend verschoben. Der Standardwert von minUniqueBinOperators
liegt jetzt erstmal bei 0
.
Bis auf die obigen beiden Kleinigkeiten scheint mir dies fertig.
Wegen des Einflusses auf die aktuelle Semester-Instanz muss der Merge aber warten. Wahrscheinlich sollte dann ein geeignetes Label verwendet werden, um diesen Status zu markieren.
Ich habe die Kleinigkeiten soeben beseitigt. Labeländerungen kann ich nicht vornehmen (falls das nochmal geändert werden soll).
There are several too-long-lines in the PR.
It's fixed now.
Ich habe mich mal an der Umsetzung eines Filters hinsichtlich #65 probiert. Anhand des
minUniqueOperators
Wertes inSuperfluousBracketsConfig
kann man eine Mindestanzahl an Operatoren festlegen. Ich habe zwei neue Testfälle erstellt, die soweit auch erfolgreich absolviert werden.Gibt es für mich auch eine Möglichkeit, lokal eine Aufgabe zu generieren und diese in der Konsole ausgeben zu lassen?
Des Weiteren ist mir aufgefallen, dass
stack test
bei mir immer wieder mal bei unterschiedlichen Testfällen hängen bleibt (auch unabhängig von meinen Änderungen). Ist das ein Phänomen, das nur bei mir auftritt?Hier ist ein Output von einem dieser Fälle: