<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Design, game of life]]></title><description><![CDATA[<p>Hallo, ich möchte conway's spiel des lebens umsetzen. Ich brauch ja wohl 2 arrays oder vektoren mit zellen (temp für neue Generation). Würdet ihr ein array mit booleans oder mit struct/ class von zellen füllen. Ich hab angst vor geschwindigkeitsverlust bei etwas wie:</p>
<pre><code class="language-cpp">class Cell{;;}; 
Cell cells[300][300];
</code></pre>
<p>90000 bools oder cells?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228818/design-game-of-life</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 10:10:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228818.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Dec 2008 08:43:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 08:43:22 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte conway's spiel des lebens umsetzen. Ich brauch ja wohl 2 arrays oder vektoren mit zellen (temp für neue Generation). Würdet ihr ein array mit booleans oder mit struct/ class von zellen füllen. Ich hab angst vor geschwindigkeitsverlust bei etwas wie:</p>
<pre><code class="language-cpp">class Cell{;;}; 
Cell cells[300][300];
</code></pre>
<p>90000 bools oder cells?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624748</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 08:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 08:51:42 GMT]]></title><description><![CDATA[<p>conway schrieb:</p>
<blockquote>
<p>Hallo, ich möchte conway's spiel des lebens umsetzen. Ich brauch ja wohl 2 arrays oder vektoren mit zellen (temp für neue Generation).</p>
</blockquote>
<p>Brauchst du? Das was du geschrieben hast sind aber nicht 2 Arrays sonder ein zweidimensionales Array.</p>
<blockquote>
<p>Würdet ihr ein array mit booleans oder mit struct/ class von zellen füllen.</p>
</blockquote>
<p>Falls das eine Frage ist: kommt drauf an. Ist eine Designfrage, hängt also davon ab was ich umsetzen will und wie. Vermutlich würde ich aber nicht auf ein Array sondern auf einen der Standardcontainer zurückgreifen.</p>
<blockquote>
<p>Ich hab angst vor geschwindigkeitsverlust bei etwas wie:</p>
<pre><code class="language-cpp">class Cell{;;}; Cell cells[300][300];
</code></pre>
<p>90000 bools oder cells?</p>
</blockquote>
<p>Die Größe hat an sich erstmal nichts mit Geschwindigkeit sondern mit Speicherplatz zu tun. Bei ungünstigen Algorithmen kann sich das natürlich auf die Geschwindigkeit auswirken. Allerdings sollte man sich grundsätzlich erstmal einen gut skalierenden Algorithmus überlegen und sich danach dann KEINE Gedanken über Geschwindigkeiten machen, bis einem die Tests und der Profiler erzählen, dass es genau an der Stelle Probleme gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624756</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 03 Dec 2008 08:51:42 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 08:56:46 GMT]]></title><description><![CDATA[<p>Ich brauch 2 2d arrays. Das erste ist aktuell. Das 2te die nächste generation. Also 180k einträge die auch noch geswapt werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624762</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 08:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 09:13:31 GMT]]></title><description><![CDATA[<p>conway schrieb:</p>
<blockquote>
<p>Ich brauch 2 2d arrays. Das erste ist aktuell. Das 2te die nächste generation. Also 180k einträge die auch noch geswapt werden</p>
</blockquote>
<p>Wie gesagt hat das etwas mit Speicherplatz zu tun, aber auch das ist da nicht wirklich ein Problem. Für die Geschwindigkeit spielt es kaum eine Rolle, ob du da jetzt Cells, oder bools hast. (Ausser der Zugriff stellt sich schlussendlich als der Flaschenhals heraus). Aber wie gesagt mach dir da mal keine Gedanken. Programmiers und dann schau am Schluss, ob es wirklich etwas ausmacht. So am Anfang kann man das schwer sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624775</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Dec 2008 09:13:31 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 09:27:29 GMT]]></title><description><![CDATA[<p>Hey, danke für die schnellen antworten. Der speicherplatz für klasseninstanzen müsste reichen. Mal ausrechnen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624794</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 09:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 09:59:43 GMT]]></title><description><![CDATA[<p>wenn ich mich recht erinnere gehts beim Spiel des Lebens darum, dass eine Zelle ihren neuen Zustand aus den alten Zuständen der 4 unmittelbaren Nachbarzellen berechnet. Ich würde da eine einzelne Datenstruktur nehmen, in dem Fall vermutlich sogar tatsächlich ein Array:</p>
<pre><code class="language-cpp">size_t width = 300, height = 300;
Cell* cells = new Cell[2][width][height];

for (int i = 0; i &lt; width; ++i)
for (int j = 0; j &lt; height; ++j)
{
  //fülle cells[0][i][j] mit Initialwerten
}

for (size_t n = 0; n &lt;= (num_steps/2)+1; ++n)
{
  for (int i = 0; i &lt; width; ++i)
  for (int j = 0; j &lt; height; ++j)
  {
    //berechne cells[1][i][j] aus cells[0][i-1][j], cells[0][i][j+1] usw.
  }
  draw(cells[1]);

  if (num_steps % 2) break; 

  for (int i = 0; i &lt; width; ++i)
  for (int j = 0; j &lt; height; ++j)
  {
    //berechne cells[0][i][j] aus cells[1][i-1][j], cells[1][i][j+1] usw.
  }
  draw(cells[0]);
}

delete[] cells;
</code></pre>
<p>Das Ganze ist übrigens eine nette Aufgabe für Parallelisierung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624817</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 03 Dec 2008 09:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 10:16:58 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>wenn ich mich recht erinnere gehts beim Spiel des Lebens darum, dass eine Zelle ihren neuen Zustand aus den alten Zuständen der 4 unmittelbaren Nachbarzellen berechnet.</p>
</blockquote>
<p>Sogar alle 8 nachbarn sind entscheidend. Btw danke, aber deinen code kann ich auf dem handy zzt schwer entziffern. Bin mal gespannt.<br />
Erste kopfrechnungen ergeben: array bool ca 180 KB, mit etwa 100B instanzen ~18 mb, hui</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624828</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 10:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 11:25:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Erste kopfrechnungen ergeben: array bool ca 180 KB, mit etwa 100B instanzen ~18 mb, hui</p>
</blockquote>
<p>Warum soll eine Instanz 100 B(yte?) gross sein?! Oder verstehe ich deine Aussage falsch? Wenn du nicht schon direkt bool Arrays benutzt, dann wirst du eh nicht viel speichern müssen. Das sollte also nicht soo viel ausmachen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624859</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Dec 2008 11:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 11:35:03 GMT]]></title><description><![CDATA[<p>Kannst natürlich um Speicher zu sparen mit std::vector&lt;bool&gt; oder std::bitset&lt;90000&gt; arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624868</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 03 Dec 2008 11:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 14:45:55 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Warum soll eine Instanz 100 B(yte?) gross sein?!</p>
</blockquote>
<p>Hast Recht, war ein bissel viel.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Das Ganze ist übrigens eine nette Aufgabe für Parallelisierung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Meinst Du das allgemein oder um Performance zu sparen?</p>
<p>Denn <a href="http://www.hwi-zartbitter.de/archiv/zb0399/seite90.htm" rel="nofollow">hier</a>steht:</p>
<blockquote>
<p>Der Hauptgedanke des Spieles besteht darin, daß Leben und Tod gleichzeitig und nicht nacheinander auftreten. Die Regeln werden auf die gegebene Spielsituation angewandt, indem man nacheinander alle Felder untersucht und diese als Überlebende, als Opfer oder als Geburt kennzeichnet. <strong>Auf einen Schlag ergeben sich alle Veränderungen, und eine neue Generation entsteht.</strong></p>
</blockquote>
<p>Ich habe ein Javaprogramm gesehen wo threads &quot;lediglich&quot; zur performancesteigerung genutzt werden. Da wird das spielfeld durch 2,4 oder 8 (etc) geteilt. Die einzelnen Felder werden vom Nachbarn geweckt wenn sie veränderungen haben. die steuerung machen dann threads</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624976</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 14:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 17:53:06 GMT]]></title><description><![CDATA[<p>conway schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Das Ganze ist übrigens eine nette Aufgabe für Parallelisierung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Meinst Du das allgemein oder um Performance zu sparen?</p>
</blockquote>
<p>Sowohl als auch. Derartige Berechnungen, wo wie hier alle Elemente einer Matrix quasi gleichzeitig berechnet werden lassen sich relativ einfach parallelisieren und sind daher häufig als Beispiel und/oder Übungsaufgabe in den entsprechenden Büchern und Vorlesungen anzutreffen. Natürlich macht in einer &quot;echten&quot; Anwendung parallelisierung nur dann Sinn wenn das Programm dann wirklich performanter läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625050</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 03 Dec 2008 17:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 18:41:25 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Sowohl als auch. Derartige Berechnungen, wo wie hier alle Elemente einer Matrix quasi gleichzeitig berechnet werden lassen sich relativ einfach parallelisieren.</p>
</blockquote>
<p>das werde ich im hinterkopf behalten.</p>
<p>Danke an alle.<br />
Ich habe das grundgerüst des spiels in knapp 1 stunde aufgebaut.<br />
2 array's waren überflüssig. In der klasse gibts dafürn bool act und bool next.</p>
<p><strong>Wie kann ich diesen Thread als gelöst markieren?</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625069</guid><dc:creator><![CDATA[conway]]></dc:creator><pubDate>Wed, 03 Dec 2008 18:41:25 GMT</pubDate></item><item><title><![CDATA[Reply to Design, game of life on Wed, 03 Dec 2008 19:13:42 GMT]]></title><description><![CDATA[<p>conway schrieb:</p>
<blockquote>
<p><strong>Wie kann ich diesen Thread als gelöst markieren?</strong></p>
</blockquote>
<p>indem du deinen ersten Betrag editierst und den Titel entsprechend änderst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625089</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 03 Dec 2008 19:13:42 GMT</pubDate></item></channel></rss>