[QUIZ#7] Johns Hefe

Nimmst Du an dieser Quiz-Runde teil (generelles Interesse vorausgesetzt)?

  • Ja, ich werde eine Lösung abgeben.

    Abstimmungen: 7 35,0%
  • Nein, weil mir die Zeit dazu fehlt.

    Abstimmungen: 9 45,0%
  • Nein, weil mir die Aufgabe zu schwierig erscheint.

    Abstimmungen: 3 15,0%
  • Nein, weil mich die Aufgabe zu sehr unterfordert.

    Abstimmungen: 0 0,0%
  • Nein, weil die Aufgabenstellung unklar ist (bitte im Thema angeben!).

    Abstimmungen: 0 0,0%
  • Nein, aus anderen Gründen (bitte im Thema angeben!).

    Abstimmungen: 1 5,0%

  • Anzahl der Umfrageteilnehmer
    20
  • Umfrage geschlossen .
Quiz #7
Johns Hefe

Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.

Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist Sonntag, der 7. Dezember 2008 um ca. 20 Uhr.

Umfrage
Sofern ihr generelles Interesse an der Teilnahme an dieser Quiz-Runde habt, nehmt bitte an der Umfrage in diesem Thema teil. Nur so kann sich die Qualität des Quiz' in Zukunft verbessern.

Das Problem
"Weihnachtszeit ist Plätzchenzeit!", dachte sich John, der Molekularbiologe. Doch irgendwie wollten ihm seine Hefeteig-Plätzchen dieses Jahr einfach nicht gelingen. Einmal wurden sie zu groß, weil die Hefe zu sehr ging und das nächste Mal wurden sie wieder zu klein, weil die Hefe eben nicht ging. Das lag bestimmt an der schlechten Qualität der Hefe aus dem Supermarkt, mutmaßte John. Aber er wäre ja kein Molekularbiologe, wenn er sich nicht sofort dran gemacht hätte, in seinem Labor eine vollkommen neuartige Hefekultur zu züchten.

Dazu will John zunächst eine Computersimulation der Entwicklung seiner Hefezellen durchführen. Vereinfachend nimmt er dabei an, dass sich die Zellen in einem regulären, rechteckigen Gitter mit m Zeilen und n Spalten aufhalten. In jedem Gitterpunkt kann sich entweder keine oder eine Hefezelle befinden. Jeder Gitterpunkt, der nicht auf den Rändern liegt, besitzt 8 benachbarte Gitterpunkte (oben, unten, links, rechts und die vier Diagonalrichtungen). Gitterpunkte am Rand besitzen nur 5, an den Ecken nur 3 benachbarte Punkte. John möchte der Simulation eine Anfangskonfiguration vorgeben können, welche neben der Gittergröße (Anzahl Zeilen und Spalten) auch die Positionen der anfänglich existierenden Hefezellen enthält. Aus diesen Informationen soll die Simulation anhand folgender Regeln eine neue Konfiguration berechnen:
  • In einem leeren Gitterpunkt, der zu drei Hefezellen benachbart ist, entsteht eine neue Hefezelle.
  • Eine Hefezelle, die nur eine oder überhaupt keine Nachbarzelle besitzt, stirbt an Einsamkeit.
  • Eine Hefezelle mit zwei oder drei Nachbarn überlebt.
  • Eine Hefezelle mit mehr als drei Nachbarn stirbt an Überbevölkerung.
Diese Regeln müssen für alle Gitterpunkte simultan ausgewertet werden. Es können nun beliebig viele solcher Simulationsschritte durchgeführt werden, um immer neue Konfigurationen zu erhalten.
(Für eine ausführlichere Erklärung des Prinzips sei auf den Wiki-Artikel zu Conways Spiel des Lebens verwiesen, welches genau dieser Simulation entspricht).

Ihr habt sicher schon erraten, dass ihr diese Simulation nun in Quellcode gießen sollt. Als Beispielformat für die Eingabe könnt ihr folgenes Schema verwenden:
  • Zeile 1: Anzahl der Zeilen m
  • Zeile 2: Anzahl der Spalten n
  • Zeile 3: Anzahl zu berechnender Konfigurationen k
  • Zeilen 4 bis 4+m-1: Jeweils n Zeichen: + steht für einen leeren Gitterpunkt, o für eine Hefezelle.

Beispiel
Code:
6
7
4
+++++++
++o++++
+++o+++
+ooo+++
+++++++
+++++++

Als Ausgabe wird die Darstellung des Gitters wie in der Eingabe nach Berechnung der k-ten Konfiguration erwartet.

Erweiterung
Für den Simulationsschritt sind auch abweichende Regeln möglich. Gebt dem Benutzer die Möglichkeit, die zu verwendenden Regeln in der Kurzschreibweise anzugeben. Außerdem könnt ihr die Textausgabe durch Erzeugung von Bildern ersetzen. Wem das immer noch nicht reicht, der denke sich bitte selbst beliebig viele zusätzliche Erweiterungen aus.

Beispiele
Eingabe:
Code:
6
7
4
+++++++
++o++++
+++o+++
+ooo+++
+++++++
+++++++
Ausgabe:
Code:
+++++++
+++++++
+++o+++
++++o++
++ooo++
+++++++

Weitere Beispiele folgen...

Vielen Dank an RedWing für die Einsendung dieser Aufgabe!
 
Zuletzt bearbeitet:
Hi,

ich würde eigentlich ganz gerne mal wieder mitmachen. Aber zeitlich liegt das Coding Quiz für mich einfach ungünstig, so am Wochenende.
Wieso darf ich denn an der Umfrage nicht teilnehmen? :confused:

LG
 
Mitmachen würde ich ja, leider fehlt mir dazu ein Studium in Informatik oder Mathematik. :eek:

Oder ich bin einfach nur zu doof ;)
 
