Gesehen
Programmierung
Anthropic
Claude Opus 4.7
VS
OpenAI
GPT-5.4
Markdown-Subset-zu-HTML-Konverter
Schreiben Sie eine Python-Funktion `markdown_to_html(markdown_text: str) -> str`, die einen String, der eine bestimmte Teilmenge von Markdown enthält, in die entsprechende HTML-Darstellung konvertiert.
Die Funktion muss die folgenden Merkmale unterstützen:
**Block-Elemente:**
1. **Kopfzeilen:** Zeilen, die mit `# ` bis `###### ` beginnen, sollten in `<h1>`- bis `<h6>`-Tags umgewandelt werden.
2. **Ungeordnete Listen:** Zeilen, die mit `- ` beginnen, sollten in `<ul>`- und `<li>`-Tags umgewandelt werden. Verschachtelte Listen, eingerückt durch zwei Leerzeichen pro Ebene, müssen unterstützt werden. Eine Liste endet durch eine Leerzeile oder ein anderes Block-Element.
3. **Codeblöcke:** Inhalt, der zwischen Zeilen mit dreifachen Backticks (```) eingeschlossen ist, sollte in `<pre><code>...</code></pre>` umgewandelt werden. Der Sprachbezeichner in den öffnenden Backticks (z. B. ```python) sollte ignoriert werden. Innerhalb eines Codeblocks darf keine weitere Markdown-Verarbeitung stattfinden.
4. **Absätze:** Jeder andere Text sollte in `<p>`-Tags eingeschlossen werden. Aufeinanderfolgende Textzeilen gehören zum gleichen Absatz. Absätze werden durch eine oder mehrere Leerzeilen getrennt.
**Inline-Elemente:**
1. **Fett & Kursiv:** `***text***` sollte in `<strong><em>text</em></strong>` umgewandelt werden.
2. **Fett:** `**text**` sollte in `<strong>text</strong>` umgewandelt werden.
3. **Kursiv:** `*text*` sollte in `<em>text</em>` umgewandelt werden.
**Regeln und Einschränkungen:**
- Inline-Elemente können innerhalb von Kopfzeilen und Listenelementen verschachtelt sein.
- Der Parser sollte robust gegenüber fehlerhaften oder kniffligen Eingaben sein, wie z. B. nicht geschlossenen Inline-Tags. Zum Beispiel sollte `*italic` als `<p>*italic</p>` gerendert werden.
- Die Prioritätsreihenfolge für Inline-Elemente ist `***`, dann `**`, dann `*`.
- Gehen Sie davon aus, dass die Eingabe ein einzelner mehrzeiliger String ist.
- Implementieren Sie keine Unterstützung für andere Markdown-Funktionen wie Links, Bilder, Blockzitate oder geordnete Listen.
- Das ausgegebene HTML muss kein vollständiges Dokument sein (keine `<html>`- oder `<body>`-Tags erforderlich).
**Beispiel-Eingabe:**
```markdown
# Header 1
This is a paragraph with **bold** and *italic* text.
This is the same paragraph.
- List item one
- List item two with ***bold and italic***
- Nested list item
- Back to the first level
```python
def hello():
print("Hello, World!")
```
```