AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Alternative zu vielen Arrays ?

Ein Thema von Olga · begonnen am 2. Apr 2010 · letzter Beitrag vom 2. Apr 2010
Antwort Antwort
Olga

Registriert seit: 1. Apr 2010
7 Beiträge
 
#1

Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:27
Hallöchen mal von mir,

Ich wollte euch als relativen Delphi Neuling um Rat bitten.

Und zwar, ich arbeite gerade an einem Sudokulöser und stehe nun davor, für jedes leere Feld ein array zu deklarieren, was bei einem leeren Sudoku 81 stk wären.
In jedes dieser arrays sollen nun die Möglichkeiten der Zahlen, welche passen können, hineingeschrieben werden.

Da ich mir ziemlich sicher bin das man jedes array deklarieren muss, wollte ich nun fragen ob ihr Vorschläge für eine bessere Lösung hättet.

So weit von mir, ich freue mich auf Hilfe sowie eine schöne Zeit hier im Forum^^
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:37
Hallo Olga,

Willkommen in der DP

Hier mal ein Ansatz:
Delphi-Quellcode:
type
  TDigit = 0..9;
  TPossibleDigits = array of TDigit;
  // Alternativ (weiß nicht, was günstiger ist):
  // TPossibleDigits = set of TDigit;

  TSudokuArray = array[0..9-1, 0..9-1] of TPossibleDigits;

var
  SudokuArray: TSudokuArray;
Wenn du noch Fragen hast, immer her damit.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:42
Die Alternative Sets statt der Arrays wäre schöner. Ein Set verhält sich ungefähr wie eine Menge in der Mathematik und ist praktisch wie für diesen Einsatzzweck gemacht.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:46
Zitat von BUG:
Die Alternative Sets statt der Arrays wäre schöner.
Im Grunde ja, allerdings kann man Arrays schön per Schleife durchiterieren, was u.U. auch von Vorteil sein kann. Dafür ist das hinzufügen und löschen von Elementen recht aufwändig.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:47
Du kannst die möglichen Zahlen in einem Sudoku-Feld als Array deklarieren:
Delphi-Quellcode:
type
  TErlaubteZahlen = {packed} array[1..9] of Boolean;
Wenn du Speicher sparen möchtest, dann kannst du das Schlüsselwort packed benützen.
Es gäbe auch die Möglichkeit du erlaubten Zahlen bitcodiert in einem Integer oder Short unterzubringen
oder die Klasse TBits zu benützen.
Das Boolean-Array ist aber die einfachste Möglichkeit.

Man kann den Anfangszustand (alle Zahlen von 1 bis 9 erlaubt) so herstellen:
Delphi-Quellcode:
const
  AlleErlaubtenZahlen: TErlaubteZahlen= (True,True,True,True,True,True,True,True,True);
...
  ErlaubteZahlen := AlleErlaubtenZahlen;
Man erspart sich dadurch eine Schleife von 1 bis 9, die die Werte im Array auf True setzt.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 00:54
Zitat von sx2008:
Es gäbe auch die Möglichkeit du erlaubten Zahlen bitcodiert in einem Integer oder Short unterzubringen
oder die Klasse TBits zu benützen.
Wenn schon Sets, TBits ist deutlich umständlicher in der Bedienung und lohnt sich nur für Mengen mit mehr als 255 Elementen.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 01:04
Sets drängen sich geradezu auf ... nimm Sets ... kaufe 80 und bekomme eins gratis
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Olga

Registriert seit: 1. Apr 2010
7 Beiträge
 
#8

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 01:09
VIELEN Dank für die vielen schnellen Antworten. :)

Ich werde mich dann sofort an diese Sets setzen um diese zu verstehen und sie folglich richtig anzuwenden :)

Danke nochmal, mal sehen wann ich euch das nächste mal behelligen muss :) (villeicht ja sogar zu den sets?^^)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Alternative zu vielen Arrays ?

  Alt 2. Apr 2010, 01:16
Zitat von NamenLozer:
...Wenn schon Sets
So vielleicht:
Delphi-Quellcode:
type
  TZiffer = 1..9;
  TZiffernset = set of TZiffer;

function AnzahlErlaubterZahlen(x:TZiffernset):integer;
var i : TZiffer;
begin
  Result := 0;
  for i:=1 to 9 do
    if i in x then
      Inc(Result);
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz