<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>BLfH und sein Assistent - .NET Golf</title>
    <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/</link>
    <description>Rants und Raves ber Gott und die Welt</description>
    <language>en-us</language>
    <copyright>Christoph Wille, Bernhard Spuida</copyright>
    <lastBuildDate>Wed, 23 Nov 2005 13:47:12 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>donnerwetter@himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com</managingEditor>
    <webMaster>donnerwetter@himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com</webMaster>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Während Mario's letzter Session gestern auf der Launch Conference 2005 in Wien gab's
die erste Live-Preisverleihung bei einem .NET Golfturnier. Auf die ersten drei Plätze
gegolft hatten sich Thomas Gatterweh, Franz Polzer und Claudia Krolopp. Bevor Mario
zur Preisverleihung schritt (und das dekorative Snowboard damit die Bühne verließ),
habe ich der versammelten Entwicklergemeinde kurz und prägnant das Golfkonzept vorgestellt.
</p>
        <p>
          <img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf1.jpg" border="0" />
        </p>
        <p>
Zumindest der Part, daß man keinerlei Coding Style Guidelines einhalten muß, dürfte
einigen Programmierern gefallen haben. 
</p>
        <p>
Natürlich durfte das Leaderboard nicht fehlen:
</p>
        <p>
          <img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf2.jpg" border="0" />
        </p>
        <p>
Danach ging's zur Preisverleihung, beginnend mit Claudia, die den MP3 Player bekam:
</p>
        <p>
          <img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf3.jpg" border="0" />
        </p>
        <p>
Dann betrat Franz die Bühne, um das Snowboard abzuholen (man bemerke den Code auf
der Slide, unkommentiert - <a href="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink.aspx?guid=92fc0310-a551-4ae5-94ad-86fdcab08093">die
Post Mortems sind hier zu finden</a>):
</p>
        <p>
          <img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf4.jpg" border="0" />
        </p>
        <p>
Thomas erhielt einen MDA sowie (demnächst) ein Visual Studio Pro (das Foto wurde leider
nichts, sorry). 
</p>
        <p>
Das nächste Turnier kommt bestimmt, und es wird mit .NET 2.0 ausgetragen werden!
</p>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a" />
      </body>
      <title>Preisverleihung für das Solitaire Encryption Golfturnier</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a.aspx</link>
      <pubDate>Wed, 23 Nov 2005 13:47:12 GMT</pubDate>
      <description>&lt;p&gt;
Während Mario's letzter Session gestern auf der Launch Conference 2005 in Wien gab's
die erste Live-Preisverleihung bei einem .NET Golfturnier. Auf die ersten drei Plätze
gegolft hatten sich Thomas Gatterweh, Franz Polzer und Claudia Krolopp. Bevor Mario
zur Preisverleihung schritt (und das dekorative Snowboard damit die Bühne verließ),
habe ich der versammelten Entwicklergemeinde kurz und prägnant das Golfkonzept vorgestellt.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf1.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Zumindest der Part, daß man keinerlei Coding Style Guidelines einhalten muß, dürfte
einigen Programmierern gefallen haben. 
&lt;/p&gt;
&lt;p&gt;
Natürlich durfte das Leaderboard nicht fehlen:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf2.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Danach ging's zur Preisverleihung, beginnend mit Claudia, die den MP3 Player bekam:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf3.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Dann betrat Franz die Bühne, um das Snowboard abzuholen (man bemerke den Code auf
der Slide, unkommentiert - &lt;a href="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink.aspx?guid=92fc0310-a551-4ae5-94ad-86fdcab08093"&gt;die
Post Mortems sind hier zu finden&lt;/a&gt;):
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/content/binary/msdnconnectiongolf4.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Thomas erhielt einen MDA sowie (demnächst) ein Visual Studio Pro (das Foto wurde leider
nichts, sorry). 
&lt;/p&gt;
&lt;p&gt;
Das nächste Turnier kommt bestimmt, und es wird mit .NET 2.0 ausgetragen werden!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,34d0dad6-bb87-4e4e-9b1a-0d77c6f03a5a.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=92fc0310-a551-4ae5-94ad-86fdcab08093</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,92fc0310-a551-4ae5-94ad-86fdcab08093.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,92fc0310-a551-4ae5-94ad-86fdcab08093.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=92fc0310-a551-4ae5-94ad-86fdcab08093</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Solitaire Encryption Golfturnier war eine Challenge unter den Ägiden von Microsoft
Österreich, unser <a href="http://codefairway.net/de/">Codefairway</a> diente als
bewährter Austragungsort für diesen MSDN Contest. Die <a href="http://codefairway.net/de/solvedholes.aspx?action=rules&amp;hole=20">Regeln</a> und
das <a href="http://codefairway.net/de/solvedholes.aspx?action=leaderboard&amp;hole=20">finale
Leaderboard</a> sind ebendort nachzulesen - hier in diesem Blogpost sind die Post
Mortems der Winning Entries zusammengetragen. 
</p>
        <p>
Die Post Mortems sind wie immer von den Golfern selbst verfasst, und werden hier ungekürzt
und ungeschminkt nachgedruckt. Den optimierten Code kann man als angemeldeter Golfer
im Leaderboard nachlesen (auch wenn's ohne diese Erklärungen nicht viel helfen wird
&lt;g /&gt;).
</p>
        <h2>Platz 3, Claudia Krolopp
</h2>
        <p>
          <!--StartFragment --> <span class="367383419-21112005"><font size="2">Spät, aber
doch ...</font></span></p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Im Gegensatz zu Franz bin ich absolut
nicht der Meinung, dass das was hier verbrochen wurde selbsterklärend sein soll. Ich
hab schon Probleme meine eigene Code-Zeile zu durchblicken.</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Aber ich versuchs mal:</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Bei mir muss als Kartenstapel kein
string sondern ein int array herhalten.</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Der Stapel wird mit 1 beginnend initialisiert,
die beiden Joker erhalten beide den Wert 53 (an irgendeiner Stelle im Algorithmus
muss für beide der gleiche Wert verwendet werden).</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Heisst allerdings auch, dass die Position
der Joker immer bekannt sein muss, deshalb werden bei jeder Veränderung im Stapel
die Indices beider Joker (x und y) mitgezogen.</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Sämtliche Verschiebungen werden in
einer einzigen Funktion M( int j, int k ) durchgeführt, wobei immer die ersten j Karten
k mal um 1 nach hinten geschoben werden. k wird returniert und wiederverwertet.</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Sieht dann z.B. beim Verschieben einer
Karte um 1 nach hinten so aus:</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">x=4;<br />
     1234x5678y90<br />
M(x,x);<br />
     x12345678y90<br />
M(1,k%53+1);<br />
     12345x678y90</font>
          </span>
        </p>
        <p>
          <span class="367383419-21112005">
            <font size="2">Mit k%53+1 funktioniert auch das Verschieben
