WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Game of Life

 

lepre14
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2013, 14:48     Titel: Game of Life
  Antworten mit Zitat      
Hey =) ich komm bei einer Aufgabe einfach nicht weiter =/ Wäre lieb wenn ihr mir helfen und Tipps geben könntet Wink

Schreiben Sie eine Funktion function B=gameOfLifeStep(A,survCrit,birthCrit), die einen Entwicklungsschritt des
Spiel des Lebens durchführt. Diese soll als Eingabewerte sowohl eine Matrix A, welche die Anfangsgeneration enthält, als auch zwei Vektoren survCrit und birthCrit akzeptieren, welche die Kriterien für das
Überleben von Zellen, bzw. für die Geburt neuer Zellen enthalten (survCrit=[2] und birthCrit=[3])
Für eine Matrix A der Größe 1000 x 1000 sollte die Laufzeit kleiner
31 Sekunden sein.

Ich hab mir gedacht das man die Matrix mit der Anfangsgeneration so schreiben könnte:

Code:
function A = init(N)

A = zeros(N,N);
k = floor(N/2);
A(k-1:k+2,k-1:k+2) = ones(4,4);

ist das der richtige Ansatz ?

Liebe Grüße =)

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


lepre14
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2013, 16:53     Titel:
  Antworten mit Zitat      
nicht jmd nen kleinen tipp =(
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.06.2013, 22:34     Titel: Re: Game of Life
  Antworten mit Zitat      
Hallo lepre14,

Die Forumsregeln sehen ein Bumping erst nach 24 Stunden vor. Siehe: http://www.gomatlab.de/der-kleine-gomatlab-de-knigge-t125.html

Ich sehe keinen Zusammenhang zwischen der Aufgabestellung und dem geposteten Code. Wonach könnte man also entscheiden, ob der Code "richtig" ist?

Statt ONES würde auch dies reichen:
Code:
A(k-1:k+2,k-1:k+2) = 1;

Skalare werden bei dieser Zuweisung automatisch "expandiert".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
lepre14
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2013, 11:45     Titel:
  Antworten mit Zitat      
oke sry Wink

ich hab halt gedacht weil man ja eine matrix a erstellen muss mit einer anfangsgeneration und dass man das dann so machen könnte ? und dann halt noch die zwei vektoren dazu wobei ich da leider keine ahnung hab...

die laufzeit kann man ja mit tic und toc bestimmen ... aber wie kann man sie zb kleiner machen ?

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.06.2013, 19:51     Titel:
  Antworten mit Zitat      
Hallo lepre14,

In der Aufgabenstellung wird die Forum der Start-Matrix nicht erklärt, deshalb können wir nicht wissen, ob Dein Programm Deine speziellen Wünsche erfüllt.

Man kann die Laufzeit verkürzen, indem man effiziente Methoden zur Berechnung verwendet und die Daten in geeigneter Form speichert. Man kann aber nicht generell bestimmen, was effizienter ist, sondern das kommt immer auf das spezielle Problem an.

Was ist also genau Deine Frage, bei der wir Dir hier helfen können?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
lepre14
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2013, 22:27     Titel:
  Antworten mit Zitat      
meine frage ist : wie man den entwicklungschritt schreiben kann. kann ich da einen beliebigen dann auswählen oder ? also von dem spiel des lebens einen aussuchen und dann den so schreiben ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.06.2013, 01:31     Titel:
  Antworten mit Zitat      
Hallo lepre14,

Da habe ich keine Ahnung. Was ist denn ein "Entwicklungsschritt"? Das habt ihr doch sicherlich in der vorlesung besprochen, oder? Ich bezweifele, dass jemand im Forum wissen kann, ob Du "einen beliebigen aussuchen" kannst und "den so schreiben" dürfte auch niemandem klar sein.

Bitte denke daran, das die Leser im Forum keine Ahnung von dem haben, was Du genau machst. Uns liegen Deine Vorlesungsmitschriften nicht vor. Und deshalb ist eine Hilfe nur kein konkreten Fragen möglich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 25.06.2013, 16:18     Titel:
  Antworten mit Zitat      
Hallo,
deine Aufgabe wird es sicher sein, zu jeder Matrix A (mit Einträgen 0 oder 1) einen Entwicklungsschritt nach den Regeln vom Game of Life zu machen. Die Regeln stehen in verkürzter Form schon da. Man überlebt bei genau 2 lebendigen Nachbarzellen und man wird geboren bei genau 3 lebendigen Nachbarzellen.

Es ist nun deine Aufgabe, dir zu überlegen wie man das implementieren könnte und dann zu schauen, ob die Laufzeit okay ist oder ob du noch was verbessern musst.
Ziel ist es also: Anzahl lebendiger Nachbarn zu jeder Zelle A(i,j) zu zählen und entsprechend zu reagieren. Üblicherweise meint man dann mit "lebendig" hat den Wert 1 und "tot" hat den Wert 0.
Nach den Regeln da oben bedeutet das (survCrit=[2]): eine Zelle bleibt am leben (behält den Wert 1), wenn sie exakt 2 lebendige Nachbarn hat und (birthCrit=[3]): eine tote Zelle wird zum Leben erweckt, wenn sie exakt 3 lebendige Nachbarn hat. Folglich sterben alle anderen (kriegen Wert 0)

Weiterhin musst du auch noch konkreter werden, was für eine Topologie tu vorliegen hast, also welche Nachbarn zum Beispiel die Zelle A(1,1) hat. Sind die Nachbarn nur A(1,2), A(2,2), A(2,1) oder auch über den Rand hinaus.

Bei konkreteren Fragen kann man auch konkretere Antworten geben.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.