import re def gap(content, points): return "[gap({points}P)]{gap}[/gap]".format(points=points, gap=content) def p(content): return '<p>{}</p>\n'.format(content) def li(content): return '<li>{}</li>\n'.format(content) def tex(content): return ('<span class="latex">' + content + '</span>').replace('\\', '\\\\') def generate_ilias(): aufgabe = p('Berechnen Sie:') aufgabe += li(tex(r'\{a,b\} \cdot \{\varepsilon, cd\} = \{') + gap('a, acd, b, bcd', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon, cd\} \cdot \{a, b\} = \{') + gap('a, b, cda, cdb', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon, a, ab\}^2 = \{') + gap('eps, a, aa, aab, aba, abab', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon\} \cdot \{\varepsilon\} = \{') + gap('eps', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon\} \cdot \emptyset = ') + gap('{}', 0.5)) aufgabe += li(tex(r'\{\varepsilon\} \cdot \emptyset = ') + gap('{}', 0.5)) aufgabe += li(tex(r'\emptyset^2 = ') + gap('{}', 0.5)) aufgabe += li(tex(r'\emptyset^* = \{') + gap('eps', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon\}^* = \{') + gap('eps', 0.5) + tex('\}')) aufgabe += li(tex(r'\{\varepsilon, a\}^+ = \{') + gap('a*', 0.5) + tex('\}')) aufgabe += ''' Verwenden Sie <code>eps</code> für {eps} und <code>{{}}</code> für {empty}. Geben Sie alle Elemente der neuen Menge in lexikographischer Reihenfolge an und verwenden Sie Leerzeichen nach einem Komma. (Z.B. eps, a, ab, acd, ba)'''.format(eps=tex(r'\varepsilon'), empty=tex(r'\emptyset')) return aufgabe.replace(r'"', r'\"') def generate_solution(): solution = "<h3>Musterloesung</h3><br>" solution += re.sub(r'\[gap\(\d+P\)\](.+)\[\/gap\]', r'\1', generate_ilias()) return solution ### END OF SCRIPT ######################################################## meta = { "type": "GAP", "title": "Grundlagen", "author": "Jan Maximilian Michal", "gapLength": 10, "question": generate_ilias(), "solution": generate_solution(), }