der letzten Karte reibungslos.<br /></font>
          </span>
          <font color="#0000ff">
            <font size="2">
            </font>
          </font>
        </p>
        <p>
          <font color="#0000ff">
            <font size="2">using</font>
          </font>
          <font size="2"> S=System.String;<br /><font color="#0000ff">public</font><font color="#0000ff">class</font> Tee<br />
{<br /><font color="#008000"><span class="367383419-21112005">    </span>/<span class="367383419-21112005">/ </span></font><font color="#008000">In
"r" landet der verschlüsselte string, in "s" der key und </font><br /><span class="367383419-21112005"><font color="#008000">    // </font></span><font color="#008000">"o"
wird mit dem Alphabet in Grossbuchstaben initialisiert.</font></font>
          <font color="#008000" size="2">
            <br />
          </font>
          <font size="2">
            <span class="367383419-21112005">    </span>S
r,s,o;</font>
        </p>
        <p>
          <font color="#008000">
            <font size="2">
              <span class="367383419-21112005">    </span>/<span class="367383419-21112005">/ </span></font>
          </font>
          <font color="#008000" size="2">Jede
Menge Hilfsvariablen und das Kartendeck "a".</font>
          <font color="#008000" size="2">
            <br />
          </font>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">    </span>int</font> i,t,v,x,y,l,p,q;</font>
          <font size="2">
            <br />
            <span class="367383419-21112005">    </span>
          </font>
          <font size="2">
            <font color="#0000ff">int</font>[]a=<font color="#0000ff">new</font><font color="#0000ff">int</font>[<font color="#808000">54</font>];</font>
        </p>
        <font color="#0000ff">
        </font>
        <p>
          <font color="#0000ff">
            <font size="2">
              <font color="#008000">
                <span class="367383419-21112005">    </span>//
Hier werden j Karten k mal verschoben</font>
              <br />
              <span class="367383419-21112005">
                <font color="#008000">    </font>
              </span>
              <font color="#008000">//
in "x" und "y" werden die Positionen der Joker aktualisiert</font>
            </font>
          </font>
        </p>
        <p>
          <font color="#0000ff">
            <font size="2">
              <span class="367383419-21112005">    </span>int</font>
          </font>
          <font size="2"> M(int
j,int k)<br /><span class="367383419-21112005">    </span>{</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">        </span>for</font>(;j--&gt;<font color="#808000">0</font>;y+=y&lt;<font color="#808000">1</font>?k:y&gt;k?<font color="#808000">0</font>:-<font color="#808000">1</font>,x+=x&lt;<font color="#808000">1</font>?k:x&gt;k?<font color="#808000">0</font>:-<font color="#808000">1</font>)</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">            </span>for</font>(t=a[i=<font color="#808000">0</font>];i&lt;k;a[i]=t)</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <span class="367383419-21112005">                </span>a[i++]=a[i];</font>
        </p>
        <p>
          <font size="2">
          </font>
        </p>
        <p>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">        </span>return</font> ++v&gt;<font color="#808000">5</font>?k:v%<font color="#808000">2</font>&gt;<font color="#808000">0</font>?M(<font color="#808000">1</font>,k%<font color="#808000">53</font>+<font color="#808000">1</font>):M(y,y);</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <span class="367383419-21112005">    </span>}</font>
        </p>
        <font color="#0000ff">
          <span class="367383419-21112005">
            <p>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">    </span>//
GenerateKeyStream generiert nicht nur den KeyStream sondern</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">    </span>//
auch gleich die verschlüsselte Nachricht</font>
              </font>
            </p>
            <p>
              <font size="2">    </font>
            </p>
            <p>
            </p>
          </span>
          <font size="2">public</font>
        </font>
        <font color="#000000" size="2"> S GenerateKeyStream(S
P,S m)</font>
        <font size="2">
          <br />
        </font>
        <font size="2">
          <font color="#000000">
            <span class="367383419-21112005">    </span>{</font>
        </font>
        <font size="2">
          <br />
        </font>
        <font color="#0000ff">
          <font color="#008000">
            <font size="2">
              <span class="367383419-21112005">        </span>//
Bei der Initialisierung wird gleichzeitig "P" mit Ziffern angefüllt.</font>
          </font>
          <font color="#008000" size="2">
            <br />
          </font>
          <font color="#008000">
            <font size="2">
              <span class="367383419-21112005">        </span>//
Damit ist es möglich beide Teile des Algorithmus, also über den ganzen</font>
            <font size="2">
              <br />
            </font>
          </font>
          <font color="#008000">
            <font size="2">
              <span class="367383419-21112005">        </span>//
string "P" und bis die benötigte KeyStream-Länge erreicht ist, in </font>
            <font size="2">
              <br />
              <span class="367383419-21112005">        </span>
            </font>
          </font>
          <font color="#008000">
            <font size="2">//
einer einzigen Schleife abzuarbeiten.</font>
          </font>
        </font>
        <p>
        </p>
        <p>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">        </span>for</font>(y=l=p=<font color="#808000">0</font>;y&lt;<font color="#808000">53</font>;P+=a[x=y]=a[++y]=y)<br /><span class="367383419-21112005">             </span>o+=(<font color="#0000ff">char</font>)(y%<font color="#808000">26</font>+<font color="#808000">65</font>);</font>
        </p>
        <font color="#0000ff">
          <span class="367383419-21112005">
            <p>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
Und hier wird nun endlich der ganze Algorithmus aufgerufen.</font>
                <font size="2">
                  <br />
                </font>
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
Der momentane Buchstabe in "P" wird auf Kartendeckwert runter-</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
gerechnet und in "q" gespeichert. </font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
War es ein Grossbuchstabe, dann ist q &gt; 0 und die strings werden</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
nicht verändert.</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
War es eine der angehängten Ziffern, dann sind wird durch "P"</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
durch und können anfangen die strings zu basteln.</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
Wenn die Nachricht vieeeel länger als das passwort ist, kann es</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
allerdings sein, dass die angehängten Ziffern mengenmässig nicht</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
reichen (war bei mir anfangs der Fall) - dann kann "P" auch direkt</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
im if verlängert werden - kostet allerdings noch ein Byte extra</font>
              </font>
              <font color="#008000" size="2">
                <br />
              </font>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
und wenns dem Tester so genügt ...</font>
              </font>
            </p>
            <p>
              <font size="2">         </font>
            </p>
            <p>
            </p>
          </span>
          <font size="2">for</font>
        </font>
        <font size="2">
          <font color="#000000">(r=s=</font>
          <font color="#ff0000">""</font>
          <font color="#000000">;l&lt;m.Length;)</font>
        </font>
        <font size="2">
          <br />
        </font>
        <font size="2">
          <font color="#0000ff">
            <span class="367383419-21112005">             </span>if</font>
          <font color="#000000">(M(q=P[p++]-</font>
          <font color="#808000">64</font>
          <font color="#000000">,M(a[M(M(x&lt;M(x,x)?x:y,x&gt;y?x:y)+</font>
          <font color="#808000">1</font>
          <font color="#000000">,</font>
          <font color="#808000">53</font>
          <font color="#000000">)],</font>
          <font color="#808000">52</font>
          <font color="#000000">))&gt;(i=a[a[v=</font>
          <font color="#808000">0</font>
          <font color="#000000">]]-</font>
          <font color="#808000">1</font>
          <font color="#000000">)&amp;q&lt;</font>
          <font color="#808000">1</font>
          <font color="#000000">)<br /><span class="367383419-21112005">             </span></font>
        </font>
        <font color="#000000" size="2">{</font>
        <font size="2">
          <br />
          <span class="367383419-21112005">
            <font color="#000000">                 </font>
          </span>
        </font>
        <font color="#000000" size="2">s+=o[i];</font>
        <font size="2">
          <br />
        </font>
        <font size="2">
          <font color="#000000">
            <span class="367383419-21112005">                 </span>r+=o[m[l++]-</font>
          <font color="#808000">64</font>
          <font color="#000000">+i%</font>
          <font color="#808000">26</font>
          <font color="#000000">];</font>
        </font>
        <font size="2">
          <br />
        </font>
        <font size="2">
          <font color="#000000">
            <span class="367383419-21112005">             </span>}</font>
        </font>
        <p>
        </p>
        <font color="#0000ff">
          <span class="367383419-21112005">
            <p>
              <font color="#008000">
                <font size="2">
                  <span class="367383419-21112005">        </span>//
Ab jetzt is<span class="367383419-21112005">s</span>es wirklich selbsterklärend.</font>
              </font>
            </p>
            <p>
              <font size="2">        r</font>
            </p>
          </span>
          <font size="2">eturn</font>
        </font>
        <font color="#000000" size="2"> s;</font>
        <font size="2">
          <br />
        </font>
        <font size="2">
          <font color="#000000">
            <span class="367383419-21112005">     </span>}</font>
        </font>
        <p>
        </p>
        <p>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">     </span>public</font> S
EncryptData(S m,S k)</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <span class="367383419-21112005">     </span>{</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <font color="#0000ff">
              <span class="367383419-21112005">         </span>return</font> r;</font>
          <font size="2">
            <br />
          </font>
          <font size="2">
            <span class="367383419-21112005">     </span>}</font>
          <font size="2">
            <br />
          </font>
          <font size="2">}</font>
        </p>
        <h2>Platz 2, Franz Polzer
</h2>
        <p>
          <!--StartFragment -->Eigentlich ist der Code sowieso selbsterklaerend :)<br /><br />
