{"id":97,"date":"2012-04-22T15:13:58","date_gmt":"2012-04-22T13:13:58","guid":{"rendered":"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=97"},"modified":"2012-05-13T15:24:55","modified_gmt":"2012-05-13T13:24:55","slug":"listen","status":"publish","type":"page","link":"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=97","title":{"rendered":"Listen, einfach verkettet"},"content":{"rendered":"<p><code>A list is a kind of thing.<br \/>\nA node is a kind of thing.<br \/>\nData is a kind of thing.<br \/>\nEvery node has some data called the information.<br \/>\nEvery node has a node called the next node.<br \/>\nA list has a node called the start.<\/code><\/p>\n<p>Oder bildhafter: <\/p>\n<p><code>A caravan is a kind of thing.<br \/>\nA camel is a kind of thing.<br \/>\nA piece of baggage is a kind of thing.<br \/>\nEvery camel has some piece of baggage called the load.<br \/>\nEvery camel has a camel called the next camel.<br \/>\nEvery caravan has a camel called the first camel.<\/code><\/p>\n<p>Vermutlich muss man das gleich nach dem Kompositum-Muster aufbauen, denn ein Attributwert darf beim Initialisieren eines Objekts nie null\/nothing sein. Also gleich richtig:<\/p>\n<pre class=\"brush: inform7; title: ; notranslate\" title=\"\">A piece of baggage is a kind of thing. &#x5B;Oberklasse\/Interface Datenelement]\r\nA caravan member is a kind of animal. &#x5B;Interface\/Oberklasse Listenelement]\r\nA caravan member has a caravan member called the successor. &#x5B;Nachfolger-Attribut]\r\nA camel is a kind of caravan member. &#x5B;Klasse Knoten]\r\nA camel has a piece of baggage called the load. &#x5B;Attribut Datenelement]\r\nA donkey is a kind of caravan member. &#x5B;Klasse Abschluss]\r\nA caravan organizer is a kind of man. &#x5B;Klasse Liste]\r\nA caravan organizer has a caravan member called the leader. &#x5B;Anfangs-Attribut]\r\n\r\n&#x5B;Jetzt die Objekte anlegen:]\r\n\r\nSinbad is a caravan organizer.\r\nThe leader of Sinbad is Camel 1.\r\n\r\nCamel 1 is a camel.\r\nThe ruby is a kind of baggage.\r\nThe load of Camel 1 is the ruby.\r\nThe successor of Camel 1 is Camel 2. \r\n\r\nCamel 2 is a camel.\r\nThe emerald is a kind of baggage.\r\nThe load of Camel 2 is the emerald.\r\nThe successor of Camel 2 is Eyeore. \r\n\r\nEyeore is a donkey.\r\n<\/pre>\n<p>Ich schlage \u00fcbrigens \u00fcberhaupt nicht vor, dass man Listen tats\u00e4chlich mit Inform 7 programmieren sollte. Auf diesem Niveau sind herk\u00f6mmliche Programmiersprachen sinnvoller. Aber wenn andere Leute Pacman oder Tischfu\u00dfball mit Inform schreiben, dann darf ich das doch auch mit Listen machen.<\/p>\n<p>Es fehlen bei der Liste aber noch die entsprechenden Methoden: suchen, einf\u00fcgen, l\u00f6schen, sortieren, ausgeben. Die kann man tats\u00e4chlich alle programmieren &#8211; aber nur umst\u00e4ndlich.<br \/>\nZum einen kann Inform erst einmal keine Objekte zur Laufzeit erzeugen. Alle irgendwann ben\u00f6tigten Objekte m\u00fcssen vor Beginn des Spiels vorliegen &#8211; nat\u00fcrlich kann das au\u00dferhalb des Spielfelds sein. Mit der Erweiterung <a href=\"http:\/\/inform7.com\/extensions\/Jesse%20McGrew\/Dynamic%20Objects\/index.html\">Dynamic Objects<\/a> l\u00e4sst sich allerdings auch das umgehen. Die Konstruktoren muss man sich allerdings selber und auf etwas umst\u00e4ndliche Weise schreiben.<br \/>\nZweitens geht Inform mit null\/nil\/nothing etwas anders um als andere Sprachen, das erfordert mehr Vorsicht, als man Sch\u00fclern zumuten muss.<\/p>\n<pre class=\"brush: inform7; title: ; notranslate\" title=\"\">\r\n&#x5B;Vorne einfuegen]\r\nTo put (stuff - a piece of baggage) in the front of (the boss - a caravan organizer):\r\n\tlet the newcomer be a new camel;\r\n\tnow the load of the newcomer is the stuff;\r\n\tnow the successor of the newcomer is the leader of the boss;\r\n\tnow the leader of the boss is the newcomer.\r\n\r\n&#x5B;Laenge geben]\r\nTo decide what number is the (boss - a caravan organizer) length:\r\n\tdecide on the remaining length from the leader of the boss.\r\n\r\nTo decide what number is the remaining length from (the carrier - a camel):\r\n\tlet x be the remaining length from the successor of the carrier ;\r\n\tdecide on x plus one.\r\n\r\nTo decide what number is the remaining length from (the end - a donkey):\r\n\tdecide on 0.\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A list is a kind of thing. A node is a kind of thing. Data is a kind of thing. Every node has some data called the information. Every node has a node called the next node. A list has &hellip; <a href=\"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=97\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":94,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-97","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=97"}],"version-history":[{"count":0,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/97\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/94"}],"wp:attachment":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}