Forum: Programmieren allgemein
by marabu,
5. Mär 2006
Hi stoxx,
dein erstes Beispiel hatte einen Fehler - du erinnerst dich? Die Beschreibung des Algorithmus ist nicht vollständig - der Begriff Häufigkeit ist nicht ausreichend definiert. Mir fehlen zuverlässige Testfälle zur Verifikation einer Implementierung. Als Referenz bietest du mir deinen Code an. Ich habe ihn analysiert und musste als erstes festgestellen, dass du jeweils den ersten...
Forum: Programmieren allgemein
by marabu,
4. Mär 2006
Hi stoxx,
ich halte mich lieber an die Beschreibung des Algorithmus, die du zitierst und hoffe, dass da kein Fehler drin ist. Darin steht, dass die Dimensionierung des Bereiches eines Buchstaben diesen für die Besetzung der Stelle qualifiziert. Die Häufigkeit eines Buchstaben dient nur zur Abgrenzung der Bereiche und nicht als Kriterium für den "Sieger".
Häufigkeit - nach meiner...
Forum: Programmieren allgemein
by marabu,
4. Mär 2006
Hallo stoxx,
bist du sicher, dass dein Ergebnis stimmt? Meine Interpretation deiner Regeln ergibt etwas anderes:
___________________________________________________
4.
__2__
| |
Forum: Programmieren allgemein
by marabu,
4. Mär 2006
Guten Morgen.
Erst durch diese Erklärung fällt mir auf, dass sich bei meiner Implementierung angrenzende Bereiche überlappen. Ich muss noch eine kleine Änderung an der abschließenden Berechnungsschleife einführen:
// ...
// calculate result
for i := High(seq) downto 0 do
begin
Forum: Programmieren allgemein
by marabu,
3. Mär 2006
Das von dir als falsch markierte f ergibt sich doch aus der Tatsache, dass der Bereich für das t in der Eingabesequenz an der betrachteten Stelle die Größe 2 hat (das erste f kann ), während das f als einzige relevante Alternative die Bereichsgröße 3 besitzt. Nach der Beschreibung deines Algorithmus qualifiziert der größere Bereich den "Sieger" - ergo wird das t vom f verdrängt. Hast du die...
Forum: Programmieren allgemein
by marabu,
3. Mär 2006
Peinlich - ich habe ein Gleichheitszeichen vergessen:
// ...
// calculate result
for i := High(seq) downto 0 do
begin
if (i = High(seq)) or (rng >= maxRange) then // muss natürlich >= sein !
// ...
Forum: Programmieren allgemein
by marabu,
3. Mär 2006
Hallo.
Dann stimmen die Beispielergebnisse aber nicht.
seq: m m r t f f f
cnt: 1 2 1 1 1 2 3
rev: 2 1 1 1 3 2 1
rng: 6 4 3 2 3 2 1
Forum: Programmieren allgemein
by marabu,
3. Mär 2006
Wichtig ist, dass du den Algorithmus genau wiedergibst, sonst wird das nichts mit der Hilfe. Ich habe ihn mal mit meinem momentanen Kenntnisstand implementiert - Komplexität O(n).
marabu
Forum: Programmieren allgemein
by marabu,
3. Mär 2006
Guten Morgen.
Nehmen wir mal an, dass die Beispieldaten korrekt sind. Mit dem angegebenen Algorithmus komme ich dann aber zu dem Ergebnis m2f5. Wo ist mein Denkfehler?
str m m r t f f f
cnt 1 2 1 1 1 2 3
rng 6 4 3 2 3 2 1 // corr.
new m m f f f f f