c  Kartendeck<br />
d  Keystream<br />
e  Encrypted Message<br />
f  lookup Table um (char) typecast und Offset von 'A' zu sparen<br />
i  Startposition des zu verschiebenden Bereichs<br />
z  Zielposition des zu verschiebenden Bereichs<br /><br />
using S=System.String;<br />
public class Tee<br />
{<br /><X-TAB>
        
</X-TAB>
S c,d,e,f;<br /><X-TAB>
        
</X-TAB>
int i,z;<br /><X-TAB>
        
</X-TAB>
char j,u,l='A',a,b='5';<br /><X-TAB>
        
</X-TAB>
public S GenerateKeyStream(S p,S m)<br /><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Initialisieren des Kartendecks und der Lookup-Table<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
for(;a&lt;54;c+=++a)f+=l++;<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Solange bis die Message encrypted ist<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
for(;u&lt;m.Length;)<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Move der beiden Joker<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
for(l=b;l&lt;=a;M(1))<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
z=((i=c.IndexOf(l))+l++)%b+1;<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Triple Cut<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
S[]k=c.Split(b,a);<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
c=k[2]+c.Trim((k[0]+k[2]).ToCharArray())+k[i=0];<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Countcut mit letztem Zeichen<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
z=52;<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
M(c[b]);<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
try<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Countcut mit Passphrase solange noch 
<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// ein Zeichen da ist.<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Sonst -&gt; Exception<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
M(p[j++]%64);<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
}<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
catch<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Auslesen des Zeichens fuer Keystream<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// und erzeugen der encrypted Message<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
if(b&gt;(i=c[c[0]&gt;b?b:c[0]]))<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
e+=f[(m[u]+(d+=f[--i%26])[u++]+1)%26];<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
}<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
}<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Keystream zurueckgeben<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
return d;<br /><X-TAB>
        
</X-TAB>
}<br /><X-TAB>
        
</X-TAB>
public S EncryptData(S m,S p)<br /><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// Einfach die vorher berechnete Message zurueckgeben<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
return e;<br /><X-TAB>
        
</X-TAB>
}<br /><X-TAB>
        
</X-TAB>
void M(int y)<br /><X-TAB>
        
</X-TAB>
{<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
// verschieben von y Zeichen von i nach z<br /><X-TAB>
        
</X-TAB><X-TAB>
        
</X-TAB>
c=c.Remove(i,y).Insert(z&lt;i?z:z-y+1,c.Substring(i,y));<br /><X-TAB>
        
</X-TAB>
}<br />
}<br /><br />
So, das war's eigentlich schon!
</p>
        <h2>Platz 1, Thomas Gatterweh
</h2>
        <p>
          <!--StartFragment -->
          <font face="Verdana" color="#008000" size="2">/*<br />
Die Idee.<br />
Alle Veränderungen im Kartenstapel können durch eine Funktion ausgedrückt werden:
Das Verschieben einer oder mehrerer Karten an eine andere Position im Stapel. Es müssen
nur mehr die jeweiligen Start-, End- und Zielpositionen berechnet werden. </font>
          <font face="Wingdings" color="#008000" size="2">J<br /></font>
          <font face="Verdana" color="#008000" size="2"> <br />
Die Joker.<br />
Um ein Zeichen (";") zu sparen, wird die erste Jokerverschiebung nicht als erstes
in der Schleife gemacht, sondern als letztes (im "for"). Das ist insofern möglich,
da diese erste Jokerverschiebung im allerersten Durchlauf lediglich die beiden Joker
vertauscht. (Der Stapel ist ja frisch aufgebaut.) Damit kann ich diese Vertauschung
weglassen, und muss jetzt nur die Bedeutung von Joker #1 und #2 vertauschen. Deshalb
hat Joker #1 den Wert 54 ("6") und Joker #2 den Wert 53 ("5").<br />
 <br />
Das Green.<br />
Es lässt sich folgendes herausfinden:<br />
a) Die Klasse "Tee" wird jeweils nur zum Verschlüsseln einer einzigen Nachricht benutzt.
==&gt; Ich verwende soweit wie möglich die Defaultinitialisierung von Klassenelementen,
z.B. int wird als 0 initialisiert.<br />
b) "GenerateKeyStream" und "EncryptData" wird immer 'korrekt' paarweise benutzt. ==&gt;
Die Nachricht kann schon in "GenerateKeyStream" verschlüsselt werden. Die Parameter
von "EncryptData" setzte ich einfach als korrekt voraus.<br />
*/<br /></font>
          <font face="Verdana" color="#0000ff" size="2">using</font>
          <font face="Verdana" size="2"> S
= System.String;<br /></font>
          <font face="Verdana" color="#0000ff" size="2">public</font>
          <font face="Verdana" size="2">
          </font>
          <font face="Verdana" color="#0000ff" size="2">class</font>
          <font face="Verdana" size="2"> Tee<br />
{<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "a" enthält in den ersten 54 Zeichen
den Kartenstapel; der Rest bis Zeichen 90="Z" wird zum Wandeln einer Zahl in ein Zeichen
verwendet.<br />
         "k" ist der KeyStream.<br />
         "e" ist die verschlüsselte Nachricht.<br />
         */<br /></font>
          <font face="Verdana" size="2">        
S a, k, e;<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "i" ist die Position des Jokers #1,
"j" die des Jokers #2. "j" wird gleich am Anfang gebraucht und muss initialisiert
werden.<br />
         */<br /></font>
          <font face="Verdana" size="2">         </font>
          <font face="Verdana" color="#0000ff" size="2">int</font>
          <font face="Verdana" size="2"> h,
i, j = 52, l, n;<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "x" enthält a) das Zeichen des Jokers
#2 (siehe oben) und auch b) 53, d.h., 1-Anzahl der Karten.<br />
         "y" enthält in der Hauptschleife
a) das Zeichen des Jokers #1 und auch b) 54, d.h., die Anzahl der Karten.<br />
         Zuerst wird "y" allerdings zum Initialisieren
von "a" verwendet. Der Defaultwert von 0 passt dafür hervorragend.<br />
         */<br /></font>
          <font face="Verdana" size="2">         </font>
          <font face="Verdana" color="#0000ff" size="2">char</font>
          <font face="Verdana" size="2"> x
= </font>
          <font face="Verdana" color="#ff00ff" size="2">'5'</font>
          <font face="Verdana" size="2">,
y;<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "EncryptData" liefert nur mehr die
bereits generierte verschlüsselt Nachricht zurück.         
*/<br /></font>
          <font face="Verdana" size="2">         </font>
          <font face="Verdana" color="#0000ff" size="2">public</font>
          <font face="Verdana" size="2"> S
EncryptData( S m, S k )<br />
         {<br />
                   </font>
          <font face="Verdana" color="#0000ff" size="2">return</font>
          <font face="Verdana" size="2"> e;<br />
         }<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "C" verschiebt einen Kartenstapel,
gegeben durch die Position "s" der ersten Karte und "e" der letzten Karte (exklusiv),
an die Position "z".<br />
         Ist "s" größer oder gleich "e", wird
nichts verschoben.<br />
         "i" und "j" wird mit der neuen Position
