<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[devshare.de - Algorithmen]]></title>
	<link rel="self" href="http://www.devshare.de/feed/atom/forum/39/"/>
	<updated>2006-04-13T18:06:13Z</updated>
	<generator>PunBB</generator>
	<id>http://devshare.de/</id>
		<entry>
			<title type="html"><![CDATA[Bisektion]]></title>
			<link rel="alternate" href="http://devshare.de/topic/41265/bisektion/new/posts/"/>
			<summary type="html"><![CDATA[<p>GutenTag!<br />Ich habe von meinem Lehrer, die Aufgabe bekommen, mittels einer Computersprache, das Bisektionsverfahren darzustellen.<br />Die Intervallgrenzen, Genauigkeit und Grad der Funktion sollen manuel veränderbar sein.<br />wenn ihr mir irgendwie helfen könnt oder Ratschläge habt, dann würde ich mich sehr freuen.<br />danke im voraus!</p>]]></summary>
			<author>
				<name><![CDATA[Mobby]]></name>
				<uri>http://devshare.de/user/4639/</uri>
			</author>
			<updated>2006-04-13T18:06:13Z</updated>
			<id>http://devshare.de/topic/41265/bisektion/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Schach Regeln implementieren]]></title>
			<link rel="alternate" href="http://devshare.de/topic/41258/schach-regeln-implementieren/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hallo,</p><p>wie geht man vor wenn man Schachregeln in PHP implementieren will?</p><p>Wäre für ein paar gute Links bzw. Tipps dankbar.</p><p>Viele Grüsse<br />twelve12</p>]]></summary>
			<author>
				<name><![CDATA[twelve12]]></name>
				<uri>http://devshare.de/user/4616/</uri>
			</author>
			<updated>2006-04-03T20:00:34Z</updated>
			<id>http://devshare.de/topic/41258/schach-regeln-implementieren/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Algorithmus zur Bestimmung der Schulwoche]]></title>
			<link rel="alternate" href="http://devshare.de/topic/40103/algorithmus-zur-bestimmung-der-schulwoche/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hi @ all,</p><p>unser Schuljahrgang arbeitet derzeit an einer Abitursinternetseite. Dabei wollen wir eine Funktion einbauen, die bestimmt ob A oder B Woche ist. Nur leider hat keiner eine Ahnung wie so was geht. Bei gerader Wochenzahl soll A Woche rauskommen und bei ungerader Wochenzahl B Woche.</p><p>Hätte irgend jemand von euch eine Idee wie man so was programmieren kann und welche befehle man dafür braucht (+ Programmiersprache). Oder könnte vielleicht jemand von euch sowas machen.</p><p>Danke im voraus.</p><p>Sebastian</p>]]></summary>
			<author>
				<name><![CDATA[Mamphil]]></name>
				<uri>http://devshare.de/user/4014/</uri>
			</author>
			<updated>2004-08-26T16:16:32Z</updated>
			<id>http://devshare.de/topic/40103/algorithmus-zur-bestimmung-der-schulwoche/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[PHP nicht leeres Verzeichnis Löschen]]></title>
			<link rel="alternate" href="http://devshare.de/topic/40566/php-nicht-leeres-verzeichnis-loeschen/new/posts/"/>
			<summary type="html"><![CDATA[<div class="codebox"><pre><code>&lt;?php
function readdeldirs($dir)
{
    if($dir[strlen($dir)-1]!=&#039;/&#039;)$dir.=&#039;/&#039;;
    $dirs=Array();
    $dh=opendir($dir);
    while(gettype($datei=readdir($dh))!=&#039;boolean&#039;)
    {
        if($datei!=&#039;.&#039; &amp;&amp; $datei!=&#039;..&#039;)
        {
            if(is_dir($dir.$datei))$dirs=array_merge($dirs,readdeldirs($dir.$datei));
            $dirs[]=$dir.$datei;
        }
    }
    
    closedir($dh);
    return $dirs;
}

function deltree($dir)
{
    $load=readdeldirs($dir);
    array_multisort($load, SORT_DESC);
    foreach($load as $del)
    {
        if(is_dir($del))
        {
            rmdir($del);
        }
        if(is_file($del))
        {
            unlink($file);
        }
    }
    rmdir($dir);
}

deltree(&#039;download&#039;);</code></pre></div><p>closedir returned immer false. Ich find den Fehler einfach nicht und dann kommt für die Files und Ordner dann immer permission denied. </p><p>EDIT: glaub ich bin im falschen Bereich</p>]]></summary>
			<author>
				<name><![CDATA[meikel]]></name>
				<uri>http://devshare.de/user/3119/</uri>
			</author>
			<updated>2004-07-30T22:14:03Z</updated>
			<id>http://devshare.de/topic/40566/php-nicht-leeres-verzeichnis-loeschen/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Dreamweaver Passwort kodierung?]]></title>
			<link rel="alternate" href="http://devshare.de/topic/40311/dreamweaver-passwort-kodierung/new/posts/"/>
			<summary type="html"><![CDATA[<p>hallo!</p><p>hat jemand ne ahnung, mit welchem &quot;algorithmus&quot; dreawmweaver die passwörter für ftp, etc. speichert?</p><p>ich hab mal was ausprobiert:</p><p>passwort =&gt; kodierung<br />test1 =&gt; pw=&quot;7466757735&quot;<br />test2 =&gt; pw=&quot;7466757736&quot;</p><p>wenn man das mal mit der unicode zeichentabelle vergleicht, ist man schon verdammt nah dran, aber so ganz stimmt&#039;s noch nicht</p><p>zeichen, kodierung, unicode<br />t, 74, 74<br />e, 66, 65<br />s, 75, 73<br />t, 74, 74</p><p>1, 35, 31<br />2, 36, 32</p><p>jemand ne idee?</p>]]></summary>
			<author>
				<name><![CDATA[der Wide]]></name>
				<uri>http://devshare.de/user/762/</uri>
			</author>
			<updated>2004-03-29T10:23:08Z</updated>
			<id>http://devshare.de/topic/40311/dreamweaver-passwort-kodierung/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Daten direkt in Excel-File exportieren]]></title>
			<link rel="alternate" href="http://devshare.de/topic/40057/daten-direkt-in-excelfile-exportieren/new/posts/"/>
			<summary type="html"><![CDATA[<p>Möchte dass die eingegebenen Daten in meinem Web-Formular (Java) direkt (oder wenn nicht anders möglich auch indirekt) in eine Excel-DAtei exportiert werden.</p><p>Hoffe da kann mir wer weiterhelfen, mit meinem Lösungsweg oder auch ein komplett anderer Lösungsvorschlag!</p>]]></summary>
			<author>
				<name><![CDATA[luegschmol]]></name>
				<uri>http://devshare.de/user/3990/</uri>
			</author>
			<updated>2004-01-14T16:21:35Z</updated>
			<id>http://devshare.de/topic/40057/daten-direkt-in-excelfile-exportieren/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Das Schrauben-Mutter-Problem... Algo gesucht!!!]]></title>
			<link rel="alternate" href="http://devshare.de/topic/36941/das-schraubenmutterproblem-algo-gesucht/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hey Leutz,</p><p> da ich net wusste, wo ich meine Frage reinstellen sollte, stell ich Sie einfach mal hier...</p><p> Folgende Aufgabenstellung:</p><p> Jeder kennt die Schwierigkeit, in einer Werkbank zu einer Schraube die passende Mutter zu finden. Wir gehen hierbei von n Schrauben unterschiedlicher Größe und von n korrespondierenden Muttern aus. Der Vergleich der Muttern und der Schrauben untereinander bringt keine neue Information ein. Vergleicht man<br /> hingegen eine Schraube mit einer Mutter, so stellt sich heraus, daß die Schraube i) entweder paßt, ii) zu klein, oder iii) zu groß für die ausgewählte Mutter ist.</p><p> (a) Zeigen Sie, dass jeder Algorithmus zur Lösung des Problems Omega(n log n) viele Vergleiche benötigt.<br /> (b) Geben Sie einen Algorithmus an, der für die Suche nach der kleinsten Schraube und Ihrer passenden Mutter 2n-2 Vergleiche benötigt!</p> <br /><p> Ich hoffe einer von Euch kann mir helfen!!!&nbsp; </p><p> Gruß</p><p> James</p>]]></summary>
			<author>
				<name><![CDATA[der_maik]]></name>
				<uri>http://devshare.de/user/3442/</uri>
			</author>
			<updated>2003-11-18T00:24:19Z</updated>
			<id>http://devshare.de/topic/36941/das-schraubenmutterproblem-algo-gesucht/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[wer hilft mit eine tronki zu entwickeln]]></title>
			<link rel="alternate" href="http://devshare.de/topic/39683/wer-hilft-mit-eine-tronki-zu-entwickeln/new/posts/"/>
			<summary type="html"><![CDATA[<p>hallo<br />ich bin gerade dabei ein kleines tron spiel zu programmieren, und habe da die frage, wie man eigentlich so eine computerki programmieren könnte...</p><p>grundzüge wie nach oben unten etc habe ich schon, und der pc schaut auch nach den umliegenden feldern, doch kann er bisher nur einem objekt ausweichen, und nach x sekunden zieht er eine andere richtung..</p><p>ich hätte das gerne ein bissel &quot;intelligenter&quot;</p><p>hat jemand lust mitzumachen?</p>]]></summary>
			<author>
				<name><![CDATA[j|g]]></name>
				<uri>http://devshare.de/user/3803/</uri>
			</author>
			<updated>2003-11-05T13:30:16Z</updated>
			<id>http://devshare.de/topic/39683/wer-hilft-mit-eine-tronki-zu-entwickeln/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Suche nette Menschen für ein Mathematisches prob]]></title>
			<link rel="alternate" href="http://devshare.de/topic/39300/suche-nette-menschen-fuer-ein-mathematisches-prob/new/posts/"/>
			<summary type="html"><![CDATA[<p>hi..<br /> wie in einem alten beitrag schon einmal geht es darum, dass wir ein problem haben, und es gerne lösen möchten..<br /> Es handelt sich um ehemalige pws eines Netzwerks.<br /> ich schreibe ehemalige, weil die pws dieses netzwerks schon wieder anders gemacht werden. uns interessiert es aber nicht, die neuen pws auszurechnen, sondern einfach, wie man auf einen &quot;Lösungsweg&quot; für eine Aufgabe a la &quot;da gibts vier zahlen, und die sollen berechnet werden&quot; kommen kann.<br /> Dabei hat man ein paar daten zur verfügung, und weis auch schon das ergebnis, aber noch nicht den rechenweg dahin gehend.</p><p> Für unsere Mods &amp; Admins:<br /> Wir haben auch schon [teilweise] unsere itg lehrer gefragt, und solange wir keinen unsinn machen, und den rechenweg nicht weitergeben, etc sollte es kein problem sein..</p><p> Also, lest euch den alten (mittlerweise leider geschlossenen beitrag mal durch (wenn ihr viel zeit habt), ansonsten werde ich hier später nochmal ein paar sachen hier schreiben (habe gerade einen ichtigen termin) &lt;img src=&quot;/forum/images/graemlins/smile.gif&quot; alt=&quot;&quot; /&gt;</p>]]></summary>
			<author>
				<name><![CDATA[sometimes2]]></name>
				<uri>http://devshare.de/user/2431/</uri>
			</author>
			<updated>2003-10-16T16:46:08Z</updated>
			<id>http://devshare.de/topic/39300/suche-nette-menschen-fuer-ein-mathematisches-prob/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Programm zum suchen von gemeinsamkeiten von daten]]></title>
			<link rel="alternate" href="http://devshare.de/topic/39102/programm-zum-suchen-von-gemeinsamkeiten-von-daten/new/posts/"/>
			<summary type="html"><![CDATA[<p>hallo..<br /> ich suche ein programm, was in der lage ist, aus mehreren angaben und immer einem ziel, herauszufinden, wie man von den angaben auf das ziel kommt. ist sowohl mathematisch, als auch mit texten..<br /> ein beispiel:<br /> editiert.. </p><p> greets andreas</p>]]></summary>
			<author>
				<name><![CDATA[j|g]]></name>
				<uri>http://devshare.de/user/2431/</uri>
			</author>
			<updated>2003-10-15T15:49:29Z</updated>
			<id>http://devshare.de/topic/39102/programm-zum-suchen-von-gemeinsamkeiten-von-daten/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Schach KI]]></title>
			<link rel="alternate" href="http://devshare.de/topic/37083/schach-ki/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hallo..<br /> hm.. ich bin gerade dabei ein kleines schachspiel zu programmieren.. Habe mir auch gut die Lektüre aus den alten Postings hier durchgelesen, habe aber dennoch die Frage, wie man genau eine ki machen könnte?<br /> Auf was muss eine KI achten, wie programmiert man sowas?<br /> Füttert man einen &quot;schlauen&quot; Algorithmuss einfach mit tausenden von &quot;bereits gespielten&quot; Spielen, und lässt ihn dann vergleichen? Wie geht sowas? Habe bisher noch nie so eine &quot;schlaue&quot; KI gemacht.. (Meine letze war das pseudo spiel Tic Tac To &lt;img src=&quot;/forum/images/graemlins/smile.gif&quot; alt=&quot;&quot; /&gt;)</p><p> Das schachspiel, etc habe ich bereits, auch die möglichen bewegungen sind drinne, aber wie lasse ich sowas mit KI machen??</p><p> Bitte helft mir..</p>]]></summary>
			<author>
				<name><![CDATA[schefl]]></name>
				<uri>http://devshare.de/user/2431/</uri>
			</author>
			<updated>2003-09-29T10:35:27Z</updated>
			<id>http://devshare.de/topic/37083/schach-ki/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Alle möglichen Kombinationen durchlaufen]]></title>
			<link rel="alternate" href="http://devshare.de/topic/32421/alle-moeglichen-kombinationen-durchlaufen/new/posts/"/>
			<summary type="html"><![CDATA[<p>Tach erstmal</p><p> also ich will alle möglichen Kombinationen einer Zeichenkette durchlaufen (a-z, nur klein).</p><p> Ich hab ne Mindest- und eine Maximalanzahl an Zeichen.</p><p> also z.B von<br /> aaa<br /> aab<br /> aac<br /> ...<br /> zzz<br /> aaaa<br /> aaab<br /> ...<br /> zzzz</p><p> Wie mache ich das am Besten ???</p>]]></summary>
			<author>
				<name><![CDATA[Small]]></name>
				<uri>http://devshare.de/user/607/</uri>
			</author>
			<updated>2003-09-15T21:33:20Z</updated>
			<id>http://devshare.de/topic/32421/alle-moeglichen-kombinationen-durchlaufen/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Weekend time ausrechnen]]></title>
			<link rel="alternate" href="http://devshare.de/topic/38156/weekend-time-ausrechnen/new/posts/"/>
			<summary type="html"><![CDATA[<p>hallo.. da ich nicht so genau wusste, in welches Programmierboard es passt, habe ichs mal zu Algos geschrieben. Ihr kennt doch sicherlich alle <a href="http://www.giga.de">www.giga.de</a>, und den dortigen weekend zähler.. WIE MACHT MAN DEN???<br /> Ich habe bisher einiges probiert, komme aber nie richtig auf die genaue zeitangabe..</p>]]></summary>
			<author>
				<name><![CDATA[sometimes2]]></name>
				<uri>http://devshare.de/user/2431/</uri>
			</author>
			<updated>2003-08-30T17:00:06Z</updated>
			<id>http://devshare.de/topic/38156/weekend-time-ausrechnen/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Projekt für ein Lösungsprogramm]]></title>
			<link rel="alternate" href="http://devshare.de/topic/32408/projekt-fuer-ein-loesungsprogramm/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hallo, Ich glaube der Link sagt alles...<br />&nbsp; <a href="http://www.devshare.de/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic;f=5;t=003573">http://www.devshare.de/cgi-bin/ubb/ulti &#133; 5;t=003573</a> </p><p> Habt ihr Lust?</p>]]></summary>
			<author>
				<name><![CDATA[sometimes2]]></name>
				<uri>http://devshare.de/user/2431/</uri>
			</author>
			<updated>2003-07-15T09:24:05Z</updated>
			<id>http://devshare.de/topic/32408/projekt-fuer-ein-loesungsprogramm/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[No. #999]]></title>
			<link rel="alternate" href="http://devshare.de/topic/35631/no-999/new/posts/"/>
			<summary type="html"><![CDATA[<p>- Mein neunhundertneunundneunzigster Beitrag - :</p><p> Weil es es ein guter Brauch ist, Jubiläen zu begehen, gedenke ich,<br /> das mit etwas Ausführlicherem als gewöhnlich zu tun.<br /> Es ist dies ein Geschenk an sometimes, aber auch für alle diejenigen<br /> gedacht, die es eventuell sonst noch intressieren möge.<br /> sometimes hatte vor einiger Zeit die Frage nach einem _Lösungsprogramm_<br /> für rubiks cube gestellt - das ist dieser bunte Würfel, der, hat man<br /> (gemeint ist der Normalmensch) ihn&nbsp; einmal so richtig verdreht, auf<br /> ewige Zeiten bunt verdreht bleiben wird - sich also mithin beharrlich <br /> weigert, jemals wieder in seine Anfangskonstellation zurückzukehren.<br /> Mein Sohn Henry hat mir zu Weihnachten so ein Ding geschenkt, und aus<br /> dem Beipackzettel jennes erfuhr ich, daß dessen eigner geistiger Vater<br /> rund einen Monat brauchte, um das Monstrum zu bezwingen - und Rubik<br /> himself ist immerhin gestandner Mathematiker.<br /> Allerdings möchte ich keine ausführliche Lösung liefern, sondern<br /> einen brauchbaren Ansatz zu einer solchen - es wär&#039; sonst gar zu witzlos.<br /> Worum es im folgenden geht, ist _nicht_ der Originalwürfel mit einer<br /> Kantenlänge von drei (Teilwürfeln), sondern das abgespeckte Modell<br /> mit einer Kantenlänge von zwo, wobei das ein wesentlicher Schritt in die<br /> richtche Richtung ist, alldieweil _jeder_ Würfel nunmal acht Ecken hat.<br /> Auch wird der Würfel nicht im geringsten vollständig gelöst werden, und<br /> schon gar nicht systematisch (respective auf dem kürzest möglichen Weg),<br /> sondern nur der erste Schritt wird gezeigt werden, und auch der lediglich<br /> grob zufällig.<br /> Die Gründe hierfür sind quasi mehrdimensional:<br /> Zunächst und -allererst sollte mein 999zigster Beitrag gefälligst ein<br /> script enthalten, das 99 Zeilen hat - das ist auch ein Grund, warum <br /> ich mögliche elegantere Formulierungen mir schlicht verboten habe,<br /> sonst wär&#039;s kürzer ausgefallen.<br /> Sodann soll dieser Beitrag auch dazu dienen, Leuten, die davon bisher<br /> nicht so beleckt waren, Lust auf PYTHON zu machen, und ein wenig davon<br /> zu zeigen - deshalb finden sich auch verschiedene Arten, etwas in dieser<br /> Sprache zu formulieren, wiewohl es uU. nicht die schnellsten oder<br /> kürzest möglichen sind (weder in der Ausführung, noch in der Formulierung,<br /> wobei beide Dinge mitnichten deckungsgleich sind). Ein weiterer Grund für die<br /> Beschränkung auf die Teilaufgabe: die Darstellung des vollständigen Würfels <br /> erschwert das Verständnis unnötigerweise, ohne wesentlich zu einem solchen<br /> beizutragen.</p><p> Doch nach all diesen einführenden Einschränkungen in medias res:<br /> Ersteinmal, so noch nicht geschehn, sollte man sich Python besorgen - <br /> ein wenig rumclicken in <a href="http://www.python.org/">http://www.python.org/</a> erledigt das. <br /> Sodann auch numarray - Vorgehn desselbigengleichen, bissel einlesen <br /> tut nicht weh und schadet bestimmt nicht.</p> <br /><p> Das Vorgehn:</p><p> Dem Programm muß zuerst ein &#039;real-world&#039;-Würfel mitgeteilt werden,<br /> also ein Würfel, der aus etwelchen Verdrehungen aus dem Original<br /> entstanden ist. Das vorliegende Programm prüft nicht auf _unmögliche_<br /> Würfel (ganz einfach, um den Ball flach zu halten).<br /> (Obwohl: mit der angenehmen Ausnahme-Behandlung in python wäre das <br />&nbsp; &nbsp;auch kein Problem, es tät&#039; aber den hier gesetzten Rahmen sprengen.)</p><p> Dieses Mitteilen geschieht, indem ins array I die einzelnen Teilwürfel<br /> als jeweilige Farbbestandteile eingetragen werden, und zwar dergestalt (Kleist),<br /> daß:<br /> die vordere linke obere Ecke I[0] ist, die vordere rechte obere Ecke I[1], die<br /> vordere linke untere Ecke I[2], die vordere rechte untere Ecke I[3], die hintere<br /> linke obere Ecke I[4], usw. bis hintere rechte untere Ecke I[7], wobei immer <br /> zuerst der Farbanteil in X-Richtung eingetragen wird, dann der in<br /> Y-Richtung, und last, but very not least, der in Z-Richtung.<br /> </p><div class="codebox"><pre><code>              z
             /
            I[4]-----------I[5]
           /              /
          /              /
         /              /
        /              /
       I[0]-----------I[1]-x
       |              |
       |              |
       |              |
       |              |
       |              |
       I[2]-----------I[3]
       |
       y 
 </code></pre></div><p> Eine mögliche Ausgangsstellung eines nichtverdrehten Würfels wäre demgemäß:<br /> </p><div class="codebox"><pre><code> I = [ [&#039;orange&#039;, &#039;red&#039;, &#039;blue&#039;] ,
       [&#039;green&#039;, &#039;red&#039;, &#039;blue&#039;] ,
       [&#039;orange&#039;, &#039;white&#039;, &#039;blue&#039;] ,
       [&#039;green&#039;, &#039;white&#039;, &#039;blue&#039;] ,
       [&#039;orange&#039;, &#039;red&#039;, &#039;purple&#039;] ,
       [&#039;green&#039;, &#039;red&#039;, &#039;purple&#039;] ,
       [&#039;orange&#039;, &#039;white&#039;, &#039;purple&#039;] ,
       [&#039;green&#039;, &#039;white&#039;, &#039;purple&#039;] ]
 </code></pre></div><p> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</p><p> Ein möglicher Dreier-Würfel (bereits verdreht) würde beispielsweise so notiert:<br /> </p><div class="codebox"><pre><code> I = [ [&#039;orange&#039;, &#039;red&#039;, &#039;blue&#039;],    [0, &#039;purple&#039;, &#039;red&#039;],   [&#039;orange&#039;, &#039;white&#039;, &#039;blue&#039;],
       [&#039;orange&#039;, 0, &#039;purple&#039;]  ,    [0, 0, &#039;orange&#039;],       [&#039;white&#039;, 0, &#039;green&#039;],
       [&#039;white&#039;, &#039;purple&#039;, &#039;green&#039;], [0, &#039;orange&#039;, &#039;red&#039;],   [&#039;blue&#039;, &#039;red&#039;, &#039;green&#039;],
 
       [&#039;red&#039;, &#039;green&#039;, 0],          [0, &#039;blue&#039;, 0],         [&#039;white&#039;, &#039;orange&#039;, 0],
       [&#039;red&#039;, 0, 0],                [0, 0, 0],              [&#039;white&#039;, 0, 0],
       [&#039;white&#039;, &#039;blue&#039;, 0],         [0, &#039;purple&#039;, 0],       [&#039;red&#039;, &#039;blue&#039;, 0],
 
       [&#039;orange&#039;, &#039;red&#039;, &#039;purple&#039;],  [0, &#039;purple&#039;, &#039;white&#039;], [&#039;green&#039;, &#039;red&#039;, &#039;purple&#039;],
       [&#039;orange&#039;, 0, &#039;blue&#039;],        [0, 0, &#039;green&#039;],        [&#039;green&#039;, 0, &#039;purple&#039;],
       [&#039;white&#039;, &#039;blue&#039;, &#039;green&#039;7],  [0, &#039;blue&#039;, &#039;green&#039;],   [&#039;purple&#039;, &#039;white&#039;, &#039;orange&#039;]]
 
  - bitte gans schnell wieder vergessen - denn darum geht&#039;s hier, wie gesagt, _nicht_. -
 </code></pre></div><p> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</p> <br /><p> Schritt 1: Sammle alle Teilwürfel, die Eckwürfel sind, d.h.: alle Teilwürfel, die in jeder Richtung<br /> eine Farbe haben - es gibt nämlich bei allen Würfel der Kantenlänge &lt;=3 immer genau einen Teilwürfel<br /> mit einer einzigartigen Farbkombination - soll heißen: die Eckwürfel insgesamt zeigen alle möglichen <br /> Farben des jeweiligen Würfels:<br /> </p><div class="codebox"><pre><code> [eI.append(i) for i in I if 0 not in i]
 </code></pre></div><p> Man könnte das auch absolut anders formulieren (zB. naheliegenderweise abhängig von der Kantenlänge), <br /> aber das ist ein Beispiel-script, das auch etwas von Möglichkeiten von Python zeigen soll.<br /> In diesem Fall (dem Zweier-Würfel) sind natürlich sämtliche Teilwürfel auch Ecken......</p> <br /><p> Schritt 2: Ordne die Farben einander zu (zwei in jeder Dimension: x, y, und z):<br /> </p><div class="codebox"><pre><code> x0, y0, z0 = eI[0]       
 xn, yn, zn = [[[i for i in j if i!=k[0] and i!=k[1]]
                   for j in eI[1:] if k[0] in j and k[1] in j][0][0]
                   for k in ((y0, z0), (x0, z0), (x0, y0))]
 </code></pre></div><p> Bereits ab hier kann ein möglicher Algorithmus optimiert werden: indem er nämlich<br /> nach bereits vollständigen Farbflächen sucht, und in Abhängigkeit davon den<br /> Anfangs-Teilwürfel (I[0]) wählt.</p> <br /><p> Schritt 3: Pack alle Farben in ein array:<br /> </p><div class="codebox"><pre><code> F = [0, x0, y0, z0, xn, yn, zn]
 </code></pre></div> <br /><p> Schritt 4 : Bilde aus diesen Farben den Ausgangswürfel (den es wiederherzustellen gilt):<br /> </p><div class="codebox"><pre><code> V = [ [x0,y0,z0], [xn,y0,z0],
       [x0,yn,z0], [xn,yn,z0],
       [x0,y0,zn], [xn,y0,zn],
       [x0,yn,zn], [xn,yn,zn] ]
 </code></pre></div> <br /><p> Schritt 5: Erstelle der Ordnung halber eine Arbeitskopie des Ausgangsarrays I:<br /> </p><div class="codebox"><pre><code> W = deepcopy(I)
 </code></pre></div> <br /><p> Schritt 6: Wandle zur internen Bearbeitung alle Farbnamenstrings in Zahlen <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (das braucht&#039;s - numarray heißt nicht umsonst so) - und wandle die<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array-shapes in etwas zum Berechnen Brauchbares um:<br /> </p><div class="codebox"><pre><code> def Z(z):
     for i in z:
         for j in i:
             if j in F : i[i.index(j)] = F.index(j)
 
 
 [Z(i) for i in (V, W)]
 V, W = [transpose(i, axes = (0,1)) for i in (V, W)]
 [i.setshape(2,2,2,3) for i in (V, W)]
 </code></pre></div> <br /><p> Schritt 7: Mal kurz Verschnaufen, um&#039;n paar Abkürzungen zu notieren:<br /> </p><div class="codebox"><pre><code> def C(c): return concatenate(c)
 def S(s0, s1, s2): return swapaxes(s0, s1, s2)
 </code></pre></div> <br /><p> Schritt 8: Keine Athempause, Geschichte wird gemacht, es geht voran...:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bilde die drehbaren Schichten des Würfels - davon gibt es in <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jeder Dimension genau Kantenlänge Stück:<br /> </p><div class="codebox"><pre><code> sX, sY, sZ = S(S(W, 0,2), 1,2), S(S(W, 0,1), 1,2), transpose(W, axes = (0,1,2,3))
 </code></pre></div> <br /><p> Schritt 9: Eine function zum Drehen der jeweiligen Farbanteile um die<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; betreffenden Achsen (siehe argument qqq in def Q(q, qq, qqq)):<br /> </p><div class="codebox"><pre><code> def D(a, s = 0):
     if s==0 : a[0], a[1], a[2] = a[0], a[2], a[1]
     if s==1 : a[0], a[1], a[2] = a[2], a[1], a[0]
     if s==2 : a[0], a[1], a[2] = a[1], a[0], a[2]
     return a
 </code></pre></div><p> Mir schwant irgendwie nebulös, daß hier ein gewiefter Mathe-Hai vermittels<br /> geeigneter Matrizen-Manipulation was Schöneres machen könnte, aber mein armer,<br /> alter Kopf.......</p> <br /><p> Schritt 10: Eine function, die die Schichten dreht, in Abhängigkeit vom zugeordneten<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Operator - siehe array Op (und Operatoren gibt es natürlich pro Schicht<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;zwo - vorwärts und rückwärts (siehe argument qq in def Q(q, qq, qqq)):<br /> </p><div class="codebox"><pre><code> def Q(q, qq, qqq = 0):
     if qq == 0 : a, b = 0, 1
     else: a, b = 1, 0
     q = C((C((D(q[a][b], qqq), D(q[b][b], qqq))), C((D(q[a][a], qqq), D(q[b][a], qqq)))))
     q.setshape(2,2,3)
     return q
 </code></pre></div> <br /><p> Schritt 11: function def E(e, ee = None), die den Klumbadaradadsch ausführt:<br /> </p><div class="codebox"><pre><code> def E(e, ee = None):
     exec(Op[e])
     if ee: print Op[e][:5], Op[e][16],
 </code></pre></div><p> --------------------------------------------------------------------------------------------------<br /> Ende, Gelände.......</p> <br /><p> Nochemol dat Janze im Zusammenhang:</p><p> </p><div class="codebox"><pre><code> from numarray import *
 from copy import deepcopy
 import random
 
 ###########################################################
 
 I = [ [&#039;orange&#039;, &#039;blue&#039;, &#039;white&#039;],                  # ein irgendwie verdrehter Würfel...
       [&#039;green&#039;, &#039;red&#039;, &#039;blue&#039;],
       [&#039;orange&#039;, &#039;purple&#039;, &#039;white&#039;],
       [&#039;green&#039;, &#039;white&#039;, &#039;blue&#039;],
       [&#039;orange&#039;, &#039;blue&#039;, &#039;red&#039;],
       [&#039;green&#039;, &#039;red&#039;, &#039;purple&#039;],
       [&#039;orange&#039;, &#039;purple&#039;, &#039;red&#039;],
       [&#039;green&#039;, &#039;white&#039;, &#039;purple&#039;] ]
 
 ###########################################################
 
 ln =  &#039;n----------------n&#039;
 
 eI = []
 [eI.append(i) for i in I if 0 not in i]
 
 x0, y0, z0 = eI[0]
 xn, yn, zn = [[[i for i in j if i!=k[0] and i!=k[1]]
                   for j in eI[1:] if k[0] in j and k[1] in j][0][0]
                   for k in ((y0, z0), (x0, z0), (x0, y0))]
 
 F = [0, x0, y0, z0, xn, yn, zn]
 
 V = [ [x0,y0,z0], [xn,y0,z0],
       [x0,yn,z0], [xn,yn,z0],
       [x0,y0,zn], [xn,y0,zn],
       [x0,yn,zn], [xn,yn,zn] ]
 
 W = deepcopy(I)
 
 def OUT(o):
     OT = [[[[],[]],[[],[]]],[[[],[]],[[],[]]]]
     for i in range(len(o)):
        for j in range(len(o[i])):
            for k in range(len(o[i][j])):
                OT[i][j][k] = [F[o[i][j][k][0]], F[o[i][j][k][1]], F[o[i][j][k][2]]]
     return OT
 
 def T():
     global TMP
     TMP = deepcopy(W)
 
 def Z(z):
     for i in z:
         for j in i:
             if j in F : i[i.index(j)] = F.index(j)            
             
 [Z(i) for i in (V, W)]
 V, W = [transpose(i, axes = (0,1)) for i in (V, W)]
 [i.setshape(2,2,2,3) for i in (V, W)]
     
 def C(c): return concatenate(c)
 def S(s0, s1, s2): return swapaxes(s0, s1, s2)
 
 sX, sY, sZ = S(S(W, 0,2), 1,2), S(S(W, 0,1), 1,2), transpose(W, axes = (0,1,2,3))
         
 def D(a, s = 0):
     if s==0 : a[0], a[1], a[2] = a[0], a[2], a[1]
     if s==1 : a[0], a[1], a[2] = a[2], a[1], a[0]
     if s==2 : a[0], a[1], a[2] = a[1], a[0], a[2]
     return a
 
 def Q(q, qq, qqq = 0):
     if qq == 0 : a, b = 0, 1
     else: a, b = 1, 0
     q = C((C((D(q[a][b], qqq), D(q[b][b], qqq))), C((D(q[a][a], qqq), D(q[b][a], qqq)))))
     q.setshape(2,2,3)
     return q
 
 Op = [&#039;sX[0] = Q(sX[0],0)&#039;,   &#039;sX[0] = Q(sX[0],1)&#039;,   &#039;sX[1] = Q(sX[1],0)&#039;,   &#039;sX[1] = Q(sX[1],1)&#039;,
       &#039;sY[0] = Q(sY[0],0,1)&#039;, &#039;sY[0] = Q(sY[0],1,1)&#039;, &#039;sY[1] = Q(sY[1],0,1)&#039;, &#039;sY[1] = Q(sY[1],1,1)&#039;,
       &#039;sZ[0] = Q(sZ[0],0,2)&#039;, &#039;sZ[0] = Q(sZ[0],1,2)&#039;, &#039;sZ[1] = Q(sZ[1],0,2)&#039;, &#039;sZ[1] = Q(sZ[1],1,2)&#039; ]
 
 def E(e, ee = None):
     exec(Op[e])
     if ee: print Op[e][:5], Op[e][16],
 
 ###########################################################
 
 print V, ln, W, ln
 
 def R():
     while V[0][0][1] != W[0][0][1]:
         E(random.choice((2,6,10)), 1)      # random.choice((2,6,10)) wählt die Operatoren, die nicht die x0, y0, z0-Schichten 
         print W[0][0][1]                   # bewegen, zufällig aus, und zwar bloß in eine Richtung
     else:
         print ln, V[0][0][0],&#039; =&gt; &#039;, OUT(V)[0][0][0],&#039; || &#039;, V[0][0][1],&#039; =&gt; &#039;, OUT(V)[0][0][1], ln
         for i in OUT(W):
             for j in i:
                 print j
         print ln, &#039;done&#039;
         
 R()
 </code></pre></div> <br /><p> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</p><p> Drei Dinge wurden bisher nicht erwähnt: def T(), def OUT(o), und der letzte Abschnitt.</p><p> def T() zur Bildung einer zwischenzeitlichen Sicherungskopie wird bei der Entwicklung<br /> eines Algorithmus gute Dienste leisten, und def OUT(o) ist eine Möglichkeit, zum Schluß<br /> die interne Zahlendarstellung wieder in Farbnamen zurückzuwandeln.</p><p> Der letze Abschnitt wird ordnungsgemäß nun auch zuletzt beschrieben.</p><p> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</p> <br /><p> Zuguterletzt: Entwickle einen Algorithmus:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Bisher wurde lediglich die Arbeitsbedingung geschaffen und bereitgestellt.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Allerdings, meines Erachtens sind diese 99 schlappen Zeilchen ein guter<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Anfang. Die Operatoren sind vorhanden - E() - der Rest ist aweng<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Gehirnschmalz. Ein möglicher Lösungsweg für den Würfel mit der Kantenlänge<br /> &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;zwei (id est: die Ecken des Würfels mit der Kantenlänge drei - oder vier, oder neunundsechzig -):<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Nimm einen willkürlich gewählten (hier: den mit der Eingabe ins array I<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vorgegebenen ersten) Anfangs-Teilwürfel (W[0][0][0] ==&nbsp; V[0][0][0]), ermittle sodann <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;W[0][0][1] == V[0][0][1] unter Ausschluß der Operatoren auf den Achsen x0, y0, z0 <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(also: ohne den Anfangswürfel - W[0][0][0] - in der vorderen linken oberen Ecke zu bewegen), <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ermittle sodann W[0][1][0] == V[0][1][0] und W[0][1][1] == V[0][1][1], ohne W[0][0][0] <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;oder W[0][0][1] zu bewegen, ermittele zum Schluß W[1][0][0] , W[1][0][1] , <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;W[1][1][0] und W[1][1][1] allein durch Drehung der z1-Achse (der letzten verbliebenen, <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;die frei beweglich ist).<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Wenn nicht alle Teil-Eckwürfel übereinstimmen (also V != W) gehe zurück, und verdrehe den <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Anfangs-Würfel möglichst geschickt - and do it again, Sam....... <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Hier wird def T(), also die Zwischenspeicherung, wichtig.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Zwei Dinge sind dabei bedenkenswert: <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.) jeder Teilwürfel kann an jeder Ecke erscheinen, und das in jeder möglichen<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Verdrehung der Farben um die Achsen.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.) Sind alle Schichten frei beweglich, benötigt es _höchstens_ 3 Drehungen, um<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;einen Teilwürfel in jeder möglichen Verdrehung an eine beliebige andere Ecke zu bringen,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ebenfalls in jeder möglichen Verdrehung. </p><p> def R() macht nun nichts anderes, als den zweiten Teilwürfel rein zufällig zu finden (while W[0][0][1] != V[0][0][1]),<br /> und bei Erfolg Laut zu geben - eine mögliche Ausgabe ist zB.:</p><p> </p><div class="codebox"><pre><code> [[[[1 2 3]
    [4 2 3]]
 
   [[1 5 3]
    [4 5 3]]]
 
 
  [[[1 2 6]
    [4 2 6]]
 
   [[1 5 6]
    [4 5 6]]]] 
 ----------------
 [[[[1 2 3]
    [4 6 2]]
 
   [[1 5 3]
    [4 3 2]]]
 
 
  [[[1 2 6]
    [4 6 5]]
 
   [[1 5 6]
    [4 3 5]]]] 
 ----------------
 
 sX[1] 0 [4 2 3]
 
 ----------------
 [1 2 3]  =&gt;  [&#039;orange&#039;, &#039;blue&#039;, &#039;white&#039;]  ||  [4 2 3]  =&gt;  [&#039;green&#039;, &#039;blue&#039;, &#039;white&#039;] 
 ----------------
 
 [[&#039;orange&#039;, &#039;blue&#039;, &#039;white&#039;], [&#039;green&#039;, &#039;blue&#039;, &#039;white&#039;]]
 [[&#039;orange&#039;, &#039;purple&#039;, &#039;white&#039;], [&#039;green&#039;, &#039;purple&#039;, &#039;white&#039;]]
 [[&#039;orange&#039;, &#039;blue&#039;, &#039;red&#039;], [&#039;green&#039;, &#039;blue&#039;, &#039;red&#039;]]
 [[&#039;orange&#039;, &#039;purple&#039;, &#039;red&#039;], [&#039;green&#039;, &#039;purple&#039;, &#039;red&#039;]]
 
 ----------------
 done
 </code></pre></div> <br /> <br /><p> Weil aber R() in der Tat ein kleiner Anarchist ist, könnte es zB. auch vermelden:</p><p> </p><div class="codebox"><pre><code> [[[[1 2 3]
    [4 2 3]]
 
   [[1 5 3]
    [4 5 3]]]
 
 
  [[[1 2 6]
    [4 2 6]]
 
   [[1 5 6]
    [4 5 6]]]] 
 ----------------
 [[[[1 2 3]
    [4 6 2]]
 
   [[1 5 3]
    [4 3 2]]]
 
 
  [[[1 2 6]
    [4 6 5]]
 
   [[1 5 6]
    [4 3 5]]]] 
 ----------------
 
 sZ[1] 0 [4 6 2]
 sY[1] 0 [4 6 2]
 sZ[1] 0 [4 6 2]
 sX[1] 0 [3 1 5]
 sX[1] 0 [1 6 5]
 sY[1] 0 [1 6 5]
 sX[1] 0 [2 6 1]
 sZ[1] 0 [2 6 1]
 sZ[1] 0 [2 6 1]
 sX[1] 0 [4 2 3]
 
 ----------------
 [1 2 3]  =&gt;  [&#039;orange&#039;, &#039;blue&#039;, &#039;white&#039;]  ||  [4 2 3]  =&gt;  [&#039;green&#039;, &#039;blue&#039;, &#039;white&#039;] 
 ----------------
 
 [[&#039;orange&#039;, &#039;blue&#039;, &#039;white&#039;], [&#039;green&#039;, &#039;blue&#039;, &#039;white&#039;]]
 [[&#039;purple&#039;, &#039;red&#039;, &#039;green&#039;], [&#039;green&#039;, &#039;purple&#039;, &#039;white&#039;]]
 [[&#039;white&#039;, &#039;orange&#039;, &#039;purple&#039;], [&#039;blue&#039;, &#039;orange&#039;, &#039;red&#039;]]
 [[&#039;orange&#039;, &#039;purple&#039;, &#039;red&#039;], [&#039;blue&#039;, &#039;green&#039;, &#039;red&#039;]]
 
 ----------------
 done
 </code></pre></div> <br /><p> Das dauert zwar bloß einen Sekundenbruchteil, ist allerdings absolut falsch (in den Augen<br /> des lösungsbegierigen Menschen).<br /> Aber vermittels geschickterer Nutzung von E() lassen sich eine solche oder längere (ungewollte) <br /> Erfolgsmeldungen durchaus vermeiden. Weil ich Dir (@ sometimes, wahlweise geneigter Leser, geneigte<br /> Leserin) aber nicht den Spaß an der Erkundung von Python und der Beschäftigung mit rubiks cube&nbsp; <br /> von vornherein rauben möchte,</p><p> verbleibe ich mit delphinischem gruß</p><p> matho</p> <br /> <br /><p> postscriptum 1:</p><p> Um ein Gefühl für die Sache zu bekommen, kann man den unverdrehten Würfel ins array I eintragen:<br /> </p><div class="codebox"><pre><code> I = [ [&#039;orange&#039;, &#039;red&#039;, &#039;blue&#039;] ,
       [&#039;green&#039;, &#039;red&#039;, &#039;blue&#039;] ,
       [&#039;orange&#039;, &#039;white&#039;, &#039;blue&#039;] ,
       [&#039;green&#039;, &#039;white&#039;, &#039;blue&#039;] ,
       [&#039;orange&#039;, &#039;red&#039;, &#039;purple&#039;] ,
       [&#039;green&#039;, &#039;red&#039;, &#039;purple&#039;] ,
       [&#039;orange&#039;, &#039;white&#039;, &#039;purple&#039;] ,
       [&#039;green&#039;, &#039;white&#039;, &#039;purple&#039;] ]
 </code></pre></div><p> und im letzten Absatz die beiden Zeilen:<br /> </p><div class="codebox"><pre><code> print V, ln, W, ln
 </code></pre></div><p> und <br /> </p><div class="codebox"><pre><code> R()
 </code></pre></div><p> mit einer kleinen Raute versehen:<br /> </p><div class="codebox"><pre><code> #print V, ln, W, ln
 
 
 #R()
 </code></pre></div><p> Sodann lasse man sich zB. die obere sY-Schicht anzeigen - einfach folgende code-Zeilen an das script anhängen:<br /> </p><div class="codebox"><pre><code> print sY[0]
 </code></pre></div><p> und führe eine Drehung dieser Schicht aus:<br /> </p><div class="codebox"><pre><code> E(4)
 </code></pre></div><p> Dann lasse man sich wieder diese Schicht anzeigen:<br /> </p><div class="codebox"><pre><code> print ln, sY[0]
 </code></pre></div><p> Diese Zeilen:<br /> </p><div class="codebox"><pre><code> print W, ln, sY[0], ln
 E(4)
 print W, ln, sY[0], ln
 E(5) 
 print W, ln, sY[0], ln
 </code></pre></div><p> geben den Würfel und die obere sY-Schicht aus, drehen einmal, geben die Änderung aus, <br /> drehen wieder zurück, und zeigen das Endergebnis, nämlich wieder den Ausgangswürfel <br /> sowie die obere sY-Schicht in Ausgangsstellung.</p><p>&nbsp; </p><p> postscriptum 2:</p><p> Beinah hätt&#039; ich&#039;s vergessen - ein paar Buchempfehlungen:</p><p> Python für kids<br /> Gregor Lingl<br /> mitp-Verlag<br /> ISBN: 3-8266-0951-4</p> <br /><p> Python Cookbook<br /> Edited by Alex Martelli &amp; David Ascher<br /> O&#039;Reilly<br /> ISBN: 0-596-00167-3</p> <br /><p> Python and Tkinter Programming<br /> John E. Grayson<br /> Manning Publications Co.<br /> ISBN: 1-884777-81-3</p> <br /><p> Python Programming Patterns<br /> Thomas W. Christopher<br /> Prentice Hall PTR<br /> ISBN: 0-13-040956-1</p> <br /><p> Python Web Programming<br /> Steve Holden with David Beazley<br /> New Riders<br /> ISBN: 0-7357-1090-2</p> <br /><p> Jetzt lerne ich Python<br /> Ivan van Laningham<br /> Markt+Technik Verlag<br /> ISBN 3-8272-5843-X</p><p> Dieses letzte Buch ist zwar (in der mir vorliegenden Fassung - Ausgabe von 2000)<br /> ziemlich veraltet und eh - nun ja, ausgeklinkt - dafür aber absolut liebenswert.</p>]]></summary>
			<author>
				<name><![CDATA[matho]]></name>
				<uri>http://devshare.de/user/780/</uri>
			</author>
			<updated>2003-03-23T17:12:34Z</updated>
			<id>http://devshare.de/topic/35631/no-999/new/posts/</id>
		</entry>
</feed>

