Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Alle "logischen Möglichkeiten" auflisten (https://www.delphipraxis.net/44369-alle-logischen-moeglichkeiten-auflisten.html)

flomei 18. Apr 2005 15:51


Alle "logischen Möglichkeiten" auflisten
 
Hallo!
Der Titel is vielleicht nen bisschen ungeschickt gewählt, worum es mir geht ist folgendes:
Wir behandeln in Informatik jetzt das Thema Logik (AND, NAND, OR, etc.pp.) und dürfen immer so tolle "Wertetabellen" zeichnen.
Beispiel:
Code:
A, B
Möglichkeiten:
w f
w w
f w
f f

A, B, C
Möglichkeiten:
w w w
w w f
w f f
f f f
f f w
f w w
f w f
w f w

...
Ja, und so weiter... Ich denke ihr habt das Prinzip verstanden. ;)
Informatiker sind natürlich faul :mrgreen: und deswegen würden sie sich gerne ein Programm schreiben das ihnen diese Folgen in eine Textdatei schreibt. Und zwar für x Variablen...
Leider weiss ich nicht so recht wie ich anfangen soll.
"Alles richtig" und "alles falsch" is noch einfach aber wie geht man dazwischen am Besten vor?

Wer irgendwelche Ideen, Lösungsvorschläge oder was weiss ich was hat, immer her damit...

Danke!

MFG Florian :hi:

Dax 18. Apr 2005 15:55

Re: Alle "logischen Möglichkeiten" auflisten
 
Nimm doch, was dir ein Prozessor bietet: Zahlen.

Deine Wahr/Falsch-Tabellen mit den Variablen A, B, C, D, ... Z kannst du auf 32Bit-Zahlen übertragen:

Bit 1, Bit 2, Bit 3, Bit 4 .... Bit 26, ... Bit 32

Wenn du alle Werte haben willst, zähle von 0 solange hoch, bis alle Variablen wahr (also 1) sind. Dann musst du nur noch mit AND die entsprechenden Bits herausfiltern und als w (für 1) oder f (für 0) in die Datei schreiben.

Edit: Alternativ kannst du mit einem array of Boolean arbeiten, dann ist es aber viel schwerer, die entsprechenden Werte mit geringem Aufwand zu bekommen.

Chris1986 18. Apr 2005 15:59

Re: Alle "logischen Möglichkeiten" auflisten
 
hi flomei,
eigentlich kannst du doch binär hochzählen. Es gibt immer 2^n Möglichkeiten.
Die erste Möglichkeit ist FF... und die 2^n te WW . . .
Bei 2 Variablen also folgendes (geordnetes) Schema:
Delphi-Quellcode:
FF
WF
FW
WW
Das müsste sich doch mit 2 Schleifen relativ einfach realisieren lassen.

MfG
Christian

glkgereon 18. Apr 2005 16:03

Re: Alle "logischen Möglichkeiten" auflisten
 
wie wäre es damit?(getestet)

Delphi-Quellcode:
function GetKombi(ValCount: Integer): TStringList;
var Temp: TStringList;
  procedure kombiRec(index, max: Integer; vals: String);
  var i:Integer;
  begin
    for i:=1 to 2 do
      if index<max then
        kombirec(index+1,max,vals+IntToStr(i))
      else Temp.Add(vals+IntToStr(i));
  end;
begin
  Temp:=TStringList.Create;
  KombiRec(1,ValCount,'');
  Result:=TStringList.Create;
  Result.Clear;
  Result.AddStrings(Temp);
  Temp.Free;
end;
und nun ausgabe mit w/f statt 1/2:
Delphi-Quellcode:
function GetKombi(ValCount: Integer): TStringList;
var Buf: TMemoBuf;
  procedure kombiRec(index, max: Integer; vals: String);
  var i:Integer;
  begin
    for i:=1 to 2 do
      if index<max then
        kombirec(index+1,max,vals+IntToStr(i))
      else Result.Add(vals+IntToStr(i));
  end;
begin
  Result:=TStringList.Create;
  Result.Clear;

  KombiRec(1,ValCount,'');

  Buf:=TMemoBuf.Create;
  Buf.Append(Result.Text);
  Buf.ReplaceAll('1','w');
  Buf.ReplaceAll('2','f');

  Result.Clear;
  Result.Add(Buf.Text);
end;

flomei 18. Apr 2005 16:10

Re: Alle "logischen Möglichkeiten" auflisten
 
Das von Gereon scheint zu gehen, da jag ich jetzt noch nen paar StringReplace drüber und speicher das in ner Textdatei oder so.
Tausend Dank!

MFG Florian :hi:

edit: OK, hat er schon gemacht. werd mir das mal noch genauer angucken...

glkgereon 18. Apr 2005 16:13

Re: Alle "logischen Möglichkeiten" auflisten
 
also TMemoBuf is in der Unit RpMemo und das einzige objekt was ich kenne was ReplaceAll kennt...

Luckie 18. Apr 2005 16:15

Re: Alle "logischen Möglichkeiten" auflisten
 
Delphi-Referenz durchsuchenStringReplace.

flomei 18. Apr 2005 16:18

Re: Alle "logischen Möglichkeiten" auflisten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, hab grad trotzdem nen paar Sprachen durcheinander geworfen... ;)

MFG Florian :hi:

Falls irgendwer mal das Gleiche suchen sollte und seine Hausaufgaben schnell erledigt haben will, dann kann er sich das Programm (klein und hässlich) ja mal aussem Anhang runterladen...

[edit] NEIN, ich will nicht über neue Antworten benachrichtigt werden. Ich lebe in diesem Forum, deshalb bekomm ich das auch so mit... :roll: [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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