des 1. und 2. Jokers aktualisiert.<br />
         */<br /></font>
          <font face="Verdana" size="2">         </font>
          <font face="Verdana" color="#0000ff" size="2">void</font>
          <font face="Verdana" size="2"> C( </font>
          <font face="Verdana" color="#0000ff" size="2">int</font>
          <font face="Verdana" size="2"> s, </font>
          <font face="Verdana" color="#0000ff" size="2">int</font>
          <font face="Verdana" size="2"> e, </font>
          <font face="Verdana" color="#0000ff" size="2">int</font>
          <font face="Verdana" size="2"> z
)<br />
         {<br />
                  
a = a.Remove( s, e -= s &lt; e ? s : e ).Insert( z, a.Substring( s, e ));<br />
                  
i = a.IndexOf( y );<br />
                  
j = a.IndexOf( x );<br />
         }<br />
         </font>
          <font face="Verdana" color="#008000" size="2">/*<br />
         "GenerateKeyStream" verschlüsselt
auch noch gleich die Nachricht und hebt sich das Ergebnis für "EncryptData" auf.<br />
         */<br /></font>
          <font face="Verdana" size="2">         </font>
          <font face="Verdana" color="#0000ff" size="2">public</font>
          <font face="Verdana" size="2"> S
GenerateKeyStream( S p, S m )<br />
         {<br />
                   </font>
          <font face="Verdana" color="#008000" size="2">//
Ein Kartenstapel muss her...<br /></font>
          <font face="Verdana" size="2">                   </font>
          <font face="Verdana" color="#0000ff" size="2">for</font>
          <font face="Verdana" size="2">(
; y &lt; 90; )<br />
                           
a += ++y;<br />
                   </font>
          <font face="Verdana" color="#008000" size="2">//
Jetzt noch schnell "y" initialisiert, und dann kann es losgehen bis alle Zeichen da
sind...<br /></font>
          <font face="Verdana" size="2">                   </font>
          <font face="Verdana" color="#0000ff" size="2">for</font>
          <font face="Verdana" size="2">(
y = </font>
          <font face="Verdana" color="#ff00ff" size="2">'6'</font>
          <font face="Verdana" size="2">;
n &lt; m.Length; C( i, 1 + i, i % x + 1 ))<br />
                  
{<br />
                            </font>
          <font face="Verdana" color="#008000" size="2">//
Jokerverschiebung (am Ende des "for" für Joker #1, bzw hier für Joker #2)<br /></font>
          <font face="Verdana" size="2">                            </font>
          <font face="Verdana" color="#008000" size="2">//
Von alter Jokerposition eine Karte an die neue Position verschieben.<br /></font>
          <font face="Verdana" size="2">                           
C( j, ++j, j % x + 1 );<br />
                            </font>
          <font face="Verdana" color="#008000" size="2">//
TripleCut in zwei Schritten...<br /></font>
          <font face="Verdana" size="2">                            </font>
          <font face="Verdana" color="#008000" size="2">//
Wo ist der vordere Joker? 
<br /></font>
          <font face="Verdana" size="2">                           
h = i &lt; j ? i : j;<br />
                            </font>
          <font face="Verdana" color="#008000" size="2">//
1. Schritt: Die Karten von der Karte nach dem hinteren Joker (wenn "h" der vordere
ist, dann ist "i+j-h" der hintere!) bis zum Ende an die Position vor dem vorderen
Joker verschieben.<br /></font>
          <font face="Verdana" size="2">                           
C( i + j - h + 1, y, h );<br />
                            </font>
          <font face="Verdana" color="#008000" size="2">//
2. Schritt: Die Karten vom Anfang bis zum (ursprünglichen) vorderen Joker ans Ende
verschieben.<br /></font>
          <font face="Verdana" size="2">                           
C( 0, h, y - h );<br />
                            </font>
          <font face="Verdana" color="#008000" size="2">//
CountCut gemäßder letzten Karte<br /></font>
          <font face="Verdana" size="2">                            </font>
          <font face="Verdana" color="#008000" size="2">//
Invers zur Beschreibung: Ich verschiebe nicht die N ersten Karten unmittelbar vor
die letzte Karte, sondern verschiebe die Karten von der N-ten bis zur vorletzten an
den Anfang.<br /></font>
          <font face="Verdana" size="2">                           
C( a[ x ], x, 0 );<br />
                            </font>
          <font face="Verdana" color="#0000ff" size="2">try<br /></font>
          <font face="Verdana" size="2">                           
{<br />
                                      </font>
          <font face="Verdana" color="#008000" size="2">//
CountCut nach dem nächsten Zeichen in der PassPhrase. Gibt's dort keines (mehr), geht's
per Ausnahme zur Ausgabe...<br /></font>
          <font face="Verdana" size="2">                                     
C( p[ l++ ] - 64, x, 0 );<br />
                           
}<br />
                            </font>
          <font face="Verdana" color="#0000ff" size="2">catch<br /></font>
          <font face="Verdana" size="2">                           
{<br />
                                      </font>
          <font face="Verdana" color="#008000" size="2">//
Ausgabekarte holen, und wenn kein Joker...<br /></font>
          <font face="Verdana" size="2">                                     
h = a[ a[ 0 ] &lt; x ? a[ 0 ] : x ];<br />
                                      </font>
          <font face="Verdana" color="#0000ff" size="2">if</font>
          <font face="Verdana" size="2">(
h &lt; x )<br />
                                     
{<br />
                                               </font>
          <font face="Verdana" color="#008000" size="2">//
...dann Message verschlüsseln...<br /></font>
          <font face="Verdana" size="2">                                              
e += a[( h + 13 + m[ n++ ]) % 26 + 64 ];<br />
                                               </font>
          <font face="Verdana" color="#008000" size="2">//
...und KeyStream erzeugen.<br /></font>
          <font face="Verdana" size="2">                                              
k += a[ --h % 26 + 64 ];<br />
                                               </font>
          <font face="Verdana" color="#008000" size="2">//
Beide Male wird der unverändert bleibende Teil des Kartenstapels (alles außer den
ersten 54 Zeichen) zum Umwandeln des Kartenwertes in ein Zeichen verwendet.<br /></font>
          <font face="Verdana" size="2">                                     
}<br />
                           
}<br />
                  
}<br />
                   </font>
          <font face="Verdana" color="#0000ff" size="2">return</font>
          <font face="Verdana" size="2"> k;<br />
         }<br />
}<br />
 <br /></font>
        </p>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=92fc0310-a551-4ae5-94ad-86fdcab08093" />
      </body>
      <title>Post Mortems für das Solitaire Encryption Golfturnier</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,92fc0310-a551-4ae5-94ad-86fdcab08093.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,92fc0310-a551-4ae5-94ad-86fdcab08093.aspx</link>
      <pubDate>Mon, 21 Nov 2005 14:38:27 GMT</pubDate>
      <description>&lt;p&gt;
