From fb9cddf416634ef6719f64e92df2ff8d919a2991 Mon Sep 17 00:00:00 2001 From: Jan Maximilian Michal <j.michal@stud.uni-goettingen.de> Date: Wed, 23 Nov 2016 19:53:24 +0000 Subject: [PATCH] fixed originale_kopien --- hallgrim/parser.py | 4 ++-- scripts/originale_kopien.py | 31 +++++++++++++++++++------------ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/hallgrim/parser.py b/hallgrim/parser.py index 0ad49d0..6411497 100644 --- a/hallgrim/parser.py +++ b/hallgrim/parser.py @@ -110,9 +110,9 @@ def gap_parser(task): final = [] for s in m: lines = s.strip().split('\n') - regex = re.compile('\[(\d|X| )\]\s+([\w\W]+)', re.MULTILINE) + regex = re.compile('\[(([0-9]*[.])?[0-9]+| )\]\s?([\w\W]+)', re.MULTILINE) parse = [re.search(regex, line).groups() for line in lines] - final.append([(text.strip(), float(points) if not points == ' ' else 0) for points, text in parse]) + final.append([(text.strip(), float(points) if not points == ' ' else 0) for points, _, text in parse]) sep = ' !"§$%&/(XCVBNM; ' no_gaps = re.sub(r, sep, task) diff --git a/scripts/originale_kopien.py b/scripts/originale_kopien.py index cf03214..09e87e0 100644 --- a/scripts/originale_kopien.py +++ b/scripts/originale_kopien.py @@ -1,7 +1,7 @@ meta = { 'author': 'Jan Maximilian Michal', 'title': 'Originale Kopien? (I1-ID: 0c05by80syg0)', - 'type': 'multiple choice', + 'type': 'gap', 'points': 0.5, # per correct choice } @@ -11,23 +11,30 @@ vom Typ `String`. `a`, `b`, `c` und `d` sind bereits korrekt mit Zeichenfolgen der Länge 2 initialisiert (d.h. die jeweiligen Felder/Strings belegen Speicherplatz und man kann auf ihre Inhalte zugreifen). Welcher Code ist geeignet, um festzustellen, ob die in a und b bzw. in c und d gespeicherten -Zeichenfolgen gleich sind? """ +Zeichenfolgen gleich sind? + +* `if (a == b) ...` [select][ ]geeignet\n[0.5]ungeeignet[/select] +* `if (a.equals(b)) ...` [select][ ]geeignet\n[0.5]ungeeignet[/select] +* `if (a[0] == b[0] || a[1] == b[1]) ...` [select][ ]geeignet\n[0.5]ungeeignet[/select] +* `if (a[0] == b[0] && a[1] == b[1]) ...` [select][0.5]geeignet\n[ ]ungeeignet[/select] +* `if (c == d) ...` [select][ ]geeignet\n[0.5]ungeeignet[/select] +* `if (c.equals(d)) ...` [select][0.5]geeignet\n[ ]ungeeignet[/select] +* `if (c.compareTo(d) == 0) ...` [select][0.5]geeignet\n[ ]ungeeignet[/select] +* `if (c[0] == d[0] && c[1] == d[1]) ...` [select][ ]geeignet\n[0.5]ungeeignet[/select] +""" # Antworten bitte aus drop-down-Menü wählen lassen: # Auswahl jeweils geeignet/nicht geeignet -choices = """ -[ ] `if (a == b) ...` -[ ] `if (a.equals(b)) ...` -[ ] `if (a[0] == b[0] || a[1] == b[1]) ...` -[X] `if (a[0] == b[0] && a[1] == b[1]) ...` -[ ] `if (c == d) ...` -[X] `if (c.equals(d)) ...` -[X] `if (c.compareTo(d) == 0) ...` -[ ] `if (c[0] == d[0] && c[1] == d[1]) ...` -""" feedback = """ +Wichtig ist darauf zu achten, dass Objekte vom Typ String spezifische Methoden +exportieren, die das vergleichen oder bearbeiten von Zeichenketten erlauben. +Einfache `char[]` Arrays erlauben das nicht. + +Da der Objekte vom Typ String jedoch `char` Arrays enthalten ist es möglich +über Indizierung den Vergleich 'per Hand' durchzuführen. + """ -- GitLab