Runde Arrys in Java

m3x

Ensign
Registriert
Aug. 2005
Beiträge
218
Wie ist es möglich in Java runde Arrays zu erstellen? Ich kann zwar zweidimensionale Arrys erstellen, mit unterschiedlichen Längen, aber wie kann man die Arrays quasi so "anordnen" das es Optisch einem Kreis ähnelt.
 
Sowas kannst du einfach selbst implementieren. Erstelle eine verkettete Liste, und verknüpfe einfach das letzte mit dem ersten Element. Der Sinn des ganzen will mir aber optisch nicht so ganz einleuchten... :rolleyes:
 
Sorry ich habe es etwas falsh forumliert. Also es handeld sich genau um "Conways - Spiel des Lebens". Da benötigt man ein Spielfeld. Jetzt sollte das Spielfeld nicht rechteckig sein sondern rund, also möchte ich die Arryfelder (ist ja ein zweidimensionales Array) so anordnen, dass wenn man sie in ein Koordinatenfeld der indexzahl entsprechend einzeichnen würde, einem Kreis ähnlich sehe...:freak:
 
Mach das Array einfach so gross wie das umgebende Rechteck und benutze einfach nur die Koordinaten die zum Spielfeld gehören.

Das braucht zwar Speicher, man muss aber am wenigsten denken :-). Ansonsten kannst Du ja noch eine Liste von eindimensionalen Arrays anlegen, die immer genau die passende Grösse haben.

Runde Arrays gibt es nicht, zumindest wird dieser Begriff im allgemeinen nicht verwendet.

MFG

Arnd
 
daran habe ich auch schon gedacht, das problem ist nur das ich dan kane spielfeld begrenzung habe weil das zu erstellende interface für boolean sein muss (also zelle lebt oder ist tot) alles andere würde dann also sonst das ergebniss verfälschen ....

trotzdem mal danke ;)
 
Du kannst ja statt bools einfach bytes nehmen. Für true nimmst du eine 0, für false eine 1. Für Spielfeld ungültig eine 2. So, oder so ähnlich. :D
 
^^ ja, soweit dachte ich auch.. allerdings hats unser lehrer so vorgegeben :(....
bisslang hat niemand von uns eine idee, und das internet giebt da auch nicht sehr viel her ...
 
Arndt hatte ja noch eine Möglichkeit vorgeschlagen. Damit gehts auf jeden Fall. Oder aber du verwaltest nochmal ein Array wo jeweils zu jeder Zeile der Spielfeld Anfangs- und End-Index drin steht. :)
Wahrscheinlicher ist aber, dass ihr euch eine Klasse "Spielfeld" schreiben müsst, die die gewünschte Funktionalität beinhaltet. Könnte das sein? :D
Ich mein jeweils Spielfeldtests bei get- und set-Methoden. ;)
 
also es handelt sich darum das wir dem konstruktor einen radius wert als int übergeben, der int wert stellt den radius des arrays da (das array soll 2 dimensinal, kreisförmig und vom tüp boolean sein).
der ursprung soll in der mitte des kreises (also der arryfläche sein)....
und darin das problem, der vorschlag das array zu begrenzen ist falsch, desweiteren mit einem boolean array nicht realisierbar(da die werte true und false für den status der "zellen -> der vievher die leben (true) oder tot sind (fasle)").
 

Anhänge

  • array.JPG
    array.JPG
    26,5 KB · Aufrufe: 218
Es gibt aber nunmal keine runden Arrays, da kannst du dich auf den Kopf stellen. ;)
Warum also nicht ein größeres Array erstellen (quadratisch), und den Zugriff nur über get- und set-Methoden erlauben? Bei jedem Zugriff wird geprüft, ob fälschlicherweise versucht wird auf den Bereich außerhalb des Kreises zuzugreifen, und im Fehlerfall wird ein Fehlercode zurückgegeben?
 
Die Frage ist wie die Aufgabenstellung lautet.

Wenn es nur darum geht ein Interface bereitzustellen das mit bool arbeitet, ist es doch vollkommen egal wie das Array aussieht. Dann würde ich die Rechtecklösung nehmen und mit byte Werten arbeiten. Deswegen kann doch trotzdem ein bool Wert zurückgegeben werden.

Ein direkter Zugriff auf das Array ist sowieso nicht schön und sollte vermieden werden.

MfG

Arnd
 
ja, so hab ich das ja auch erst gemacht :( .... aber anscheined gibt es eine bessre lösung...
trotzdem mal vielen dank für eure hilfe ;)
 
Wäre nett, wenn du uns die "bessere" Lösung hier auch mal vorstellen könntest. :)
 
Eigentlich sollte das ganze doch auch über ein eindimensionales Array realisierbar sein oder?
Man denke nur an Binäre Bäume, die repräsentiert man auch durch eindimensionale Arrays (bzw man KANN es so machen).
Man müsste doch bei gegebenem Radius genau wissen dass das Feld an stelle x nur in Zeile y liegen kann, und keiner anderen... Man muss sich nur noch einen Algorithmus überlegen, der für einen vorgegebenen Radius überlegt wie viele Zeilen ein solcher Kreis hat und wie viele Elemente dann jede dieser Zeilen haben soll, und schon sollte man das ganze auch rückwärts rechnen können.

Ich habe ehrlich gesagt auf die schnelle keine Idee :)
 
Sicher geht das auch mit einem 1D Array. Die entsprechenden Grenzen kann man relativ simpel berechnen.

Nur schnell ist das ganze dann nicht mehr. Auch nicht einfach zu verstehen und Änderungen möchte ich an so einem Algorithmus auch nicht vornehmen müssen.

In dem Fall verbrate ich lieber mehr Speicher und habe dafür wartbaren Code.

MfG

Arnd
 
Im Prinzip kann man alles mit einem 1D Array realisieren...denn wie wir ja vielleicht wissen: Alle berechenbaren Probleme sind TM Berechenbar.
Und eine TM arbeitet nun mal nur mit einem Band, was im Grunde ein 1D Array ist.
:D
 
Zurück
Oben