Entwickler-Ecke

Open Source Projekte - Hotelschlüssel


Fiete - Mi 17.01.18 17:30
Titel: Hotelschlüssel
Moin,
dies Programm löst die Aufgabe 3 aus dem BWInf 12, 1993.

Für ein Hotel sollen neue Schlüssel hergestellt werden.
Ein Schlüssel besteht aus einer Karte mit Löchern, die von einem Lichtstrahl im Türschloß
abgetastet werden. Das Schloß wird passend eingestellt.
Rohling:
O#O#O#O
#O#O#O#
O#O#O#O
#O#O#O#
O#O#O#O
#O#O#O#
O#O#O#O
#O#O#O#
O#O#O#O
Hotel
Die Schlüssel müssen folgende Regeln erfüllen:
Von den 32 möglichen Positionen sind wenigstens 5 mit einem Loch zu versehen.
Es darf keine der Spalten, Zeilen oder Diagonalen vollständig gelocht sein
Keine zwei Schlüssel dürfen identisch oder zueinander symmetrisch sein.
Nach dem Start wird die Anzahl der zu generierenden Schlüssel festgelegt, maximal 9999.
Identische oder symmetrische werden nicht gespeichert.
Die Schlüssel werden durch eine 32-Bit Zahl dargestellt.
Anschließend können aus einem festgelegten Bereich die Schlüssel angezeigt werden.
Viel Spaß beim Testen.
Gruß Fiete


Blawen - Mi 17.01.18 22:06

Hallo Fiete

Bei Deinem Eintrag scheinen zwei Fehler vorhanden zu sein (siehe Bild im Anhang).
- Zum einen erscheint unter dem (ersten) Schlüsselbild, ein weiteres mit dem Hinweis "Bild nicht gefunden..."
- und zum anderen scheint das Downloadfile auch nicht zu existieren, bzw. es wird nicht gefunden.

Edit:

@EE-Team:
Interessanterweise wird der Downloadzähler aber um eins hochgezählt

Gruss
Blawen


Fiete - Mi 17.01.18 22:30

Moin Blawen,
Fehler behoben.
Gruß Fiete


Blawen - Mi 17.01.18 23:06

user profile iconFiete hat folgendes geschrieben Zum zitierten Posting springen:
Moin Blawen,
Fehler behoben.
Gruß Fiete
Das Bild wird nun angezeigt, die Datei wird aber nach wie vor nicht gefunden.


Fiete - Do 18.01.18 08:55

Moin Blawen,
war gestern Abend wohl zu müde.
Das Programm und Quelltext sind neu hochgeladen, hoffe es klappt.
Gruß Fiete


Horst_H - Fr 19.01.18 10:06

Hallo,

immer wieder erstaunlich, wie schnell die Ausgabe mit Delphi ist.Mit Lazarus kompiliert wird es relativ dazu sehr langsam.
"Heute" würde man sicher mit vorproduzierten Bitmustern arbeiten, um die Gültigkeit einer Karte zu prüfen, zumal ja die Karten als 32-Bitfeld gespeichert werden.
Wäre es ein Vorteil, die produzierten Karten sortiert zu halten, dann könnte man mit binärer Suche Kollisionen entdecken.
Egal, Rechnergeschwindigkeit ersetzt alles.Bei KartenMax auf 99999 erhöht sind es nur 10000-Kollisionen gewesen und die Hand noch nicht an der Kaffeetasse.
Schön umgesetzt.

Gruß Horst
P.S
Wenn nur 16 Karten erstellt, will das Programm nochmals Karten anzeigen und das sind dann nur leere Felder


Fiete - Fr 19.01.18 14:08

Moin,
Zitat:
Wenn nur 16 Karten erstellt, will das Programm nochmals Karten anzeigen und das sind dann nur leere Felder.

Wenn Du in Zeile 286

Delphi-Quelltext
1:
if K=AN then Abbruch:=True;                    

einfügst ist der Fehler behoben.
Hab ich zu spät bemerkt. :oops:
Gruß Fiete


Delphi-Laie - Fr 19.01.18 16:36

user profile iconFiete hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
if K=AN then Abbruch:=True;                    

Noch ein Quentchen eleganter (m.E.):

Delphi-Quelltext
1:
Abbruch:=K=AN;                    


Fiete - Fr 19.01.18 17:26

Moin,
ja stimmt, hab ich schon mal benutzt.
Es gibt nichts was nicht verbessert werden könnte.
Gruß Fiete


haentschman - So 21.01.18 15:17


Delphi-Quelltext
1:
Abbruch:=K=AN;                    

...wird nicht compilieren wenn K und AN Integer (oder so) sind.

Delphi-Quelltext
1:
Abbruch := (K = AN);                    

...das schon eher.

PS: Bitte beachtet wenigstens für die QT Beispiele den Delphi Styleguide.


Symbroson - So 21.01.18 18:07

Warum sollte es nicht kompilieren wenn man die Klammern weglässt? Du weist ja auf die Boolean Variable trotzdem sozusagen den Vergleich zu, der einen Bool-Wert zurückgibt. Die Klammer ändert da meines Wissens nach nichts. Oder ist das eine weitere Delphi-Macke? ^^


Fiete - So 21.01.18 21:55

Der Compiler verarbeitet die Anweisung korrekt!
Die Klammer ist überflüssig.
Ich arbeite mit D6 pro
Gruß Fiete


Symbroson - So 21.01.18 21:59

Hätte mich auch gewundert, wenn nicht. Danke für die Bestätigung!
In D7 geht es ebenfalls