Minecraft tariflerini tek satırda ayrıştırma 🤪

Her programcının hayatında en az bir kez geçmesi gereken kutsal bir ritüel vardır: tamamen okunamaz ama çalışan, içinde karmaşık mantık barındıran tek satırlık bir kod yazmak. Çünkü gerekli olduğu için değil, yapabildiğin için.

Reddit'teki bir adam vanilya Minecraft tariflerini ayrıştırmak istedi ve işte ortaya çıkan şey:

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()}


Burada ne görüyoruz? Dışarı çıkıp sigara içen ve geri dönmeyen Python Zen'i. Tek şişede karıştırılmış:
- İç içe sözlük kavrayışları
- İç içe liste kavrayışları
- Ana mantık olarak üçlü operatörler
- lambda fonksiyonu ile filter
- Ve tüm bunlar farklı yapıdaki JSON'ları ayrıştırmak için.

Yazar dürüstçe itiraf etti: "this took ages to debug..." (hata ayıklama sonsuza kadar sürdü). Ve bunu yaptı, alıntı yapıyorum: "just because i can(and am bored)" (sırf yapabildiğim için (ve canım sıkıldığı için)).

Altında "ASLA BÖYLE YAPMAYIN" yazan bir çerçeveye asılması gereken bir sanat eseri.

#sigara_ici_kodu