Das Solitaire Encryption Golfturnier war eine Challenge unter den Ägiden von Microsoft
Österreich, unser &lt;a href="http://codefairway.net/de/"&gt;Codefairway&lt;/a&gt; diente als
bewährter Austragungsort für diesen MSDN Contest. Die &lt;a href="http://codefairway.net/de/solvedholes.aspx?action=rules&amp;amp;hole=20"&gt;Regeln&lt;/a&gt; und
das &lt;a href="http://codefairway.net/de/solvedholes.aspx?action=leaderboard&amp;amp;hole=20"&gt;finale
Leaderboard&lt;/a&gt; sind ebendort nachzulesen - hier in diesem Blogpost sind die Post
Mortems der Winning Entries zusammengetragen. 
&lt;/p&gt;
&lt;p&gt;
Die Post Mortems sind wie immer von den Golfern selbst verfasst, und werden hier ungekürzt
und ungeschminkt nachgedruckt. Den optimierten Code kann man als angemeldeter Golfer
im Leaderboard nachlesen (auch wenn's ohne diese Erklärungen nicht viel helfen wird
&amp;lt;g /&amp;gt;).
&lt;/p&gt;
&lt;h2&gt;Platz 3, Claudia Krolopp
&lt;/h2&gt;
&lt;p&gt;
&lt;!--StartFragment --&gt;&amp;nbsp;&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Spät, aber
doch ...&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Im Gegensatz zu Franz bin ich absolut
nicht der Meinung, dass das was hier verbrochen wurde selbsterklärend sein soll. Ich
hab schon Probleme meine eigene Code-Zeile zu durchblicken.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Aber ich versuchs mal:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Bei mir muss als Kartenstapel kein string
sondern ein int array herhalten.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Der Stapel wird mit 1 beginnend initialisiert,
die beiden Joker erhalten beide den Wert 53 (an irgendeiner Stelle im Algorithmus
muss für beide der gleiche Wert verwendet werden).&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Heisst allerdings auch, dass die Position
der Joker immer bekannt sein muss, deshalb werden bei jeder Veränderung im Stapel
die Indices beider Joker (x und y) mitgezogen.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Sämtliche Verschiebungen werden in einer
einzigen Funktion M( int j, int k ) durchgeführt, wobei immer die ersten j Karten
k mal um 1 nach hinten geschoben werden. k wird returniert und wiederverwertet.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Sieht dann z.B. beim Verschieben einer
Karte um 1 nach hinten so aus:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;x=4;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1234x5678y90&lt;br&gt;
M(x,x);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x12345678y90&lt;br&gt;
M(1,k%53+1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12345x678y90&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=367383419-21112005&gt;&lt;font size=2&gt;Mit k%53+1 funktioniert auch das Verschieben
der letzten Karte reibungslos.&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color=#0000ff&gt;&lt;font size=2&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff&gt;&lt;font size=2&gt;using&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt; S=System.String;&lt;br&gt;
&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;class&lt;/font&gt; Tee&lt;br&gt;
{&lt;br&gt;
&lt;font color=#008000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;/&lt;span class=367383419-21112005&gt;/ &lt;/span&gt;&lt;/font&gt;&lt;font color=#008000&gt;In
"r" landet der verschlüsselte string, in "s" der key und&amp;nbsp;&lt;/font&gt;
&lt;br&gt;
&lt;span class=367383419-21112005&gt;&lt;font color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;/font&gt;&lt;/span&gt;&lt;font color=#008000&gt;"o"
wird mit dem Alphabet in Grossbuchstaben initialisiert.&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;S r,s,o;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;/&lt;span class=367383419-21112005&gt;/ &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;Jede
Menge Hilfsvariablen und das Kartendeck "a".&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int&lt;/font&gt; i,t,v,x,y,l,p,q;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;int&lt;/font&gt;[]a=&lt;font color=#0000ff&gt;new&lt;/font&gt; &lt;font color=#0000ff&gt;int&lt;/font&gt;[&lt;font color=#808000&gt;54&lt;/font&gt;];&lt;/font&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#0000ff&gt;&lt;font size=2&gt;&lt;font color=#008000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
Hier werden j Karten k mal verschoben&lt;/font&gt;
&lt;br&gt;
&lt;span class=367383419-21112005&gt;&lt;font color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font color=#008000&gt;//
in "x" und "y" werden die Positionen der Joker aktualisiert&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt; M(int
j,int k)&lt;br&gt;
&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for&lt;/font&gt;(;j--&amp;gt;&lt;font color=#808000&gt;0&lt;/font&gt;;y+=y&amp;lt;&lt;font color=#808000&gt;1&lt;/font&gt;?k:y&amp;gt;k?&lt;font color=#808000&gt;0&lt;/font&gt;:-&lt;font color=#808000&gt;1&lt;/font&gt;,x+=x&amp;lt;&lt;font color=#808000&gt;1&lt;/font&gt;?k:x&amp;gt;k?&lt;font color=#808000&gt;0&lt;/font&gt;:-&lt;font color=#808000&gt;1&lt;/font&gt;)&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for&lt;/font&gt;(t=a[i=&lt;font color=#808000&gt;0&lt;/font&gt;];i&amp;lt;k;a[i]=t)&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;a[i++]=a[i];&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return&lt;/font&gt; ++v&amp;gt;&lt;font color=#808000&gt;5&lt;/font&gt;?k:v%&lt;font color=#808000&gt;2&lt;/font&gt;&amp;gt;&lt;font color=#808000&gt;0&lt;/font&gt;?M(&lt;font color=#808000&gt;1&lt;/font&gt;,k%&lt;font color=#808000&gt;53&lt;/font&gt;+&lt;font color=#808000&gt;1&lt;/font&gt;):M(y,y);&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt; 
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
GenerateKeyStream generiert nicht nur den KeyStream sondern&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
auch gleich die verschlüsselte Nachricht&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;&lt;font size=2&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000 size=2&gt; S GenerateKeyStream(S
P,S m)&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
Bei der Initialisierung wird gleichzeitig "P" mit Ziffern angefüllt.&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;//
Damit ist es möglich beide Teile des Algorithmus, also über den ganzen&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;//
string "P" und bis die benötigte KeyStream-Länge erreicht ist, in&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;//
einer einzigen Schleife abzuarbeiten.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;for&lt;/font&gt;(y=l=p=&lt;font color=#808000&gt;0&lt;/font&gt;;y&amp;lt;&lt;font color=#808000&gt;53&lt;/font&gt;;P+=a[x=y]=a[++y]=y)&lt;br&gt;
&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;o+=(&lt;font color=#0000ff&gt;char&lt;/font&gt;)(y%&lt;font color=#808000&gt;26&lt;/font&gt;+&lt;font color=#808000&gt;65&lt;/font&gt;);&lt;/font&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt; 
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;//
Und hier wird nun endlich der ganze Algorithmus aufgerufen.&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
Der momentane Buchstabe in "P" wird auf Kartendeckwert runter-&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
gerechnet und in "q" gespeichert.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
War es ein Grossbuchstabe, dann ist q &amp;gt; 0 und die strings werden&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
nicht verändert.&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
War es eine der angehängten Ziffern, dann sind wird durch "P"&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
durch und können anfangen die strings zu basteln.&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
Wenn die Nachricht vieeeel länger als das passwort ist, kann es&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
allerdings sein, dass die angehängten Ziffern mengenmässig nicht&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
reichen (war bei mir anfangs der Fall) - dann kann "P" auch direkt&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
im if verlängert werden - kostet allerdings noch ein Byte extra&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
und wenns dem Tester so genügt ...&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;&lt;font size=2&gt;for&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;(r=s=&lt;/font&gt;&lt;font color=#ff0000&gt;""&lt;/font&gt;&lt;font color=#000000&gt;;l&amp;lt;m.Length;)&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if&lt;/font&gt;&lt;font color=#000000&gt;(M(q=P[p++]-&lt;/font&gt;&lt;font color=#808000&gt;64&lt;/font&gt;&lt;font color=#000000&gt;,M(a[M(M(x&amp;lt;M(x,x)?x:y,x&amp;gt;y?x:y)+&lt;/font&gt;&lt;font color=#808000&gt;1&lt;/font&gt;&lt;font color=#000000&gt;,&lt;/font&gt;&lt;font color=#808000&gt;53&lt;/font&gt;&lt;font color=#000000&gt;)],&lt;/font&gt;&lt;font color=#808000&gt;52&lt;/font&gt;&lt;font color=#000000&gt;))&amp;gt;(i=a[a[v=&lt;/font&gt;&lt;font color=#808000&gt;0&lt;/font&gt;&lt;font color=#000000&gt;]]-&lt;/font&gt;&lt;font color=#808000&gt;1&lt;/font&gt;&lt;font color=#000000&gt;)&amp;amp;q&amp;lt;&lt;/font&gt;&lt;font color=#808000&gt;1&lt;/font&gt;&lt;font color=#000000&gt;)&lt;br&gt;
&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000 size=2&gt;{&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;span class=367383419-21112005&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000 size=2&gt;s+=o[i];&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;r+=o[m[l++]-&lt;/font&gt;&lt;font color=#808000&gt;64&lt;/font&gt;&lt;font color=#000000&gt;+i%&lt;/font&gt;&lt;font color=#808000&gt;26&lt;/font&gt;&lt;font color=#000000&gt;];&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt; 
&lt;p&gt;
&lt;font color=#008000&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
Ab jetzt is&lt;span class=367383419-21112005&gt;s&lt;/span&gt;es wirklich selbsterklärend.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&lt;/font&gt;
&lt;/span&gt;&lt;font size=2&gt;eturn&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000 size=2&gt; s;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public&lt;/font&gt; S
EncryptData(S m,S k)&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#0000ff&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return&lt;/font&gt; r;&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;&lt;span class=367383419-21112005&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;font size=2&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;h2&gt;Platz 2, Franz Polzer
&lt;/h2&gt;
&lt;p&gt;
&lt;!--StartFragment --&gt;Eigentlich ist der Code sowieso selbsterklaerend :)&lt;br&gt;
&lt;br&gt;
c&amp;nbsp; Kartendeck&lt;br&gt;
d&amp;nbsp; Keystream&lt;br&gt;
e&amp;nbsp; Encrypted Message&lt;br&gt;
f&amp;nbsp; lookup Table um (char) typecast und Offset von 'A' zu sparen&lt;br&gt;
i&amp;nbsp; Startposition des zu verschiebenden Bereichs&lt;br&gt;
z&amp;nbsp; Zielposition des zu verschiebenden Bereichs&lt;br&gt;
&lt;br&gt;
using S=System.String;&lt;br&gt;
public class Tee&lt;br&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
S c,d,e,f;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
int i,z;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
char j,u,l='A',a,b='5';&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
public S GenerateKeyStream(S p,S m)&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Initialisieren des Kartendecks und der Lookup-Table&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
for(;a&amp;lt;54;c+=++a)f+=l++;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Solange bis die Message encrypted ist&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
for(;u&amp;lt;m.Length;)&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Move der beiden Joker&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
for(l=b;l&amp;lt;=a;M(1))&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
z=((i=c.IndexOf(l))+l++)%b+1;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Triple Cut&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
S[]k=c.Split(b,a);&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
c=k[2]+c.Trim((k[0]+k[2]).ToCharArray())+k[i=0];&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Countcut mit letztem Zeichen&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
z=52;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
M(c[b]);&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
try&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Countcut mit Passphrase solange noch 
&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// ein Zeichen da ist.&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Sonst -&amp;gt; Exception&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
M(p[j++]%64);&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
catch&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Auslesen des Zeichens fuer Keystream&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// und erzeugen der encrypted Message&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
if(b&amp;gt;(i=c[c[0]&amp;gt;b?b:c[0]]))&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
e+=f[(m[u]+(d+=f[--i%26])[u++]+1)%26];&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Keystream zurueckgeben&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
return d;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
public S EncryptData(S m,S p)&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// Einfach die vorher berechnete Message zurueckgeben&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
return e;&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
void M(int y)&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
{&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
// verschieben von y Zeichen von i nach z&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
c=c.Remove(i,y).Insert(z&amp;lt;i?z:z-y+1,c.Substring(i,y));&lt;br&gt;
&lt;X-TAB&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/X-TAB&gt;
}&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
So, das war's eigentlich schon!
&lt;/p&gt;
&lt;h2&gt;Platz 1, Thomas Gatterweh
&lt;/h2&gt;
&lt;p&gt;
&lt;!--StartFragment --&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
Die Idee.&lt;br&gt;
Alle Veränderungen im Kartenstapel können durch eine Funktion ausgedrückt werden:
Das Verschieben einer oder mehrerer Karten an eine andere Position im Stapel. Es müssen
nur mehr die jeweiligen Start-, End- und Zielpositionen berechnet werden. &lt;/font&gt;&lt;font face=Wingdings color=#008000 size=2&gt;J&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;&amp;nbsp;&lt;br&gt;
Die Joker.&lt;br&gt;
Um ein Zeichen (";") zu sparen, wird die erste Jokerverschiebung nicht als erstes
in der Schleife gemacht, sondern als letztes (im "for"). Das ist insofern möglich,
da diese erste Jokerverschiebung im allerersten Durchlauf lediglich die beiden Joker
vertauscht. (Der Stapel ist ja frisch aufgebaut.) Damit kann ich diese Vertauschung
weglassen, und muss jetzt nur die Bedeutung von Joker #1 und #2 vertauschen. Deshalb
hat Joker #1 den Wert 54 ("6") und Joker #2 den Wert 53 ("5").&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Das Green.&lt;br&gt;
Es lässt sich folgendes herausfinden:&lt;br&gt;
a) Die Klasse "Tee" wird jeweils nur zum Verschlüsseln einer einzigen Nachricht benutzt.
==&amp;gt; Ich verwende soweit wie möglich die Defaultinitialisierung von Klassenelementen,
z.B. int wird als 0 initialisiert.&lt;br&gt;
b) "GenerateKeyStream" und "EncryptData" wird immer 'korrekt' paarweise benutzt. ==&amp;gt;
Die Nachricht kann schon in "GenerateKeyStream" verschlüsselt werden. Die Parameter
von "EncryptData" setzte ich einfach als korrekt voraus.&lt;br&gt;
*/&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;using&lt;/font&gt;&lt;font face=Verdana size=2&gt; S
= System.String;&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font face=Verdana size=2&gt; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;class&lt;/font&gt;&lt;font face=Verdana size=2&gt; Tee&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "a" enthält in den ersten 54 Zeichen
den Kartenstapel; der Rest bis Zeichen 90="Z" wird zum Wandeln einer Zahl in ein Zeichen
verwendet.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "k" ist der KeyStream.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "e" ist die verschlüsselte Nachricht.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
S a, k, e;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "i" ist die Position des Jokers #1,
"j" die des Jokers #2. "j" wird gleich am Anfang gebraucht und muss initialisiert
werden.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font face=Verdana size=2&gt; h,
i, j = 52, l, n;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "x" enthält a) das Zeichen des Jokers
#2 (siehe oben) und auch b) 53, d.h., 1-Anzahl der Karten.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "y" enthält in der Hauptschleife
a) das Zeichen des Jokers #1 und auch b) 54, d.h., die Anzahl der Karten.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zuerst wird "y" allerdings zum Initialisieren
von "a" verwendet. Der Defaultwert von 0 passt dafür hervorragend.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;char&lt;/font&gt;&lt;font face=Verdana size=2&gt; x
= &lt;/font&gt;&lt;font face=Verdana color=#ff00ff size=2&gt;'5'&lt;/font&gt;&lt;font face=Verdana size=2&gt;,
y;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "EncryptData" liefert nur mehr die
bereits generierte verschlüsselt Nachricht zurück.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
*/&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font face=Verdana size=2&gt; S
EncryptData( S m, S k )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font face=Verdana size=2&gt; e;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "C" verschiebt einen Kartenstapel,
gegeben durch die Position "s" der ersten Karte und "e" der letzten Karte (exklusiv),
an die Position "z".&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ist "s" größer oder gleich "e", wird
nichts verschoben.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "i" und "j" wird mit der neuen Position
des 1. und 2. Jokers aktualisiert.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font face=Verdana size=2&gt; C( &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font face=Verdana size=2&gt; s, &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font face=Verdana size=2&gt; e, &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font face=Verdana size=2&gt; z
)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
a = a.Remove( s, e -= s &amp;lt; e ? s : e ).Insert( z, a.Substring( s, e ));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
i = a.IndexOf( y );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
j = a.IndexOf( x );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;/*&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "GenerateKeyStream" verschlüsselt
auch noch gleich die Nachricht und hebt sich das Ergebnis für "EncryptData" auf.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font face=Verdana size=2&gt; S
GenerateKeyStream( S p, S m )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Ein Kartenstapel muss her...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;for&lt;/font&gt;&lt;font face=Verdana size=2&gt;(
; y &amp;lt; 90; )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
a += ++y;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Jetzt noch schnell "y" initialisiert, und dann kann es losgehen bis alle Zeichen da
sind...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;for&lt;/font&gt;&lt;font face=Verdana size=2&gt;(
y = &lt;/font&gt;&lt;font face=Verdana color=#ff00ff size=2&gt;'6'&lt;/font&gt;&lt;font face=Verdana size=2&gt;;
n &amp;lt; m.Length; C( i, 1 + i, i % x + 1 ))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Jokerverschiebung (am Ende des "for" für Joker #1, bzw hier für Joker #2)&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Von alter Jokerposition eine Karte an die neue Position verschieben.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
C( j, ++j, j % x + 1 );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
TripleCut in zwei Schritten...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Wo ist der vordere Joker? 
&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
h = i &amp;lt; j ? i : j;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
1. Schritt: Die Karten von der Karte nach dem hinteren Joker (wenn "h" der vordere
ist, dann ist "i+j-h" der hintere!) bis zum Ende an die Position vor dem vorderen
Joker verschieben.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
C( i + j - h + 1, y, h );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
2. Schritt: Die Karten vom Anfang bis zum (ursprünglichen) vorderen Joker ans Ende
verschieben.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
C( 0, h, y - h );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
CountCut gemäßder letzten Karte&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Invers zur Beschreibung: Ich verschiebe nicht die N ersten Karten unmittelbar vor
die letzte Karte, sondern verschiebe die Karten von der N-ten bis zur vorletzten an
den Anfang.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
C( a[ x ], x, 0 );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;try&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
CountCut nach dem nächsten Zeichen in der PassPhrase. Gibt's dort keines (mehr), geht's
per Ausnahme zur Ausgabe...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
C( p[ l++ ] - 64, x, 0 );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;catch&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Ausgabekarte holen, und wenn kein Joker...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
h = a[ a[ 0 ] &amp;lt; x ? a[ 0 ] : x ];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font face=Verdana size=2&gt;(
h &amp;lt; x )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
...dann Message verschlüsseln...&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
e += a[( h + 13 + m[ n++ ]) % 26 + 64 ];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
...und KeyStream erzeugen.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
k += a[ --h % 26 + 64 ];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#008000 size=2&gt;//
Beide Male wird der unverändert bleibende Teil des Kartenstapels (alles außer den
ersten 54 Zeichen) zum Umwandeln des Kartenwertes in ein Zeichen verwendet.&lt;br&gt;
&lt;/font&gt;&lt;font face=Verdana size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face=Verdana color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font face=Verdana size=2&gt; k;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=92fc0310-a551-4ae5-94ad-86fdcab08093" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,92fc0310-a551-4ae5-94ad-86fdcab08093.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=31f7a624-0d13-4c66-91e8-3bd2b8bf67d4</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,31f7a624-0d13-4c66-91e8-3bd2b8bf67d4.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,31f7a624-0d13-4c66-91e8-3bd2b8bf67d4.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=31f7a624-0d13-4c66-91e8-3bd2b8bf67d4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Seit 23 Uhr läuft das <a href="http://codefairway.net/de/currenthole.aspx">aktuelle
Golfturnier</a>, das diesmal (a) anspruchsvoll ist, (b) ensprechend Zeit läßt, (c)
schöne Preise für die Gewinner bietet. Bernd und Ich freuen uns, das zusammen mit
Mario Szpuszta von MS Österreich auf die Füße gestellt zu haben. Viel Spaß!<img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=31f7a624-0d13-4c66-91e8-3bd2b8bf67d4" /></body>
      <title>Solitaire Encryption: The MSDN Contest</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,31f7a624-0d13-4c66-91e8-3bd2b8bf67d4.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,31f7a624-0d13-4c66-91e8-3bd2b8bf67d4.aspx</link>
      <pubDate>Fri, 30 Sep 2005 21:30:36 GMT</pubDate>
      <description>Seit 23 Uhr läuft das &lt;a href="http://codefairway.net/de/currenthole.aspx"&gt;aktuelle
Golfturnier&lt;/a&gt;, das diesmal (a) anspruchsvoll ist, (b) ensprechend Zeit läßt, (c)
schöne Preise für die Gewinner bietet. Bernd und Ich freuen uns, das zusammen mit
Mario Szpuszta von MS Österreich auf die Füße gestellt zu haben. Viel Spaß!&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=31f7a624-0d13-4c66-91e8-3bd2b8bf67d4" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,31f7a624-0d13-4c66-91e8-3bd2b8bf67d4.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=69d96e9e-3ba9-4f46-96ca-c59171146800</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,69d96e9e-3ba9-4f46-96ca-c59171146800.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,69d96e9e-3ba9-4f46-96ca-c59171146800.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=69d96e9e-3ba9-4f46-96ca-c59171146800</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So lautet die Aufgabe des <a href="http://codefairway.net/de/currenthole.aspx">aktuellen
Golfturniers</a>. Mal sehen, ob die Golfer das auch so sehen. Jedenfalls haben sie
von jetzt an gerechnet eine Woche Zeit, ihre Golftricks auszupacken.
</p>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=69d96e9e-3ba9-4f46-96ca-c59171146800" />
      </body>
      <title>Sortieren ist einfach!</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,69d96e9e-3ba9-4f46-96ca-c59171146800.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,69d96e9e-3ba9-4f46-96ca-c59171146800.aspx</link>
      <pubDate>Wed, 17 Aug 2005 12:58:27 GMT</pubDate>
      <description>&lt;p&gt;
So lautet die Aufgabe des &lt;a href="http://codefairway.net/de/currenthole.aspx"&gt;aktuellen
Golfturniers&lt;/a&gt;. Mal sehen, ob die Golfer das auch so sehen. Jedenfalls haben sie
von jetzt an gerechnet eine Woche Zeit, ihre Golftricks auszupacken.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=69d96e9e-3ba9-4f46-96ca-c59171146800" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,69d96e9e-3ba9-4f46-96ca-c59171146800.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
      <category>Community Sites</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=044535a3-a416-4630-96a3-ff87b2293c5c</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,044535a3-a416-4630-96a3-ff87b2293c5c.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,044535a3-a416-4630-96a3-ff87b2293c5c.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=044535a3-a416-4630-96a3-ff87b2293c5c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Am Mittwoch um 15 Uhr startet ein neues <a href="http://codefairway.net/de/">Golfturnier</a>!
Ihr könnt schon mal die Golfschläger polieren und Euch auf ein rasantes, einwöchiges
Turnier einstellen.
</p>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=044535a3-a416-4630-96a3-ff87b2293c5c" />
      </body>
      <title>Das nächste Golfturnier steht vor der Tür</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,044535a3-a416-4630-96a3-ff87b2293c5c.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,044535a3-a416-4630-96a3-ff87b2293c5c.aspx</link>
      <pubDate>Sun, 14 Aug 2005 13:48:02 GMT</pubDate>
      <description>&lt;p&gt;
Am Mittwoch um 15 Uhr startet ein neues &lt;a href="http://codefairway.net/de/"&gt;Golfturnier&lt;/a&gt;!
Ihr könnt schon mal die Golfschläger polieren und Euch auf ein rasantes, einwöchiges
Turnier einstellen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=044535a3-a416-4630-96a3-ff87b2293c5c" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,044535a3-a416-4630-96a3-ff87b2293c5c.aspx</comments>
      <category>BLfH</category>
      <category>Community Sites</category>
      <category>.NET Golf</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=a73d93c6-cc49-49f5-b2a0-bdcc9d89929f</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,a73d93c6-cc49-49f5-b2a0-bdcc9d89929f.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,a73d93c6-cc49-49f5-b2a0-bdcc9d89929f.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a73d93c6-cc49-49f5-b2a0-bdcc9d89929f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Nach langer Wartezeit ist es so weit - das allseits beliebte ASP Golf wird nun seine
Fortsetzung auf der .NET Plattform finden, und zwar auf dem <a href="http://www.codefairway.net/de/">CodeFairway</a>.
Die Web Applikation stammt von <a href="http://blogs.dotnetgerman.com/alexonasp.net/">Alex
Zeitler</a> (ein dickes Dankeschön an dieser Stelle, er hat da so einiges an Zeit
investiert), den Tester darf sich der BLfH anrechnen (zugegebenermaßen der weitaus
leichtere Teil). Im Moment spielen wir ein Testturnier, um dem Grün den letzten Schliff
zu geben - sowohl von der User- als auch der Adminperspektive aus.
</p>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=a73d93c6-cc49-49f5-b2a0-bdcc9d89929f" />
      </body>
      <title>Willkommen am CodeFairway!</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,a73d93c6-cc49-49f5-b2a0-bdcc9d89929f.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,a73d93c6-cc49-49f5-b2a0-bdcc9d89929f.aspx</link>
      <pubDate>Mon, 03 Jan 2005 16:03:08 GMT</pubDate>
      <description>&lt;p&gt;
Nach langer Wartezeit ist es so weit - das allseits beliebte ASP Golf wird nun seine
Fortsetzung auf der .NET Plattform finden, und zwar auf dem &lt;a href="http://www.codefairway.net/de/"&gt;CodeFairway&lt;/a&gt;.
Die Web Applikation stammt von &lt;a href="http://blogs.dotnetgerman.com/alexonasp.net/"&gt;Alex
Zeitler&lt;/a&gt; (ein dickes Dankeschön an dieser Stelle, er hat da so einiges an Zeit
investiert), den Tester darf sich der BLfH anrechnen (zugegebenermaßen der weitaus
leichtere Teil). Im Moment spielen wir ein Testturnier, um dem Grün den letzten Schliff
zu geben - sowohl von der User- als auch der Adminperspektive aus.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=a73d93c6-cc49-49f5-b2a0-bdcc9d89929f" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,a73d93c6-cc49-49f5-b2a0-bdcc9d89929f.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
      <category>Community Sites</category>
    </item>
    <item>
      <trackback:ping>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/Trackback.aspx?guid=54e285b7-3e09-4dad-8460-2ab11270c92d</trackback:ping>
      <pingback:server>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,54e285b7-3e09-4dad-8460-2ab11270c92d.aspx</pingback:target>
      <dc:creator>BLfH</dc:creator>
      <wfw:comment>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,54e285b7-3e09-4dad-8460-2ab11270c92d.aspx</wfw:comment>
      <wfw:commentRss>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/SyndicationService.asmx/GetEntryCommentsRss?guid=54e285b7-3e09-4dad-8460-2ab11270c92d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Attachment zu diesem Blogeintrag zeige ich wie ich mir ein .NET Golfturnier vorstelle,
der eigentliche Tester und der Abschlag des Golfers sind hierbei für das einfachere
Verständnis miteinander gemischt.
</p>
        <p>
          <br />
In der <a href="http://www.icsharpcode.net/opensource/sd/">#develop</a> Combine sind
3 Projekte enthalten:<br /><br />
* Tees: da drinnen sind die Interfaces definiert, dagegen linkt jede Aufgabe. Pro
Aufgabe gibt es ein Interface das von ITee ableitet (für spätere Erweiterungen im
Tester gedacht). Das aktuelle Turnier ist durch ITeeGroupTransform abgebildet.<br /><br />
* GroupTransformTeeOffSample: hier habe ich Peter's Schlag in den Bunker implementiert,
in der Datei TeeOff.cs. Die Klasse *muß* immer Tee heißen sowie das Turnierinterface
implementieren. Der Rest ist Sache des Golfers...<br /><br />
* GroupTransformTester: das ist unsere (Referee) Applikation. Im echten Leben wird
das alles von der Kommandozeile aus gemacht: TeeOff.cs [oder wie auch immer die Einreichung
des Golfers dann heißt], Interfaces.cs und Tester.cs werden mittels csc zu einer Assembly
kompiliert, und dann vom Kommandozeilen-NUnit getestet. Der Einfachheit halber verwende
ich heute aber das NUnitPad das im aktuellen #develop drinnen ist (<a href="http://svn.sharpwt.net/dev/" eudora="autourl">http://svn.sharpwt.net/dev/</a>).
Damit wird es perfekt automatisierbar.
</p>
        <p>
Das ist einmal die Basis - Reflection und dynamisches Laden einer Assembly habe ich
mir mit dieser Lösung erspart. Kommentare?
</p>
        <a href="/content/binary/DotNetGolf.zip">DotNetGolf.zip (18.2 KB)</a>
        <img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=54e285b7-3e09-4dad-8460-2ab11270c92d" />
      </body>
      <title>.NET Golf</title>
      <guid isPermaLink="false">http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,54e285b7-3e09-4dad-8460-2ab11270c92d.aspx</guid>
      <link>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/PermaLink,guid,54e285b7-3e09-4dad-8460-2ab11270c92d.aspx</link>
      <pubDate>Tue, 27 Apr 2004 13:40:03 GMT</pubDate>
      <description>&lt;p&gt;
Im Attachment zu diesem Blogeintrag zeige ich wie ich mir ein .NET Golfturnier vorstelle,
der eigentliche Tester und der Abschlag des Golfers sind hierbei für das einfachere
Verständnis miteinander gemischt.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
In der &lt;a href="http://www.icsharpcode.net/opensource/sd/"&gt;#develop&lt;/a&gt; Combine sind
3 Projekte enthalten:&lt;br&gt;
&lt;br&gt;
* Tees: da drinnen sind die Interfaces definiert, dagegen linkt jede Aufgabe. Pro
Aufgabe gibt es ein Interface das von ITee ableitet (für spätere Erweiterungen im
Tester gedacht). Das aktuelle Turnier ist durch ITeeGroupTransform abgebildet.&lt;br&gt;
&lt;br&gt;
* GroupTransformTeeOffSample: hier habe ich Peter's Schlag in den Bunker implementiert,
in der Datei TeeOff.cs. Die Klasse *muß* immer Tee heißen sowie das Turnierinterface
implementieren. Der Rest ist Sache des Golfers...&lt;br&gt;
&lt;br&gt;
* GroupTransformTester: das ist unsere (Referee) Applikation. Im echten Leben wird
das alles von der Kommandozeile aus gemacht: TeeOff.cs [oder wie auch immer die Einreichung
des Golfers dann heißt], Interfaces.cs und Tester.cs werden mittels csc zu einer Assembly
kompiliert, und dann vom Kommandozeilen-NUnit getestet. Der Einfachheit halber verwende
ich heute aber das NUnitPad das im aktuellen #develop drinnen ist (&lt;a href="http://svn.sharpwt.net/dev/" eudora="autourl"&gt;http://svn.sharpwt.net/dev/&lt;/a&gt;).
Damit wird es perfekt automatisierbar.
&lt;/p&gt;
&lt;p&gt;
Das ist einmal die Basis - Reflection und dynamisches Laden einer Assembly habe ich
mir mit dieser Lösung erspart. Kommentare?
&lt;/p&gt;
&lt;a href="/content/binary/DotNetGolf.zip"&gt;DotNetGolf.zip (18.2 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/aggbug.ashx?id=54e285b7-3e09-4dad-8460-2ab11270c92d" /&gt;</description>
      <comments>http://www.himmelherrgottsakramentzefixhallelujascheissglumpatverreckts.com/CommentView,guid,54e285b7-3e09-4dad-8460-2ab11270c92d.aspx</comments>
      <category>.NET Golf</category>
      <category>BLfH</category>
    </item>
  </channel>
</rss>