Da mache ich auch wieder mit, diesmal habe ich denke ich etwas mehr Zeit dafür.

Allerdings kann ich auch nicht an der Umfrage teilnehmen und habe auch keine Email erhalten, dass was neues hier ist, obwohl ich das Forum abonniert habe.
 
Game of Life .. das habe ich erst vor einem Monat mal in Python geschrieben ... von daher werdet ihr mit Sicherheit eine Lösung von mir sehen ;)
 
ich würde eigentlich ganz gerne mal wieder mitmachen. Aber zeitlich liegt das Coding Quiz für mich einfach ungünstig, so am Wochenende.
Ok, das ist dann wohl bei jedem anders. Bei mir ist es so, dass ich unter der Woche absolut keine Zeit habe, aber dafür am Wochenende. Vielleicht sollte man auch einfach die Bearbeitungszeit etwas ausweiten, also z.B. schon am Mittwoch die neue Aufgabe stellen. Oder die Abgabe nach hinten verschieben. Was haltet ihr davon?

Allerdings kann ich auch nicht an der Umfrage teilnehmen und habe auch keine Email erhalten, dass was neues hier ist, obwohl ich das Forum abonniert habe.
Das Problem mit der Umfrage wurde inzwischen behoben. Der Danke geht an Markus, der den Benutzerrechte-Dschungel der Forensoftware durchschaut hat :) Die ausbleibende E-Mail-Benachrichtigung liegt vermutlich daran, dass dieses Thema ursprünglich in einem anderen Forum erstellt und dann erst in das Diskussions-Forum verschoben wurde. Anders geht es momentan leider nicht, auch wieder wegen einer Benutzerrechte-Geschichte. Vielleicht finden wir da auch noch eine Lösung.

Viel Spaß weiterhin beim Programmieren! Wenn ihr noch Fragen zur Aufgabe habt oder Verständnisprobleme bestehen, dann fragt ruhig nach.

Grüße,
Matthias
 
Hi,

Ok, das ist dann wohl bei jedem anders. Bei mir ist es so, dass ich unter der Woche absolut keine Zeit habe, aber dafür am Wochenende. Vielleicht sollte man auch einfach die Bearbeitungszeit etwas ausweiten, also z.B. schon am Mittwoch die neue Aufgabe stellen. Oder die Abgabe nach hinten verschieben. Was haltet ihr davon?

Deswegen hatte ich ja schonmal vorgeschlagen, die Bearbeitungszeit auf eine Woche zu setzen und eine Woche Diskussion dranzuhängen. Und das Ganze dann quasi alternierend zum angedachten anderen Contests anzusetzen. Wer dann innerhalb einer Woche keinen Tag Zeit gefunden hat, sich dranzusetzen, der hatte dann halt wirklich keine Zeit. ;)


Mitmachen würde ich ja, leider fehlt mir dazu ein Studium in Informatik oder Mathematik. :eek:

Oder ich bin einfach nur zu doof ;)

Du darfst gerne Fragen stellen und Dir helfen lassen. Das ist hier ja kein Contest. Das Codingquiz sollte eigentlich so angelegt sein, dass man die Aufgaben auch ohne Diplom bewältigen kann, aber die Aufgabenfindung ist halt nicht immer so einfach...
Gerüchteweise sollen sich im Chat immer Leute tummeln, die über die Aufgabe reden... ;)
Bin ja bekennender Nichtchatter...

LG
 
Hallo,

sehr kreative Aufgabenstellung, props an Matthias :) Bin diesmal auch mit von der Partie...

Gruß,
RedWing
 
Zurück