Chef Code
Kategorisierung: | Esoterische Programmiersprache |
Herkunft / Verwendung: | Chef ist eine esoterischen Programmiersprache, die von David Morgan-Mar aka Dangermouse entworfen wurde und dessen Code wie Kochrezepte aussehen. Der hier implementierte Koch (Interpreter) beherrscht keine exotischen Kochmethoden und verfügt nur über eine Schüssel, dafür versteht er aber deutsche und englische Rezepte. |
Spezifikation des Codes
Ein Kochrezept ist wie folgt aufgebaut:Rezeptname
Dies ist der Name des Rezeptes. Oder einfach nur ein Fantasie-Name sein. Der Rezept-Titel ist immer die erste Zeile eines Chef-Rezepts gefolgt von zwei Zeilenumbrüchen.
Kurzbeschreibung
Hier wird in ein paar Worten erklärt, wie das Resultat schmecken wird bzw. was das Programm macht. Es folgt wieder eine Leerzeile.
Zutatenlisten
Wird eingeleitet mit dem Schlüsselwort "Ingredients." bzw. "Zutaten:" in der ersten Zeile. Pro Zeile folgen die Angaben für Menge, Einheit und Zutat:
{Menge} {Einheit} {Zutat}, wobei:
Menge eine Ganzzahl ist,
Einheit bezeichnet, ob es sich um eine feste oder flüssige Zutat handelt.
Feste Zutaten sind: g, kg, pinch(es), Prise(n)
Flüssige Zutaten sind: ml, l, dash(es), Spritzer
Von der Konsistenz her unbekannte Zutaten sind: teaspoon(s), Teeelöffel, tablespoon(s), Esslöffel, cup(s), Tasse(n)
{Zutat} ist ein Variablennamen, der beliebig gewählt werden darf, aber immer gleich geschrieben werden muss (also immer im Singluar oder Plural), z. B: Eier, Kartoffeln, Schokolade.
Garzeit
Der nächste Absatz ist optional und gibt die Garzeit an:
Garzeit: "nnn Stunden" oder "nnn Minuten" bzw.
Cooking time: "nnn hour(s)" oder "nnn minute(s)."
Ofentemperatur
Auch die Ofentemperatur ist optional und für Speisen gedacht, die gebacken werden müssen:
Ofen auf nnn Grad Celsius vorheizen bzw.
Pre-heat oven to temperature nnn degrees Celsius
Zubereitung
Wird eingeleitet mit dem Schlüsselwort "Method." bzw. "Zubereitung:" in der ersten Zeile. Jede Zubereitungsanweisung wird durch einen Punkt abgeschlossen und trennt sich von der nächsten durch ein Leerzeichen. Zur Zubereitung wird eine Schüssel benutzt, in die die Zutaten gegeben werden. Die Schüssel funktioniert wie ein Stack und hält alle bisher eingebrachten Werte, zuunterst den zuerst eingebrachten Wert, zuoberst den zuletzt eingebrachten.
Die Zubereitunsanweisungen sind:
Englisch | Deutsch | Erklärung |
---|---|---|
Take {Zutat} from refrigerator. | {Zutat} aus dem Kühlschrank nehmen. | Liest einen numerischen Wert von STDIN (hier: Schlüsselfeld) und überschreibt damit den Wert der Variablen {Zutat}. |
Put {Zutat} into mixing bowl. | {Zutat} in die Schüssel geben. | Gibt die Zutat in die Schüssel. |
Fold {Zutat} into mixing bowl. | {Zutat} unterheben. | Entnimmt den obersten Wert vom Stack und schreibt ihn in die Variable {Zutat}. |
Add {Zutat} [to mixing bowl]. | {Zutat} dazugeben. | Addiert den Wert der Variable {Zutat} zu dem obersten Stackwert und speichert das Ergebnis auf dem Stack. |
Remove {Zutat} [from mixing bowl]. | {Zutat} abschöpfen. | Substrahier den Wert der Variable {Zutat} von dem obersten Stackwert und speichert das Ergebnis auf dem Stack. |
Combine {Zutat} [into mixing bowl]. | {Zutat} kombinieren. | Multipliziert den Wert der Variable {Zutat} mit dem obersten Stackwert und speichert das Ergebnis auf dem Stack. |
Divide {Zutat} [into mixing bowl]. | {Zutat} teilen. | Dividiert den Wert der Variable {Zutat} durch den obersten Stackwert und speichert das Ergebnis auf dem Stack. |
Add dry ingredients [to mixing bowl]. | Alle festen Zutaten hinzugeben. | Addiert alle festen Zutaten und schiebt sie auf den Stack. |
Liquefy {Zutat}. | {Zutat} zerlassen. | Verflüssigt eine Zutat. |
Liquefy contents of the mixing bowl. | Inhalt der Schüssel auf dem Stövchen erhitzen. | Verflüssigt alle Zutaten in der Schüssel. |
Stir [the mixing bowl] for [nnn] minutes. | Schüssel für nnn Minuten umrühren. | Rührt das oberste Stackelement nnn mal unter die anderen, wobei es jedes Mal einen Platz unter die anderen Zutaten kommt. Danach befindet es sich an nnn+1. Position von oben. Wird länger als nötig gerührt, verbleibt das unterrührte Element an unterster Stelle. |
Stir {Zutat} into the mixing bowl. | {Zutat} unterrühren. | Wie zuvor, nur wird dem Inhalt der Variablen {Zutat} entsprechend oft gerührt. |
Mix mixing bowl well. | Inhalt der Schüssel gut verrühren. | Bringt alle Stackwerte in eine zufällige Reihenfolge |
Clean mixing bowl. | Schüssel abwaschen. | Stack löschen. |
Pour contents of the mixing bowl into the baking dish. | Inhalt der Schüssel auf [ein Backblech, Teller, Servierplatte etc.] stürzen. | Gibt alle Elemente vom Schüssel-Stack in umgekehrter Reihenfolge (neuestes zuerst) aus. |
Lift contents of the mixing bowl onto the baking dish. | Inhalt der Schüssel auf [ein Backblech, Teller, Servierplatte etc.] heben. | Gibt alle Elemente vom Schüssel-Stack in der Reihenfolge alt nach neu (neuestes zuletzt) aus. |
{behandeln} the {Zutat}. | {Zutat} {behandeln} | Dies markiert den Beginn einer Schleife und ist nur gültig mit einem Schleifenende. Es wird geprüft, ob die Zutat 0 ist, dann wird die Schleife unterbrochen. Ansonsten fortgeführt. |
{behandlung} [the {Zutat}] until {behandeln}ed. | Solange {behandeln} bis [{Zutat}] zur Weiterarbeitung bereit. | Dies markiert das Ende einer Schleife. Die Schleife wird verlassen, wenn die Zutat 0 ist. Wenn eine Zutat im Satz genannt wird, wird diese um eins erniedrigt. Diese Zutat muss nicht die vom Schleifenbeginn sein. {behandlung} muss nicht dem ursprünglichem {behandeln} entsprechen. |
Set aside. | Zur Seite stellen. | Verlässt die innerste Schleife sofort. |
Refrigerate. | Einfrieren. | Verlässt das Programm sofort und gibt das Ergebnis bis hierhin aus. |
Portionen
Der nächste Absatz gibt an, für wieviele Personen das Gericht gedacht ist. Sie beendet das Programm und gibt nnn Backblech-Stacks als Ergebnis zurück. Soll etwas ausgegeben werden, muss dieser Absatz angegeben werden.
Poritionen: {nnn}. bzw.
Serves {nnn}.
Beispiel englisch
Hello World Souffle.
This recipe prints the immortal words "Hello world!", in a basically brute force way. It also makes a lot of food for one person.
Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes
Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish.
Serves 1.
Ausgabe:Hello world!
Beispiel deutsch
Oma's fantastischer Obstsalat
Dies ist das Geheim-Rezept meiner Oma für ihren fantastischen Obstsalat. Der schmeckt so toll. Ihr müsst ihn unbedingt einmal ausprobieren.
Zutaten:
121 g Traubenzucker
116 g Grob gehackte Walnüsse
112 g Gehackte Mandeln
111 ml Honig
100 g Erdbeeren
107 g Weintrauben
101 g Kirschen
46 g Ananas
101 g Äpfel
114 g Birnen
103 g Honigmelone
105 g Mandarinen
102 g Kiwis
97 g Bananen
Zubereitung:
Kirschen in die Schüssel geben. Erdbeeren in die Schüssel geben. Ananas in die Schüssel geben. Äpfel in die Schüssel geben. Mandarinen in die Schüssel geben. Kiwis in die Schüssel geben. Bananen in die Schüssel geben. Birnen in die Schüssel geben. Honigmelone in die Schüssel geben. Honig in die Schüssel geben. Weintrauben in die Schüssel geben. Grob gehackte Walnüsse in die Schüssel geben. Schüssel für 1 Minute umrühren. Gehackte Mandeln in die Schüssel geben. Schüssel für 1 Minute umrühren. Traubenzucker in die Schüssel geben. Schüssel für 1 Minute umrühren. Birnen in die Schüssel geben. Schüssel für 1 Minute umrühren. Schüssel in eine Servierschale stürzen.
Portionen: 1.
Ausgabe:kryptografie.de
Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (Decoder / Encoder / Solver-Tool)
Quellen, Literaturverweise und weiterführende Links
Chef bei David Morgan-Mar (Dangermouse)