Minecraft-Rezepte in einer Zeile parsen 🤪

Es gibt ein heiliges Ritual, das jeder Programmierer mindestens einmal im Leben durchlaufen muss: einen absolut unlesbaren, aber funktionierenden Einzeiler mit komplexer Logik schreiben. Nicht weil es nötig ist, sondern weil du es kannst.

Ein Typ von Reddit wollte Rezepte aus Vanilla Minecraft parsen, und hier ist das Ergebnis:

out2in = {k: ([("#" + x["tag"] if x.get("tag") else x["item"]) if x.class.name == "dict" else [("#" + y["tag"] if y.get("tag") else y["item"]) for y in x] for x in v]) for (k, v) in {(y["result"]["item"] if y["result"].class.name == "dict" else y["result"]): ((y["ingredients"] if y["ingredients"].class.name == "list" else ([y["ingredients"]]) if y.get("ingredients") else y["ingredient"]) if y.get("ingredients") else [z for z in y["key"].values()]) for y in filter(lambda x: x.get("result") and (x.get("ingredients") or x.get("key")), [json.load(open(x, "rt")) for x in Path("recipes").glob("*.json")])}.items()}


Was sehen wir hier? Pythons Zen, der eine rauchen gegangen ist und nicht zurückkam. In einem Cocktail gemischt:
- Verschachtelte Dict Comprehensions
- Verschachtelte List Comprehensions
- Ternäre Operatoren als Hauptlogik
- filter mit Lambda-Funktion
- Und das alles zum Parsen von JSON unterschiedlicher Struktur.

Der Autor gab ehrlich zu: "this took ages to debug..." (das Debuggen hat eine Ewigkeit gedauert). Und er tat es, Zitat: "just because i can(and am bored)" (nur weil ich kann (und mir langweilig war)).

Ein Kunstwerk, das in einem Rahmen mit der Aufschrift "MACH DAS NIEMALS SO" hängen sollte.

#rauchercode