AGB  ·  Datenschutz  ·  Impressum  







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

"Schlossknack"-Algorithmus

Ein Thema von fLaSh11 · begonnen am 19. Apr 2007 · letzter Beitrag vom 19. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
fLaSh11
(Gast)

n/a Beiträge
 
#1

"Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 16:35
Hallo DPler,

ich weiß nicht mehr weiter.
Ich möchte sozusagen den "Schlossknack"-Algorithmus anwenden, d.h. eine Variable von 1 bis 9 hochählen, wenn 9, dann die nächste auf 1,... Nun hat mein "Schloss" aber x Stellen.

Die einzige möglichkeit, die mir einfiel, war ein dyn. Array of Integer zu erstellen, ihm die Länge zu geben und dann die einzelnen Integer-Zahlen hochzuzählen. Will der Compiler aber nicht ...

Gibts noch ne andere Möglichkeit?

MfG
Steffen

//Edit: besserer Titel
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: for-Schleife x-Mal

  Alt 19. Apr 2007, 16:43
Hi,

Verschachtelte for-schleifen?
Oder versteh ich was falsch?

Delphi-Quellcode:
var Schloss: Array[1..Stellen] of Integer;
for i:= 1 to Stellen do
begin
  for j:= 1 to 9 do
    inc(Schloss[i]);
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: for-Schleife x-Mal

  Alt 19. Apr 2007, 16:46
Das Problem hatte ich auch mal. Die Lösung ist Rekursion. Du setzt eine globale Variable auf x. Dann erstellst du eine Funktion:
Delphi-Quellcode:
procedure schlossknack(laenge:integer);
begin
//mach irgendwas mit globalen Variablen
if laenge>1 then
 schlossknack(laenge-1);
end;
Edit: Neutral Generals Lösung scheint aber besser zu sein.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#4

Re: for-Schleife x-Mal

  Alt 19. Apr 2007, 16:57
@Neutral General:
Soweit ich sehe, zählt dieser Algorithmus einfach alle Variablen von 1 bis 9 hoch. Aber wenn die nächste eins hochgesetzt wird, sollte erst die ganz erste wieder von 1 bis 9 gezählt werden, so als wölltest du ein Schloss knachen.

du versuchst es folgendermaßen (bei einem Schloss mit 3 Stellen:
Code:
1 1 1
2 1 1
3 1 1
...
9 1 1
1 2 1
2 2 1
3 2 1
...
8 9 3
9 9 3
1 1 4
2 1 4
...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 17:02
Nun, du musst eben bei jedem Aufruf der ersten for-Schleife die aktuelle Schlossvariable auf 0 setzen: Schloss[i]:=0;
Und der Stackbedarf ist deutlich besser als bei der Rekusrion, ich versuche mal, mein Prog, indem ich das durch Rekursion gelöst habe, zu beschleunigen.
DANKE, NEUTRAL GENERAL!!!
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#6

Re: for-Schleife x-Mal

  Alt 19. Apr 2007, 17:03
Zitat von fLaSh11:
du versuchst es folgendermaßen (bei einem Schloss mit 3 Stellen:
Code:
1 1 1
2 1 1
3 1 1
...
9 1 1
1 2 1
2 2 1
3 2 1
...
8 9 3
9 9 3
1 1 4
2 1 4
...
Also ich würde es anders versuchen. Und zwar so:
111
112
113
...

Wieso einfach, wenns auch schwierig geht?
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#7

Re: "Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 17:13
@Torpedo: klaro, aber Start und Ende bei jeder Stelle sind dort, wo ich das Ganze brauche auch variabel
@Apollonius: Werd mal überlegen
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#8

Re: "Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 17:21
Zitat von fLaSh11:
@Torpedo: klaro, aber Start und Ende bei jeder Stelle sind dort, wo ich das Ganze brauche auch variabel
Vielleicht versteh ich ja was nicht richtig, aber wenn man will, dass er bei z.B. 246 beginnt und bei 500 aufhört, dann kan man ja auch nur diese Zahlen durchzählen.
Oder ist das Problem wie man aus den einzelnen Stellen eine ganze Zahl macht?
Ziffer1 = 2
Ziffer2 = 4
Ziffer3 = 6

Zahl = Ziffer1*100+Ziffer2*10+Ziffer3
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: "Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 17:48
Du könntest auch einfach meine Komponente verwenden

http://www.delphipraxis.net/internal...ct.php?t=62161

  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: "Schlossknack"-Algorithmus

  Alt 19. Apr 2007, 17:54
Ich nehme alles zurück!!! Neutral Generals Lösung funktioniert nicht, es sei denn, ich habe was falsch implementiert. Man muss ja sozusagen x ineinanderverschachtelte for-schleifen haben. Da fällt mir nichts anderes ein als die Rekursion, also:
Delphi-Quellcode:
var schloss:array[1..stellen] of integer;

procedure angriff(laenge:integer);
var i:integer;
begin
if laenge=1 then
 begin
  for i:=0 to 9 do
   begin
    schloss[laenge]:=i;
    knackdasschloss(schloss);
   end;
 end
else
 begin
  for i:=0 to 9 do
   begin
    schloss[laenge]:=i;
    angriff(laenge-1);
   end;
 end;

end;

//Aufruf
angriff(stellen);
Im Prinzip ist das eine Simulation von laenge ineineanderverschlachtelten for-Schleifen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:38 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