Entwickler-Ecke

Ankündigungen - Adventsgewinnspiel 2008


Narses - Mo 24.11.08 19:01
Titel: Adventsgewinnspiel 2008
Ein freundliches "Ho Ho Ho" vom Ecken-Sofa!

Nach dem Blog-Eintrag von Gausi sicher keine Überraschung mehr, auch dieses Jahr wird es wieder ein Adventsgewinnspiel für euch Mitglieder der Entwickler-Ecke geben. Ich denke, es ist nicht übertrieben zu sagen, dass wir hier als Community mittlerweile eine gute Tradition ins Leben gerufen haben - unterm Strich war die Resonanz aus den letzten Jahren positiv. Wir hoffen auch in diesem Jahr, dass wir euer Fest mit den attraktiven Preisen unserer Sponsoren erneut ein klein wenig schöner machen können. Was es genau zu gewinnen gibt, wird aber erst wieder beim Start verraten. :angel:

Um an dem Adventsgewinnspiel teilnehmen zu können, müsst Ihr einen Account bei uns ([url]http://www.entwickler-ecke.de[/url], [url]http://www.delphi-forum.de[/url], [url]http://www.c-sharp-forum.de[/url], [url]http://www.delphi-library.de[/url], [url]http://www.c-sharp-library.de[/url]) haben. Der Account muss vor dem 01.12.2008 erstellt worden sein. Von der Teilnahme ausgeschlossen ist das aktuelle EE-Team (Admins, Co-Admins, Moderatoren und Chefentwickler).

Auch das hat wohl schon Tradition, das Adventsgewinnspiel wird nämlich wieder etwas anders sein, als im letzten Jahr. ;) Es gibt dieses Jahr nur noch zwei Stufen im Gewinnspiel: Die Knobelaufgaben und die Paranüsse. Also, keine Panik, es gibt kein Suchspiel... :lol:

Die Knobelaufgaben

Wir werden dieses Jahr vier Aufgaben stellen, die jeweils in einem gewissen Zeitfenster bearbeitet werden müssen.
Beginn ist jeweils um 0:00 Uhr, das Ende um 23:59 Uhr. Die Aufgaben sind nicht alle gleich kompliziert, so dass sich die letzte Aufgabe auch in der kürzeren Zeit lösen lässt. Zu einigen dieser Aufgaben wird es wieder ein paar Lösungshinweise geben.

Die Paranüsse

Um auch die Profis zu fordern, gibt es wieder zusätzlich zu den mehr oder weniger einfachen regulären Rätseln drei besondere Nüsse zu knacken. Diese werden alle drei zu Beginn des Gewinnspiels veröffentlicht und können bis zum 24.12., 23:59 Uhr bearbeitet und abgegeben werden. Hinweise zur Lösung dieser Aufgaben wird es - wenn überhaupt - nur sehr spärlich geben.

Auswertung und Preise

Nach Abgabeschluss für die jeweilige Aufgabe gibt es Gelegenheit für Anmerkungen zu den Lösungen. Die Auslosung der Gewinner findet dann einen Tag später statt. Jeder Teilnehmer erhält eine private Nachricht mit der Information, ob er gewonnen oder verloren hat.

Die Preise der Sponsoren werden auf die vier regulären Fragen verteilt. Dieses Jahr ist also die Chance, einen Preis zu ergattern, nochmal etwas höher!
Für´s Knacken der Paranüsse wird es wieder den begehrten Nussknacker-Award geben, der anzeigt, ob man eine, zwei oder alle drei Nüsse geknackt hat. Dieser Preis wird nicht verlost. Jeder, der eine oder mehrere Aufgaben löst, bekommt den Preis. Der Titel ist nur temporär und wird zu Halloween 2009 wieder entfernt, bleibt aber im Benutzerprofil erhalten. Ihr habt also die Möglichkeit, den Nussknacker-Award zu sammeln! :zustimm: Ausnahmsweise gibt es dieses Jahr zusätzlich für jede Paranuss noch einen Buchpreis, der unter allen richtigen Lösungen jeweils einer Paranuss verlost wird (Konkret: 3 Paranüsse, 3 Bücher, 3 Buch-Gewinner).

Wir wünschen allen Teilnehmern viel Spaß bei der Lösung der Aufgaben. Denn eines ist klar: Der Weihnachtsmann wird dieses Jahr erneut dermaßen viele Probleme haben, dass Weihnachten eigentlich schon abgesagt ist, wenn ihr ihm nicht ordentlich helft. :D


Jann1k - Mo 24.11.08 19:06

Ich finde solche Insider-Witze total doof, wenn sie öffentlich gemacht werden und ich sie nicht versteh :(


Gausi - Mo 24.11.08 19:07

Psst. Das ist kein Insider-Witz. ;-)


Marc. - Mo 24.11.08 19:09

user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
Ich finde solche Insider-Witze total doof, wenn sie öffentlich gemacht werden und ich sie nicht versteh :(

Das ist kein Insider-Witz, sondern Tradition.

Edit: Tipp entfernt.


Jann1k - Mo 24.11.08 19:09

Alles was ich nicht versteh, muss per definition ein Insider sein. Am Ende sind das ier brandeie Infos zum Adventsgewinnspiel oder eine Aufwärmaufgabe...

€: Gut da war einer schneller, muss man das selbst lösen oder geschieht das noch oder beides?

€2: @ Marc: zu Spät :P


GericasS - Mo 24.11.08 19:10

Ich wollte grad schon auf Melden klicken :mrgreen:


Marc. - Mo 24.11.08 19:12

user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
€2: @ Marc: zu Spät :P

Ich hab doch nichts gesagt. :mrgreen: Ich mach mich dann mal ans Übersetzen.


GericasS - Mo 24.11.08 19:14

Gibt es da iwelche Tutorials für totale Noobs ( in diesem Bereich ) um das ansatzweise zu verstehen ? :wink:

EDIT : hat sich erübrigt :wink:


Wolle92 - Mo 24.11.08 19:35

für mich nicht ;)

kann mir zwar schon erschließen, was VV, VF, VF, XV und Gv sind, finde aber kein System darin...


jakobwenzel - Mo 24.11.08 19:58

AVDfFdAv GaAfDdöFdAv GGAvFxGaAfDdDxüGaGaAvDxGfFdDa AgDfAvGaAvGa FAAaDx, DdAaGd AgDfAv AaGfAfDd AvDfFdAvFd FDAaFaAvFd?
DFAfDd AxFxAvGf FaDfAfDd DgAvAgAvFdAxAaDxDxGa GaAfDdFfFd AaGfAxGa DAAvGvDfFdFdGaFgDfAvDx, FdAaAfDdAgAvFa DfAfDd DxAvGdVdGdAvGa FAAaDx AaGfAfDd DaAvGaAvDdAvFd DdAaAd, AgAaGaGa AgDfAv FGFxAvDfGaAv GvDfFxDvDxDfAfDd AvGxDfGaGdDfAvFxAvFd :mrgreen:

AXüFx FdäAfDdGaGdAvGa DGAaDdFx AdDfGdGdAv AvDfFdAv GGAvFxGaAfDdDxüGaGaAvDxGfFdDa, GvFf GaDfAfDd AgAvFx AFFfAgAv DgAv FdAaAfDd GgFfFxDdAvFxDaAvDdAvFdAgAvFa ADGfAfDdGaGdAaAdAvFd äFdAgAvFxGd :D


Tilman - Mo 24.11.08 20:10

gagffgavfx, dfafdd axfxavgf fadfafdd gaafddfffd :) gdffdxdxavga gavagagdavfa üadfxdfdaavfdga, dxavdfagavfx fagfgaga dfafdd fadfafdd vdgffdäafddgagd aaadavfx aagfax dvdxavdffdadgfafddgagdaaadavfd adavgaafddfxäfddvavfd ^^

Zitat:
user profile iconjakobwenzelaxüfx fdäafddgagdavga dgaaddfx addfgdgdav avdffdav ggavfxgaafdddxügagaavdxgffdda, gvff gadfafdd agavfx afffagav dgav fdaaafdd ggfffxddavfxdaavddavfdagavfa adgfafddgagdaaadavfd äfdagavfxgd :


aggf gaaaagdfgagd ^^


Marc. - Mo 24.11.08 20:11

ddff ddff ddff! gaafddöfdav ggavfxgaafdddxügagaavdxgffdda, faaaafddgd dxgfgagd aagfax faavddfx.
dfafdd axfxavgfav fadfafdd dgavagavfdaxaadxdxga gaafddfffd gaavddfx aagfax agaaga gvavdfddfdaaafddgdgadaavgvdffdfdgafgdfavdx, aagfafdd gvavfdfd fadffx dxavdfagavfx fddfafddgd aadxdxvdgf ggdfavdx vdavdfgd agaaaxgfavfx gfavadfxdfda addxavdfadavfd gvdffxag.
fddfafddgd fdgffx gvavdfddaaafddgdavfd, gafffdagavfxfd aagfafdd agaaga aaaddf gagdavddgd adavdf fadffx ggfffx agavfx gdgfavfx. :mrgreen:

avagdfgd: agaa fagfgaga dfafdd fadfafdd gddfdxfaaafd aafdgaafdddxdfavgagaavfd. :P
gvdffxag fdffafdd dvfffxfxdfdadfavfxgd.


Regan - Mo 24.11.08 20:26

GVAaFxGfFa FdFfAfDd DvFfFxFxDfDaDfAvFxGd? AGAaGa DfGaGd AgFfAfDd AvDfFdAxAaAfDd AgAa FdFfAfDd AvDfFdAv GFFgFgAvFxAFAaGaAv() DdDfFdGdAvFdAgFxAaFdVdGfGaAvGdVdAvFd.
GVAvFx DfGaGd AvDfDaAvFdGdDxDfAfDd AaGfAx AgDfAv DFAgAvAv DaAvDvFfFaFaAvFd? AXDfFdAgAv DfAfDd GaAvDdFx DfFdGdAvFxAvGaGaAaFdGd GfFdAg AdDfFd AvFxGaGd AgAaFxAaGfAxDaAvDvFfFaFaAvFd, AaDxGa DfAfDd AdAvDf [url]GvGvGv.GvDfDvDfFgAvAgDfAa.AgAv[/url] FdAaAfDd AAAGAXDAGGGX GGAvFxGaAfDdDxüGaGaAvDxGfFdDa DaAvGaGfAfDdGd DdAaAdAv.


GTA-Place - Mo 24.11.08 20:52

Dachte auch schon: Spammer am Werk. Na da muss ich jetzt mal suchen gehen...


Boldar - Mo 24.11.08 21:00

Wie geht man sowas an?


Marc. - Mo 24.11.08 21:01

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Wie geht man sowas an?

Blattpapier + Stift, aufschreiben was dir bekannt ist und daraus versuchen was logisches zu formen. Der Tipp sollte mehr als reichen. :P


Jann1k - Mo 24.11.08 21:08

zum vergleich kann dieser post auch helfen

*snip*

Moderiert von user profile iconNarses: Also darauf darf man auch ruhig selbst kommen. ;)


€: Okay, Code endlich geknackt jetzt gehts ans übersetzen.


Xentar - Mo 24.11.08 21:24

Argh, verdammt..
Normalerweise würde ich sowas ja ignorieren.. aber es kommt von einem Mod, und steht im Bereich "Ankündigungen" :(

Ist Ag und AG das selbe? Auch, wenn ich mir die Antwort schon denken kann (nein).

Edit: Ok, habe eine Theorie, wonach das doch dasselbe sein könnte.
Naa toll, nun hab ich wenigstens eine Beschäftigung, wenn schon keine Simpsons kommen :D


Wolle92 - Mo 24.11.08 21:35

FDAvDfFd, AADa GfFdAg AADA GaDfFdAg FdGfFx AxAaGaGd AgAaGa DaDxAvDfAfDdAv...

@Narses: Das hat aber gedauert...


BenBE - Mo 24.11.08 22:00

FDAGgGdGdAGg DFADaAGgAGg FaDfGd ADaDfAGgGaAGgFGx GGAGgFGxGaAAGxDdDGxüGaGaDGxGfFdDa ;-) DDAaAADa AGgGdGvAaGa DaAGgAADaFGxAaGfAAGxDdGd, GfFa ADaDfAGg VdGf AGGFdGdGaAAGxDdDGxüGaGaAGgDGxFd, AaAADaAGgFGx DdAGgVa, AAGxFfFfDGx DaAGgFaAaAAGxDdGd FaDfGd FdGfFGx XF VDAGgDfAAGxDdAGgFd VXXF VDAGgDfAAGxDdAGgFd VdGf AGgFdAAGxFfADaDfAGgFGxAGgFd.


FinnO - Mo 24.11.08 22:03

also BenBe... bei mir siehts anders aus ^^


Timosch - Mo 24.11.08 22:05

FDAa, AgAa AdDfFd DfAfDd DgAA FaAaDx DaAvGaFgAaFdFdGd...


FinnO - Mo 24.11.08 22:06

ich auch^^


Tilo - Mo 24.11.08 22:13

So ein Mist,
Schon fertig mit dem Decodierer.
15 min GrobCoden, 15 FeinCode (während Informationsmanagement Vorlesung)
und nun im Zimmer noch 15 bis 30 zum Füllen der Codetabelle.

War troztdem reizvoll.
Hab jetzt noch abendbrot, dann noch etwas an der Seminararbeit schreiben.
Hoffentlich kann ich an den Rätsel werkeln.


Chryzler - Mo 24.11.08 22:18

AAGfAfDd GgFfFd FaDfFx FdAaGdGfAvFxDxDfAfDd AvDfFd DdAvFxVdDxDfAfDdAvGa AGAaFdDvAvGaAfDdFfAvFd, AgAaGaGa DfDdFx AvGfAfDd DgAvAgAvGa DGAaDdFx AgDfAv FAGfAvDdAv FaAaAfDdGd, GfFdGa GVAvDfDdFdAaAfDdGdAvFd GaFf GaAfDdFfAvFd GvDfAv FaFfAvDaDxDfAfDd VdGf FaAaAfDdAvFd. :)

GVDfAv AgDfAv GGAvFxGaAfDdDxGfAvGaGaAvDxGfFdDa DaAvFdAaGf AxGfFdDvGdDfFfFdDfAvFxGd GvAvDf� DfAfDd DaAaFx FdDfAfDdGd, DfAfDd DdAaAd AvDfFdAxAaAfDd AaDxDxAv GAGfAdGaGdDfGdGfGdDfFfFdAvFd AgGfFxAfDd AvDfFd AdDfGaGaAfDdAvFd FDAaAfDdAgAvFdDvAvFd DdAvFxAaGfGaAdAvDvFfFaFaAvFd.


Boldar - Mo 24.11.08 22:18

kann mal jemand ein tipp geben, wie man sowas angeht?


BenBE - Mo 24.11.08 22:21

FFFfFfFgGa, AXAvDdDxAvFx DfFa AVFdAfFxVaFgGdAvFx ;-) DGAvGdVdGd AaAdAvFx: FDAvGdGdAv DFAgAvAv; GaAaß AvGdGvAa FdAv DdAaDxAdAv GAGdGfFdAgAv AgFxAaFd, FaDfFx AgDfAv GDAaAdAvDxDxAv AxüFx AgDfAv AFFfAgDfAvFxGfFdDa VdGf GaAfDdFxAvDfAdAvFd. DFGaGd FaAaDx FdAv FdAvGdGdAv DFAgAvAv; DfAfDd GväFx AaAdAvFx AaGfAfDd AxüFx AgAvFd GGFfFxGaAfDdDxAaDa VdGfFx FDGfGdVdGfFdDa AvDfFdAvGa AFADAF- GaGdAaGdGd AVAFAD-GGAvFxAxAaDdFxAvFdGa AxüFx AgAaGa FdäAfDdGaGdAv DGAaDdFx ;-) AVAFAD DfGaGd AvDfFdAxAaAfDd FdGfFx DxAaFdDaGvAvDfDxDfDa!


Boldar - Mo 24.11.08 22:22

was auch immer da steht, das wird wohl kaum helfen...


Yogu - Mo 24.11.08 22:26

DDAaDxDxFf DFFdGaDfAgAvFx :mrgreen:

DFAfDd DdAaAdAv AgDfAv DxAvGdVdGdAv DdAaDxAdAv GAGdGfFdAgAv FxDfAfDdGdDfDa DaAvFdFfGaGaAvFd. VDGfAvFxGaGd GvGfGaGaGdAv DfAfDd üAdAvFxDdAaGfFgGd FdDfAfDdGd, GvDfAv DfAfDd AaFd AgDfAv AFFfAgDfAvFxGfFdDa DaAvDdAvFd GaFfDxDx, AaAdAvFx AgDfAv DXDfFdDvGa DdAaAdAvFd FaDfFx DaAvDdFfDxAxAvFd ;) GFFdAg FaAaDx AvDdFxDxDfAfDd: AGDfAv DAFxFfß- GfFdAg DVDxAvDfFdGaAfDdFxAvDfAdGfFdDa DfGaGd DgAa AaGfAfDd FdDfAfDdGd AgAaGa FGFxFfAdDxAvFa, FfAgAvFx?

DGAvAgAvFdAxAaDxDxGa DdAaAdAv DfAfDd GaFfAvAdAvFd FaAvDfFdAvFd AvFxGaGdAvFd AGAv- GfFdAg AVFdAfFfAgAvFx DaAvGaAfDdFxDfAvAdAvFd :angel:

DFAfDd AxFxAvGfAv FaDfAfDd GaAfDdFfFd FxDfAvGaDfDa AaGfAx AGAvVdAvFaAdAvFx! :D

DAFxüßAv,
VAFfDaGf

FGGA: GVAaFdFd GvDfFxAg AgAaGa DdDfAvFx AvDfDaAvFdGdDxDfAfDd AaGfAxDaAvDxöGaGd? DFGaGd DgAa GaAfDdDxDfAvßDxDfAfDd AvDfFdAv GvDfAfDdGdDfDaAv AAFdDvüFdAgDfDaGfFdDa, AgDfAv AaDxDxAv AvFxAxAaDdFxAvFd GaFfDxDxGdAvFd, FfAgAvFx? :)

Edit: Danke, EE-Team :D


Boldar - Mo 24.11.08 22:28

ich glaub ich habs... aber dann wäres ja zu einfach...

Also das

Quelltext
1:
2:
DAFxüßAv,
VAFfDaGf

heisst wahrscheinlich

Quelltext
1:
2:
Grüße,
Yogu


Vorallem wo umlaute wahrscheinlich nicht mitverschlüsselt werden.


BenBE - Mo 24.11.08 22:37

@Yogu:
AGDfAv AAFdDvüFdAgDfDaGfFdDa AvFxAxFfDxDaGd VdGf DfDdFxAvFx VDAvDfGd(GdFa) :mrgreen: GVAvFxAgAvFd GaAfDdFfFd AaDxDxAv FdFfAfDd AgDfAv DAAvDxAvDaAvFdDdAvDfGd AdAvDvFfFaFaAvFd, AgAvFd GDAvGxGd FfDdFdAv FxGfFaFxäGdGaAvDxFd VdGf FaüGaGaAvFd, DxAvGaAvFd VdGf DvöFdFdAvFd. ;-)


Boldar - Mo 24.11.08 22:39

ach mist, jetzt muss ich doch noch ein progg für schreiben, ich dachte es geht mnit dem editor...


Wolle92 - Mo 24.11.08 22:46

Analog ist auch manchmal möglich...
Hab hier auch nen Blatt vor mir liegen...


Sinspin - Mo 24.11.08 22:49

GAGfFgAvFx!

AVDfDaAvFdGdDxDfAfDd AvDfFd AdDfGaGaAfDdAvFd VdGf AvDfFdAxAaAfDd AgAvFx AFFfAgAv, AaAdAvFx AvGa GaFfDxDxAvFd DfDdFd DgAa AaDxDxAv DfFxDaAvFdAgGvAaFdFd GaAvDxAdAvFx DaAvDvFdAaAfDvGd AdAvDvFfFaFaAvFd FfDdFdAv GgFfFd GaFf AvDfFdAvFa üAdAvFxAvDfAxFxDfDaAvFd DVAaFdAgDfAgAaGdAvFd GfFa AgAvFd GAFgAaGaGa DaAvAdFxAaAfDdGd VdGf GvAvFxAgAvFd!

GAFf GvDfAv AvGa GaDfAfDd FaFfFaAvFdGdAaFd AaFdDxäGaGaGd GvAvFxAgAv DfAfDd VdGvAaFx GvFfDdDx DvAaGfFa VDAvDfGd AxüFx AgDfAv FXäGdGaAvDxAfDdAvFd AxDfFdAgAvFd. GDFxFfGdVdAgAvFa, AdAvGaGdAvFd AGAaFdDv AaFd AgDfAv AaFxFaAvFd GGAvFxAaFdGaGdAaDxGdAvFx, AgDfAv GvDfAv DfFaFaAvFx FdGfFx VdGfDaGfAfDvAvFd AgüFxAxAvFd ;-) GvAvFdFd AaFdAgAvFxAv AXAvGdGdAv FGFxAvDfGaAv AdAvDvFfFaFaAvFd, GfFdAg AaFd AgDfAv GAFgAvFdAgAvFx AxüFx AgDfAv GvDfAv DfFaFaAvFx GdFfDxDxAvFd FGFxAvDfGaAv!


Yogu - Mo 24.11.08 22:50

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
ich glaub ich habs... aber dann wäres ja zu einfach...

Also das

Quelltext
1:
2:
DAFxüßAv,
VAFfDaGf

heisst wahrscheinlich

Quelltext
1:
2:
Grüße,
Yogu


Vorallem wo umlaute wahrscheinlich nicht mitverschlüsselt werden.

Ach mist, ich hätte das doch weglassen sollen. :mrgreen: Ich denke, user profile iconNarses hat absichtlich kein Gruss hinterlassen. :? :wink:


Tilo - Mo 24.11.08 22:54

@ Boldar

Guckt Dir mal den ersten Post an, insbesondere die Stellen mit den Hyperlinks.
Da habe ich angesetz.


Xentar - Mo 24.11.08 22:58

So, habs nun auch endlich fertig.
Nun hab ich aber keine Lust mehr, noch nen Encoder zu bauen.. darum geh ich erstmal TV gucken.

@Wolle: Danke für den Tipp, das weiß ich nun auch *g*


elundril - Di 25.11.08 00:22

omg, das geht mir immer am meisten am nerv.^^ aber ich hab so ne ahnung was das is, endlich mal.^^


Martok - Di 25.11.08 03:50

DDAaAfDd DgAa... AvFdAgDxDfAfDd ;)

AGAaGa GAVaGaGdAvFa DdDfFdGdAvFx AgAvFa DaAaFdVdAvFd GvüFxAgAv FaDfAfDd DfFdGdAvFxAvGaGaDfAvFxAvFd... AvDfFdAv AVFxGaAvGdVdGfFdDaGaGdAaAdAvDxDxAv DdAaAdAvFd GvDfFx DaDxAaGfAdAv DfAfDd FaDfGdGdDxAvFxGvAvDfDxAv AaDxDxAv.

DFFxDaAvFdAgGvDfAv DvAvFdFdAv DfAfDd AgAaGa AvFdGdGaGdAvDdAvFdAgAv FAGfGaGdAvFx. AXAaDxDxAvFdAgAvFx DAFxFfGaAfDdAvFd AaFdVaFfFdAv?

AfGf
FAAaFxGdFfDv


Tilman - Di 25.11.08 04:06

DFGaGd AvDfDaAvFdGdDxDfAfDd DaAaFdVd AvDfFdAxAaAfDd... GvAvFdFd AgGf AgDfFx AgAvDfFdAv GDAaAdAvDxDxAv AaFdGaAfDdAaGfGaGd GvDfFxGaGd AgGf AxAvGaGdGaGdAvDxDxAvFd AgAaGaGa AgDfAv DfFxDaAvFdAgGvDfAv "DaAvFfFxAgFdAvGd" DfGaGd ^^

FADfFx FgAvFxGaöFdDxDfAfDd DdAaGd AdAvFxAvDfGdGa AgDfAv ÜAdAvFxGaAfDdFxDfAxGd DaAvFdüDaGd, AgAaFxAaGfGa DvFfFdFdGdAv DfAfDd AgAaGa DaAvGaAaFaGdAv GAVaGaGdAvFa AaAdDxAvDfGdAvFd :-)


ene - Di 25.11.08 07:47

Mpmmffmpp Mmpmppfmmfmpmppppp mpmmpppff Mmpmppfmmfmpmppppp mpmmpppff Mmpmppfmmfmpmppppp...fppmffmppmpmmpppff mppmffpppppmmmmpmf


Martok - Di 25.11.08 08:49

user profile iconTilman hat folgendes geschrieben Zum zitierten Posting springen:
DFGaGd AvDfDaAvFdGdDxDfAfDd DaAaFdVd AvDfFdAxAaAfDd... GvAvFdFd AgGf AgDfFx AgAvDfFdAv GDAaAdAvDxDxAv AaFdGaAfDdAaGfGaGd GvDfFxGaGd AgGf AxAvGaGdGaGdAvDxDxAvFd AgAaGaGa AgDfAv DfFxDaAvFdAgGvDfAv "DaAvFfFxAgFdAvGd" DfGaGd ^^

DGAa, GaAfDdFfFd DvDxAaFx. AAAdAvFx GvDfAv DvFfFaFaGd AgDfAvGaAv FFFxAgFdGfFdDa VdGfGaGdAaFdAgAv? FFAgAvFx DdAaGd AvDfFdAxAaAfDd GvAvFx DaAvGaAaDaGd "AXGfAvDxDxAvFd GvDfFx AgDfAv FaAaDx GAVaFaFaAvGdFxDfGaAfDd AaGfGa"?

user profile iconTilman hat folgendes geschrieben Zum zitierten Posting springen:

FADfFx FgAvFxGaöFdDxDfAfDd DdAaGd AdAvFxAvDfGdGa AgDfAv ÜAdAvFxGaAfDdFxDfAxGd DaAvFdüDaGd, AgAaFxAaGfGa DvFfFdFdGdAv DfAfDd AgAaGa DaAvGaAaFaGdAv GAVaGaGdAvFa AaAdDxAvDfGdAvFd :-)


AGAaGa FaAvDfFdGdAv DfAfDd DfFd AgAvFx GAAD FaDfGd GaDfFdFdDxFfGa GvAvDfGdAvFx DaAvFaAaAfDdGd... DfAfDd DdAaAd DfFaFaAvFx GaAfDdöFd DaAvVdäDdDxGd, FfDdFdAv FaAaDx AaGfAxGa DaFxFfGaGaAv DAAaFdVdAv VdGf DaGfAfDvAvFd :roll:


@user profile iconene: red doch kein wirres Zeug :mrgreen:


MH - Di 25.11.08 09:34

FAFfDfFd AaFd AaDxDxAv

AGAaGa GvAaFx FaAaDx GvAaGa DfFdGdAvFxAvGaGaAaFdGdAvGa VdGfFa VDAvDfGdGgAvFxGdFxAvDfAd.
AAAdAvFx FdFfAfDd FaAaDx FdAv AXFxAaDaAv VdGfFa DAAvGvDfFdFdGaFgDfAvDx. FAGfGaGa FaAaFd GaDfAfDd AgAaAxGfAvFx AaFdFaAvDxAgAvFd? GVAvFdFd DgAa, GvAaFdFd GfFdAg GvDfAv?

AGAaFdFd AvFxGaGdFaAaDx
FAAaFxAfFf


Sirke - Di 25.11.08 09:51

DDAaDxDxFf VdGfGaAaFaFaAvFd,

GAAvDdFx GaAfDdöFdAv DVFdFfAdAvDxAaGfAxDaAaAdAv DdAaAdGd DfDdFx AvGfAfDd AvDfFdAxAaDxDxAvFd DxAaGaGaAvFd =) DXAvDfAgAvFx GvAaFx AgAaGa DaAaFdVdAv FdDfAfDdGd GaFf GaAfDdGvAvFx, GaFfAgAaGaGa FdAaAfDd VVVF FADfFdGfGdAvFd DVFdFfAdAvDxFd AaGfAfDd GaAfDdFfFd GvDfAvAgAvFx GAAfDdDxGfGaGa GvAaFx. AXGfAvFx FdAaAvAfDdGaGdAvGa DGAaDdFx AaDxGaFf FaAaDx AvGdGvAaGa GaAfDdGvDfAvFxDfDaAvFxAvGa AaGfGaGaGfAfDdAvFd ;-)

GVAvFxAgAv AgDfAvGaAvGa DGAaDdFx AaGfAfDd FaAaDx GGAvFxGaGfAfDdAvFd AgDfAv VDAvDfGd VdGf AxDfFdAgAvFd AaFd AgAvFd DAAvGvDfFdFdGaFgDfAvDxAvFd GdAvDfDx VdGf FdAvDdFaAvFd. GAFfAxAvFxFd DfAfDd FdDfAfDdGd VdGf GgDfAvDx AxüFx AgDfAv GFFdDf GdGfFd FaGfGaGa ;-)

DAFxGfAvGaGaAv,
GADfFxDvAv


Tilo - Di 25.11.08 11:44

Ihr macht Euch aber auch eine Mühe, noch deine Kodierer zu schreiben,
mir hat der Dekodierer gereicht.


Regan - Di 25.11.08 12:52

user profile iconTilo hat folgendes geschrieben Zum zitierten Posting springen:
Ihr macht Euch aber auch eine Mühe, noch deine Kodierer zu schreiben,
mir hat der Dekodierer gereicht.

AAAdAvFx AgAaGa DfGaGd AgFfAfDd FdDfAfDdGd GaAfDdGvAvFx. DFAfDd DdAaAdAv AvGa AvDfFdAxAaAfDd FaDfGd AvDfFdAvFa GGAaDxGfAvDXDfGaGdAVAgDfGdFfFx DaAvDxöGaGd. AGAvFx GdFxAaFdGaAxFfFxFaDfAvFxGd FaDfFx AgAaGa DdDfFd GfFdAg DdAvFx.


BenBE - Di 25.11.08 13:23

AADxGaFf DfAfDd DdAaAd AgDfAv ÜAdAvFxGaAfDdFxDfAxGd AaDxGa DVFdFfGvFd FGDxAaDfFdGdAvGxGd AAFdDaFxDfAxAx DdAvFxDaAvFdFfFaFaAvFd ... DFGaGd DfFxDaAvFdAgGvDfAv AaGfAfDd GaAfDdFfFd GdFxAaAgDfGdDfFfFd, AgAaGaGa FaAaFd AgDfAv FaDfGd AgAvFa AXFfFxFaAaGdGaGdFxDfFdDa 'AAAgGgAvFdGdGaDaAvGvDfFdFdGaFgDfAvDx %Ag' AgAaFxGaGdAvDxDxAvFd DvAaFdFd ;-)


GTA-Place - Di 25.11.08 13:30

Mir reicht das Dekodieren auch. @Martok: Guck dir einfach mal die Infos zur Verschlüsselung an. Dann weißte, wie sie funktioniert :P


Boldar - Di 25.11.08 15:22

DfAfDd DdAaAdGa AvFdAgDxDfAfDd DaAvAfDdAvAfDvGd... FaDfGd DdäGfAxDfDaDvAvDfGdGaAaFdAaDxVaGaAv DdAaAd DfAfDd AvFxGaGdFaAaDx Av FxAaGfGaDaAvAxGfFdAgAvFd GfFdAg AgAaFdFd AgAvFd FxAvGaGd... AgAvFx GdDfFgFg FaDfGd AgAvFd DxDfFdDvGa GvAaFx DaGfGd!!

DdAvGfGdAv DvAvDfFd DaFxGfGaGa, GaFfFdGaGd GvDfFxAgGa VdGf AvDfFdAxAaAfDd!!


jasocul - Di 25.11.08 17:00

AGAaGa DfGaGd AgAaGa AvFxGaGdAv DGAaDdFx, DfFd AgAvFa DfAfDd AaFd AgAvFa GVAvGdGdAdAvGvAvFxAd GdAvDfDxFdAvDdFaAvFd AgAaFxAx.
DDFfAxAxAvFdGdDxDfAfDd DdAaAdAv DfAfDd DaAvFdGfDa VDAvDfGd, GfFa FaDfGdVdGfFaAaAfDdAvFd. FADfGd DVFfAgDfAvFxGfFdDa DdAaAdAv DfAfDd VdGvAaFx AdDfGaDdAvFx FdDfAfDdGd GgDfAvDx VdGf GdGfFd DaAvDdAaAdGd, AaAdAvFx AgDfAvGaAvFx GDAvDfDx DfGaGd FaDfFx AgFfAfDd VdDfAvFaDxDfAfDd DxAvDfAfDdGd DaAvAxAaDxDxAvFd.
FAAaDx GaAvDdAvFd, GvAaGa AgAa FdFfAfDd DvFfFaFaGd.


Boldar - Di 25.11.08 17:06

jasocul: ich glaube, bei dir sind die m's falsch kodiert!


freedy - Di 25.11.08 17:15

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
jasocul: ich glaube, bei dir sind die m's falsch kodiert!


Nur das eine... bestimmt nur ein Tippfehler. ;-)


Yogu - Di 25.11.08 17:15

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
jasocul: ich glaube, bei dir sind die m's falsch kodiert!

Nicht die m's, sondern die M's.

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Nur das eine... bestimmt nur ein Tippfehler. ;-)

Wohl ein Tippfehler im Skript, es sind nämlich zwei von zwei M's falsch codiert. ;)


elundril - Di 25.11.08 17:17

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
jasocul: ich glaube, bei dir sind die m's falsch kodiert!

Nicht die m's, sondern die M's.

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Nur das eine... bestimmt nur ein Tippfehler. ;-)

Wohl ein Tippfehler im Skript, es sind nämlich zwei von zwei M's falsch codiert. ;)


:shock: bei mir in der Übersetzungstabelle kommen keine M oder m vor!!! Uaaaaaaa, ich hab schon wieder was falsch! Mist!


freedy - Di 25.11.08 17:25

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Wohl ein Tippfehler im Skript, es sind nämlich zwei von zwei M's falsch codiert. ;)


"GFFgGa", das andere habe ich übersehen. Gut aufgepasst, Yogu.


jasocul - Di 25.11.08 17:29

GVAvFdFd FaAaFd AXGA FaDfGd AXAA GgAvFxGvAvAfDdGaAvDxGd, DvAaFdFd AgAaGa FgAaGaGaDfAvFxAvFd.
DDAaAdAv AvGa DgAvGdVdGd FfAdAvFd DvFfFxFxDfDaDfAvFxGd.

Fehler ist raus und auch im letzten Beitrag von mir verbessert.
Danke für den Hinweis.


baka0815 - Di 25.11.08 17:42

FDAaDgAa, GaFfGgDfAvDx FaAvDdFx AAGfAxGvAaFdAg DfGaGd AvDfFd AVFdAfFfAgAvFx AgAaFdFd AaGfAfDd FdDfAfDdGd FaAvDdFx, GvAvFdFd FaAaFd FxAaGfGaDdAaGd, GvDfAv'Ga DaAvDdGd. ;)

AAAdAvFx DfAfDd FaGfGaGa DaAvGaGdAvDdAvFd, AgAaGaGa DfAfDd AaGfAfDd VdGfAvFxGaGd AaFd GAFgAaFa GfFdAg AvFxGaGd AgAaFdAaAfDd AaFd AgDfAvFXäGdGaAvDx DaAvAgAaAfDdGd DdAaAdAv - AaAdAvFx DfAfDd AdDfFd DgAa AaGfAfDd FdFfAfDd FdDfAfDdGd GaFf DxAaFdDaAv DdDfAvFx.

AvAgDfGd: AGAaFdDvAv, DdAaGd FaDfFx FaAvDfFdAvFd AAFxAdAvDfGdGaGdAaDa AvGdGvAaGa AaFdDaAvFdAvDdFaAvFx DaAvFaAaAfDdGd! :)


elundril - Di 25.11.08 17:46

ohhm man das wird zach das ganze topic zu übersetzen....


baka0815 - Di 25.11.08 17:49

user profile iconMH hat folgendes geschrieben Zum zitierten Posting springen:
FAFfDfFd AaFd AaDxDxAv

AGAaGa GvAaFx FaAaDx GvAaGa DfFdGdAvFxAvGaGaAaFdGdAvGa VdGfFa VDAvDfGdGgAvFxGdFxAvDfAd.
AAAdAvFx FdFfAfDd FaAaDx FdAv AXFxAaDaAv VdGfFa DAAvGvDfFdFdGaFgDfAvDx. FAGfGaGa FaAaFd GaDfAfDd AgAaAxGfAvFx AaFdFaAvDxAgAvFd? GVAvFdFd DgAa, GvAaFdFd GfFdAg GvDfAv?

AGAaFdFd AvFxGaGdFaAaDx
FAAaFxAfFf

GAGdAvDdGd AgFfAfDd AaDxDxAvGa DfFa AVDfFdDaAaFdDaGaFgFfGaGdDfFdDa, AvFxGaGdAvFdGa AgAaGaGa GfFdAg VdGvAvDfGdAvFdGa AdDfGa GvAaFdFd FaAaFd GaDfAfDd AaFdDaAvFaAvDxAgAvGd DdAaAdAvFd FaGfGaGa.


Tilman - Di 25.11.08 18:24

user profile iconene hat folgendes geschrieben Zum zitierten Posting springen:
Die Besten der Besten der Besten...wieder einmal

:D


Jakob_Ullmann - Di 25.11.08 18:48

Wann gibt's eigentlich die Auflösung? :D


Regan - Di 25.11.08 18:52

Ich glaub in 10 Minuten sollte das der Fall sein. Mich interessiert vor allem das Lösungsprogramm, weil meines etwas kompliziert geschrieben ist.

Edit: OK, beim letzten Mal hat es länger gedauert, wir sollten uns noch etwas gedulden :wink: .


elundril - Di 25.11.08 19:08

hab zwar die verschlüsselung geknackt aber mein Programm will noch nicht so recht.^^


Jakob_Ullmann - Di 25.11.08 19:30

Sollte das dann nicht einfach mit StringReplace zu lösen sein? :D Ich hätte mir ja gerne die Zeit genommen, den Code zu knacken, aber leider gibt das meine Zeit momentan nicht her. :o


elundril - Di 25.11.08 19:33

stringreplace ist aber langsam. ich wollt das ein bisschen performancemäßig gut gestalten.


Yogu - Di 25.11.08 19:43

DFAfDd DdAaAdAv AvGa GaFf DaAvDxöGaGd (AgAvFd AxFfDxDaAvFdAgAvFd AFFfAgAv FdFfAfDdFaAaDx AvFdAfFfAgAvFd, AgAaFaDfGd DfDdFx DfDdFd AaGfAfDd FdGfFx DxAvGaGd, GvAvFdFd DfDdFx AgAaGa GvFfDxDxGd ;)):

AADAAAGgAXGx AAAXAXAxAADaAAGg AGAgAAAaDAAg AADaAXAxAAAxAGAg AAGgAGAxAXAg AAGgAGAxAGAaAAGgAXAgAAGgDAAa GGAGAAAaAGAgAGGxAAGgAXAgDAAaGGAaDAAaDAAgAAGgAXAa, AAAgAAGgDAAaDAAgAAGgAGAgAAGgAXAgAADa AAAaDAAxDAAa AAAA, AADA, AAGX, AGAA, DADA, DAGX. AGDAAAGgDAAgGGAgDAAg AXAaDAAxDAAaDAAa AXAgAXAxAAAxAGAg AAGgAGAxAXAgAAGg GGAGAAAaAGAgAGGx AAAaDAAxDAAa AADaAAGgAXAa AAAaAGGgDAAgDAAxAAGgAGGxAGGxAAGgAXAg AAAGDAAxAAAxAGAgDAAaDAAgAAAaAAAgAAGgAXAg / AADaAAGgAXGx AAAaAGGgDAAgDAAxAAGgAGGxAGGxAAGgAXAg GGAGAAAaAGAgAGGx AAAgAAGgAXGxAAGgAAAxAGAgAXAgAAGgDAAg DAGgAAGgAXGxAADaAAGgAXAg: AAAA DAGgAGAxAXGxAADa GGAgDAAx GGAx, AAAG GGAgDAAx GGDa; GGAG GGAgDAAx GGGgGXAg; GGDa GGAgDAAx GGGgGXAx. AADAAGAxAAGg GGAGAAAaAGAgAGGx AGGgAAAaAXAgAXAg AADaAAAaAXAgAXAg AAGgAGAxAXAgAAGxAAAaAAAxAGAg AXAaAGAxDAAg AGAGAGAxAGGxAAGxAAGg DADaAXAxAXAg AXAaAXAxAADa DAAxAXAgAADa AADaAGAxDADa AGAxAXAg AADaAGAxAAGg GGAgDAGgAAGgAGAx GXAxAAGgAXGx-GGAGAAAaAGAgAGGxAAGgAXAg DAAxAXAaAGAaAAGgDAGgAAAaAXAgAADaAAGgAGGxDAAg DAGgAAGgAXGxAADaAAGgAXAg, DAAxAXAgAADa AAAaDAAxDAAa AADaAGAxAAGgDAAaAAGgAXAg GGAGAAAaAGAgAGGxAAGgAXAg DAGgAAGgAXGxAADaAAGgAXAg AADaAAAaAXAgAXAg AADaAGAxAAGg AAAGDAAxAAAxAGAgDAAaDAAgAAAaAAAgAAGgAXAg AAAaDAAxDAAa AAGgAGAxAXAgAAGgAXAa AAAaAXGxAXGxAAAaGGAa AAAaDAAxDAAaAGAaAAGgAGGxAAGgDAAaAAGgAXAg, AADaAAAaDAAaDAAa AADaAGAxAAGg AAAGDAAxAAAxAGAgDAAaDAAgAAAaAAAgAAGgAXAg AAAA, AADA, AAGX, AGAA, DADA DAAxAXAgAADa DAGX AAGgAXAgDAAgAGAgäAGGxDAAg.

GAFfGgDfAvDx VdGf FaAvDfFdAvFa AADxDaFfFxDfGdDdFaGfGa. GAGfAfDdAvFd&AVFxGaAvGdVdAvFd DfGaGd FdAaGdüFxDxDfAfDd AaGfAfDd FaöDaDxDfAfDd, AaAdAvFx DxAaFdDaGaAaFaAvFx. :)


Jakob_Ullmann - Di 25.11.08 20:02

Ähäm. :? :shock:


Boldar - Di 25.11.08 20:05

GdFfGdAaDx GaDfFdFdAxFxAvDf^^


Tilman - Di 25.11.08 20:14

DFAfDd DdAaAdAv AgAaGa GaFf DaAvFaAaAfDdGd:

AXAaAAAaAXAg AXAgAAGgAGAgAXAaAAGg AADaAAAaDAAa
AAAaAGGxAXDaAGAgAAAaAAAgAAGgDAAg AXDaAGGxDAAxDAAa AADaAGAxAAGg
GGAgAAAaAGAgAGGxAAGgAXAg:
AAAaAAAgAAAxAADaAAGgAAGxAGAaAGAgAGAxAGDaAGGgAGGxAXAaAXAgAXAxAXDa
AXGgAXGxDAAaDAAgDAAxDADaDAGgDAGxGGAaGGAgGGAXGGDAGGGGGGGXGXAAGXAGGXAXGXAXGXDAGXGGGXGX
DAAxAXAgAADa AXAxAXGxAADaAXAgAAGg AADaAGAxAAGgDAAaAAGg
AGAxAXAg AAGgAGAxAXAg AXGXAAAaDAAaDAAgAAGgAXGx
GXAXDAGxGXAX AAAaAXAg:

AAAaAAAgAAAxAADaAAGgAAGx
AGAaAGAgAGAxAGDaAGGgAGGx
AXAaAXAgAXAxAXDaAXGgAXGx
DAAaDAAgDAAxDADaDAGgDAGx
GGAaGGAgGGAXGGDAGGGGGGGX
GXAAGXAGGXAXGXDAGXGGGXGX

DAAxAXAgAADa AAAgAAGgGGAgAAGgAGAxAAAxAGAgAXAgAAGg
AAAgAAGgAGAxAADaAAGg
AAAAAAAxAGAgDAAaAAGgAXAg AXAaAGAxDAAg AAAaAADaAAGxAGAaDADaDAGx -
AAGxAAGgAXGxDAAgAGAxAGAa AGAxDAAaDAAg AADaAGAxAAGg DAGGDAAxAXGxDAAaDAAg


jaenicke - Di 25.11.08 20:14

user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Ich hätte mir ja gerne die Zeit genommen, den Code zu knacken, aber leider gibt das meine Zeit momentan nicht her. :o
Die 15 Minuten hatte ich dann doch, meine Lösung ist zwar performancemäßig schlimm, aber sie erfüllt ihren Zweck. Dann nochmal 10 Minuten damit das Ganze etwas praktikabler war. ;-)

// EDIT:
@user profile iconTilman: Ein Zeilenumbruch in deinem Post vor meinem wäre nicht schlecht, damit bei kleineren Bildschirmgrößen das Forum nicht so weit nach rechts aus den Fugen gerät... ;-)


Tilman - Di 25.11.08 20:26

jo sry habs geändert ^^
Mein Beitrag entspricht jetzt dem Yogumax-Format *gg


Xentar - Di 25.11.08 20:49

Habs auch erst mit StringReplace probiert.
Bin dann aber auf die Nase gefallen, weil die Codierungen sich halt überschneiden, und StringReplace da ohne Rücksicht auf Verluste durchmäht ;) Da wurden dann teilweise Codes ersetzt, die zu zwei verschiedenen Buchstaben gehörten, nur weil diese halt direkt nebeneinander stehen.. ach blah, weiß nicht, wie ich das ausdrücken soll, aber ihr wisst sicher, was ich meine :D


Jakob_Ullmann - Di 25.11.08 21:35

So ungefähr. Ich dachte, ein Buchstabe ist immer mit genau einem Großbuchstaben und beliebigen Kleinbuchstaben kodiert (sah so aus).


Zeodos - Mi 26.11.08 11:11

user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Habs auch erst mit StringReplace probiert.
Bin dann aber auf die Nase gefallen, weil die Codierungen sich halt überschneiden, und StringReplace da ohne Rücksicht auf Verluste durchmäht ;) Da wurden dann teilweise Codes ersetzt, die zu zwei verschiedenen Buchstaben gehörten, nur weil diese halt direkt nebeneinander stehen.. ach blah, weiß nicht, wie ich das ausdrücken soll, aber ihr wisst sicher, was ich meine :D


hi, du könntest in dem chiffre-text die Bigramme erst durch platzhalter (zb %) voneineander trennen, wenn du die dann übersetzt, stehen sie nicht direkt nebeneinander und werden nicht noch ein zweites mal übersetzt ;-)


jaenicke - Mi 26.11.08 11:44

:welcome: ;-)
Dann kann man die Ersetzung aber auch gleich vornehmen, alles andere dauert nur unnötig länger. Ich selbst habe um ständige Stringneubildungen zu verhindern gar nicht direkt mit Strings gearbeitet bei der Ersetzung.


freedy - Mi 26.11.08 11:53

Ist das ganze nicht einfachste Automatentheorie? :gruebel: Es gibt doch bei den Zeichen nur gültige Zustände, wenn nicht z. B. ',' wird das Zeichen übernommen.


GTA-Place - Mi 26.11.08 13:33

So hab ich es auch gemacht, alles was nicht aus zwei Teilen besteht oder nicht der Vorlage entspricht wird unverändert übernommen.


jaenicke - Mi 26.11.08 13:34

Die Lösung an sich ist einfach, aber wenn du für jeden Buchstaben durch Verkettung einen neuen String erstellst, dann dauert das ganze und verbraucht viel Speicher. Ich kenne leider keine direkte Möglichkeit diese teilweise behindernde Automatik bei der Verwendung von Strings zu verhindern, deshalb habe ich einfach keine Delphi-Strings verwendet.


GTA-Place - Mi 26.11.08 13:36

Naja, kommt es hier wirklich auf Geschwindigkeit und geringen Speicherverbrauch an? :lol:


jasocul - Mi 26.11.08 13:40

Wenn offiziell aufgelöst wurde, kann man ja mal die Algos gegeneinander antreten lassen.


BenBE - Mi 26.11.08 13:49

Dann optimiere ich meinen aber nochma :P Der ist derzeit noch recht straight-forward ...


jasocul - Mi 26.11.08 13:59

Dann miss aber auch jetzt, damit du die Verbesserung siehst.
Der Eingangsbeitrag benötigt in meiner nicht optimierten Routine 15 ms. Geprüft mit GetTickCount.


GTA-Place - Mi 26.11.08 14:10

Bei meiner Variante mit verketteten Delphi-Strings zwischen 0 und 15ms.


freedy - Mi 26.11.08 14:12

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Bei meiner Variante mit verketteten Delphi-Strings zwischen 0 und 15ms.


Womit hast du das gemessen? QueryPerformance oder TickCount? ;-)


alias5000 - Mi 26.11.08 14:17

ach mensch, es ist ja bald schon wieder Advent! Grad wo ich diesen Titel hier seh, wird man richtig dran erinnert :)

bis denne...


jaenicke - Mi 26.11.08 14:30

AADxDxAv, AgDfAv AgAaGa DdDfAvFx GaAfDdFfFd AvFdGdGaAfDdDxGfAvGaGaAvDxGd DdAaAdAvFd, DvFfAvFdFdAvFd GaDfAfDd DgAa GaAfDdFfFdFaAaDx AgAvFd FVGfAvDxDxGdAvGxGd AaFdGaAfDdAaGfAvFd.
GaDg-AdAvFxDxDfFd.AgAv/GaAvFxGgDfAfAv/AgAx/AAFdDvGfAvFdAgDfDaGfFdDa.VdDfFg (DvFfFgDfAvFxGd AgAvFd DXDfFdDv AvDfFdAxAaAfDd)

DVDxDfAfDvGd VdGfAvFxGaGd DfFa AADxFgDdAaAdAvGdAxAvFdGaGdAvFx AaGfAx DXAaAgAvFd GfFa AgAvFd AFFfAgAv VdGf DxAaAgAvFd, AgAaFdFd AxGfFdDvGdDfFfFdDfAvFxAvFd GGAvFx- GfFdAg AVFdGdGaAfDdDxGfAvGaGaAvDxGfFdDa. AGDfAv DDDfFdVdGfAxGfAvDaAvFd-DVFdFfAvFgAxAv GvAaFxAvFd VdGfFa FaAaFdGfAvDxDxAvFd DdDfFdVdGfAxGfAvDaAvFd AdAvDvAaFdFdGdAvFx GAAvFvGfAvFdVdAvFd FfAgAvFx AvDfFdVdAvDxFdAvFx ADGfAfDdGaGdAaAdAvFd.

VDGf FaAvDfFdAvFx GGFfFxDaAvDdAvFdGaGvAvDfGaAv: FADfGd AgAvFa FfAdAvFxAvFd DDDfFdVdGfAxGfAvDaAvFd DfFa DDAaGfFgGdAxAvFdGaGdAvFx DdAaAdAv DfAfDd AgDfAv GAAvFvGfAvFdVd AAAgGgAvFdGdGaDaAvGvDfFdFdGaFgDfAvDx DfFd AgDfAv DXDfGaGdAv AvDfFdDaAvAxGfAvDaGd, AgAaFdAaAfDd DfFaFaAvFx GfFdGdAvFd VdGvAvDf FdDfAfDdGd AvFdGdGaAfDdDxüGaGaAvDxGdAv ADGfAfDdGaGdAaAdAvFd FaAaFxDvDfAvFxGd, AVFdGdAvFx FfAgAvFx AgAvFd DVFdFfFgAx GfFdGdAvFd FxAvAfDdGdGa DaAvAgFxüAfDvGd GfFdAg AgAvFd DvFfFxFxAvDvGdAvFd ADGfAfDdGaGdAaAdAvFd AvDfFdDaAvDaAvAdAvFd. GAFfGvAvDfGd GvAaFx AgAaGa FdAaAfDd VVXD FADfFdGfGdAvFd AxAvFxGdDfDa, AgAaFdAaAfDd DaDfFdDa AvGa FdGfFx FdFfAfDd AgAaFxGfFa AgAaGa DaAaFdVdAv DfFd GvAvFdDfDaAvFx AaDxGa AgAvFd AaFdAxAaAvFdDaDxDfAfDdAvFd AfAa. VV - VX GAAvDvGfFdAgAvFd DdDfFdVdGfAdAvDvFfFaFaAvFd.

-----------------------

Mein Code braucht laut QueryPerformanceCounter 26ms inkl. Memoanzeige auf einem 3700+ Athlon64, auf meinem schnelleren PC habe ich es nicht gestestet, dort werden es sicherlich ein paar ms weniger mehr sein, aber letztlich zählt ja ohnehin nur der Vergleich auf dem selben PC.

// EDIT:
Entschlüsselte Version (1:1):

Alle, die das hier schon entschluesselt haben, koennen sich ja schonmal den Quelltext anschauen.
sj-berlin.de/service/df/Ankuendigung.zip [http://www.sj-berlin.de/service/df/Ankuendigung.zip] (kopiert den Link einfach)

Klickt zuerst im Alphabetfenster auf Laden um den Code zu laden, dann funktionieren Ver- und Entschluesselung. Die Hinzufuegen-Knoepfe waren zum manuellen hinzufuegen bekannter Sequenzen oder einzelner Buchstaben.

Zu meiner Vorgehensweise: Mit dem oberen Hinzufuegen im Hauptfenster habe ich die Sequenz Adventsgewinnspiel in die Liste eingefuegt, danach immer unten zwei nicht entschlüsselte Buchstaben markiert, Enter oder den Knopf unten rechts gedrückt und den korrekten Buchstaben eingegeben. Soweit war das nach 25 Minuten fertig, danach ging es nur noch darum das ganze in weniger als den anfaenglichen ca. 2 - 3 Sekunden hinzubekommen.


GTA-Place - Mi 26.11.08 14:50

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Bei meiner Variante mit verketteten Delphi-Strings zwischen 0 und 15ms.


Womit hast du das gemessen? QueryPerformance oder TickCount? ;-)

Genau wie jaenicke mit GetTickCount. QueryPerformance wäre jetzt fies, weil sein 3700+ nicht mit meiner CPU mithalten kann :mrgreen:

EDIT: Tja, wie gesagt. Habs mal ausprobiert :mrgreen: 1,26ms inkl. Anzeige :-P @jaenicke: Kanns dir ja mal schicken, dann kannste es auf deinem Athlon ausprobieren.


jasocul - Mi 26.11.08 15:00

Ich habe nur die Umwandlung gemessen. Ein- und Ausgabe sind nicht dabei.
Habe jetzt eine optimierte Variante, die mir nahezu immer 0 zurück gibt. 8)


GTA-Place - Mi 26.11.08 15:03

Ohne Ein- und Ausgabe? Mein Souce kommt nicht unter 1,25ms - auch wenn ich Ein- und Ausgabe weglasse :bawling:


Narses - Mi 26.11.08 15:04

Moin!

Dieses Jahr haben wir eine Polybios-Verschlüsselung verwendet, genaueres kann man hier nachlesen [http://de.wikipedia.org/wiki/ADFGX]. ;)

Viel Spaß noch beim Optimieren - dann ist die Zeit bis zum 01.12. nicht mehr so lang(weilig)... :zwinker:

cu :wave:
Narses


freedy - Mi 26.11.08 15:07

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Mein Code braucht laut QueryPerformanceCounter 26ms inkl. Memoanzeige auf einem 3700+ Athlon64, auf meinem schnelleren PC habe ich es nicht gestestet, dort werden es sicherlich ein paar ms weniger mehr sein, aber letztlich zählt ja ohnehin nur der Vergleich auf dem selben PC.


Ich liege mit QueryPerformanceCounter und Memoanzeigen bei 15ms. ;-)

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Habs mal ausprobiert :mrgreen: 1,26ms inkl. Anzeige :-P


Glaube ich dir irgendwie nicht. Zeig mal deine Sourcen ;-)


jaenicke - Mi 26.11.08 15:08

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Bei meiner Variante mit verketteten Delphi-Strings zwischen 0 und 15ms.


Womit hast du das gemessen? QueryPerformance oder TickCount? ;-)

Genau wie jaenicke mit GetTickCount. QueryPerformance wäre jetzt fies, weil sein 3700+ nicht mit meiner CPU mithalten kann :mrgreen:
Ich hab den Performance Counter benutzt ;-). Und ich werde es auf dem 6000er Dual mal testen.

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
EDIT: Tja, wie gesagt. Habs mal ausprobiert :mrgreen: 1,26ms inkl. Anzeige :-P @jaenicke: Kanns dir ja mal schicken, dann kannste es auf deinem Athlon ausprobieren.
Jetzt kannst du es ja anhängen ;-).
Ich werde den Link in meinem letzten Post auch mal offenlegen.


GTA-Place - Mi 26.11.08 15:09

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Bei meiner Variante mit verketteten Delphi-Strings zwischen 0 und 15ms.


Womit hast du das gemessen? QueryPerformance oder TickCount? ;-)

Genau wie jaenicke mit GetTickCount. QueryPerformance wäre jetzt fies, weil sein 3700+ nicht mit meiner CPU mithalten kann :mrgreen:
Ich hab den Performance Counter benutzt ;-).

Nein, hast du nicht :mrgreen:

user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
Dann miss aber auch jetzt, damit du die Verbesserung siehst.
Der Eingangsbeitrag benötigt in meiner nicht optimierten Routine 15 ms. Geprüft mit GetTickCount.


jaenicke - Mi 26.11.08 15:10

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Nein, hast du nicht :mrgreen:

user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
Dann miss aber auch jetzt, damit du die Verbesserung siehst.
Der Eingangsbeitrag benötigt in meiner nicht optimierten Routine 15 ms. Geprüft mit GetTickCount.
Vergleich mal die Namen ;-).


jasocul - Mi 26.11.08 15:10

Meins im Anhang, ohne Source.
Wer will kann dann ja vergleichen.


GTA-Place - Mi 26.11.08 15:11

Eigentlich hab ich dich ja auch gar nicht gemeint, sondern den vor mir :mrgreen:

EDIT: Den da ----^
EDIT2: Ihr bringt mich ganz durcheinander. Ich meinte doch den anderen...


jaenicke - Mi 26.11.08 15:16

user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
Meins im Anhang, ohne Source.
Wer will kann dann ja vergleichen.
Naja, wenn ich GetTickCount verwende ist es bei mir auch 0^^, das ist einfach nicht genau genug um da etwas anzuzeigen^^. ;-)


freedy - Mi 26.11.08 15:18

Hier mal mein Programm...


jaenicke - Mi 26.11.08 15:23

Wobei ich dazu noch sagen muss:
Ich habe nicht die Verschlüsselungsmethode eingebaut, obwohl mir die schon klar war, sondern ich habe eine reine Ersetzung nach Tabelle gemacht, was natürlich etwas langsamer ist, auch wenn ich versucht habe das Nachschlagen zu optimieren.


jasocul - Mi 26.11.08 15:41

Habe oben mal eine Variante mit QueryPerformanceCounter angehängt.
Meine Routine arbeitet zur Zeit ganz traditionell mit String-Verarbeitung. Hat also noch einiges Optimierungspotential.


BenBE - Mi 26.11.08 20:30

Ich optimiere meine PHP-Version nachher noch durch eine Portierung nach Delphi ... hab ne Idee, wie ich die 1,26ms locker schlagen können müsste ;-)


jaenicke - Mi 26.11.08 22:05

So, hab meine Version gerade auf dem 6000er getestet, dort braucht die inkl. Aktualisierung 0,8ms.


Yogu - Mi 26.11.08 22:15

Ha! 0,36 Millisekunden! :D

(2,59GHz x2)

Mein Algorithmus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
const          
  CharCount = 6;
  Chars: array[0..CharCount-1of Char = ('a''d''f''g''v''x');   
  UpperChars: array[0..CharCount-1of Char = ('A''D''F''G''V''X');

function TMainForm.Decrypt(const S: String): String;
var i, j, k, DecryptedPos, Len: Integer; C, C1, C2: Char; Num: Byte; Found: Boolean;
begin
  SetLength(Result, Length(S));
  DecryptedPos := 1;
  i := 1;
  Len := Length(S);
  while i <= Len do
  begin
    C1 := S[i];
    C2 := S[i+1];

    Found := False;
    for j := 0 to CharCount-1 do
    begin
      if (C1 = Chars[j]) or (C1 = UpperChars[j]) then
      begin
        for k := 0 to CharCount-1 do
        begin
          if (C2 = Chars[k]) or (C2 = UpperChars[k]) then
          begin
            Num := j*CharCount + k;

            if Num < 26 then
            begin
              if C2 in ['a''d''f''g''v''x'then
                C := Chr(97+Num)
              else
                C := Chr(65+Num);
            end
            else
              C := Chr(22+Num);

            Result[DecryptedPos] := C;
            inc(DecryptedPos);
            inc(i, 2);  
            Found := True;
            Break;
          end;
        end;
      end;
      if Found then Break;
    end;

    if not Found then
    begin
      Result[DecryptedPos] := S[i];
      inc(DecryptedPos);
      inc(i);
    end;
  end;

  SetLength(Result, DecryptedPos-1);
end;

Wer den knackt, ist Kokusnussknacker ;)

(*freu* *freu* *freu*)

Edit: Keine Angst, ich hab mehr als 2,59MHz. :lol:


Wolle92 - Mi 26.11.08 22:20

Yogu, upp mal das Programm mit ms-Anzeige... Ich wette, meiner ist schneller :mrgreen:


Yogu - Mi 26.11.08 22:26

user profile iconWolle92 hat folgendes geschrieben Zum zitierten Posting springen:
Yogu, upp mal das Programm mit ms-Anzeige... Ich wette, meiner ist schneller :mrgreen:

Das werden wir ja sehen :mrgreen:


jaenicke - Mi 26.11.08 22:47

Ja, bei diesen Algorithmen werde ich nicht mithalten können, weil meiner eben ein reiner Tabellenersetzer ist. Dafür kann ich mit meinem auch andere Ersetzungsalgorithmen knacken.

Aber ich werde noch eine optimierte Version für diesen speziellen Fall basteln, wenn ich die Zeit finde.


der organist - Mi 26.11.08 23:11

Sagt mir mal einer, wie ich die ms messen kann? Ohne Timer auf Intervall 1 und dann hochzählen? Dann probier ich das auch noch mal...


jaenicke - Mi 26.11.08 23:14

Das wäre extrem ungenau. :lol:

Schau dir mal meinen Quelltext zum Beispiel an, oder diesen Link:
http://www.delphipraxis.net/post271529.html#271529


Kha - Mi 26.11.08 23:37

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Mein Algorithmus:

Was hast du denn mit der inneren Schleife vor?
Hab mir mal die Freiheit genommen, deinen Code etwas anzupassen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
function Index(C: Char): Integer; inline;
const Delta = Integer('a') - Integer('A');
begin
  case C of
    'A': Result := 0;
    'D': Result := 1;
    'F': Result := 2;
    'G': Result := 3;
    'V': Result := 4;
    'X': Result := 5;
    'a': Result := Delta + 0;
    'd': Result := Delta + 1;
    'f': Result := Delta + 2;
    'g': Result := Delta + 3;
    'v': Result := Delta + 4;
    'x': Result := Delta + 5;
  else
    Result := -1;
  end;
end;

function Khacrypt(const S: String): String;
var i, j, Len, Num, Num2: Integer; C1, C2: Char;
begin
  SetLength(Result, Length(S));
  i := 1;
  j := 1;
  Len := Length(S);
  while i <= Len do
  begin
    C1 := S[i];
    Num := Index(C1);
    if (Num >= 0and (Num < 6then
    begin
      C2 := S[i + 1];
      // Häfigkeitsanalyse ^^
      Num2 := Index(C2);
      if Num2 >= 0 then
      begin
        Num := 6 * Num + Num2 + Integer('A');
        if Num <= Integer('z'then
          Result[j] := Chr(Num)
        else
          Result[j] := Chr(Integer('0') + Num - Integer('z') - 1);
        Inc(i, 2);
        Inc(j);
        continue;
      end;
    end;
    Result[j] := C1;
    Inc(i);
    Inc(j);
  end;
  SetLength(Result, j);
end;


Quelltext
1:
2:
3:
Benchmark, 100000 Iterationen
Yogu: 343 ms
Meins: 140 ms

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
2,59Mhz
Daran wird's liegen :zwinker: .


der organist - Do 27.11.08 16:18

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das wäre extrem ungenau. :lol:

Schau dir mal meinen Quelltext zum Beispiel an, oder diesen Link:
http://www.delphipraxis.net/post271529.html#271529


Soll heissen:
-Ich benutze die Funktion drei mal, mit unterschiedlichen Übergabewerten und mache zwischen (Start) und (Stop) meinen Test.
-Die Millisekunden werden danach über (Stop - Start) * 1000 / Frequenzy) ausgegeben


Heiko - Do 27.11.08 18:15

user profile iconder organist hat folgendes geschrieben Zum zitierten Posting springen:
-Die Millisekunden werden danach über (Stop - Start) * 1000 / Frequenzy) ausgegeben

Hälst du die Variante für zuverlässig? Mein NB taktet selten über paar Sekunden gleich ;).


Yogu - Do 27.11.08 19:20

user profile iconHeiko hat folgendes geschrieben Zum zitierten Posting springen:
Mein NB taktet selten über paar Sekunden gleich ;).

Das sollte er aber! Wäre sehr seltsam, wenn nicht!


jaenicke - Do 27.11.08 19:24

user profile iconHeiko hat folgendes geschrieben Zum zitierten Posting springen:
Hälst du die Variante für zuverlässig? Mein NB taktet selten über paar Sekunden gleich ;).
Es gibt keine genauere Zeitmessmethode unter Windows. GetTickCount ist relativ ungenau, genauso wie ein Timer o.ä., die Performance Counter sind die einzige sehr genaue Möglichkeit der Zeitmessung.

user profile iconder organist hat folgendes geschrieben Zum zitierten Posting springen:
Soll heissen:
-Ich benutze die Funktion drei mal, mit unterschiedlichen Übergabewerten und mache zwischen (Start) und (Stop) meinen Test.
Ja, fast, nur dass der eine Aufruf eine andere Funktion aufruft (das ist nicht dreimal die selbe Prozedur), um nämlich die Zeit zwischen Start- und Endwert interpretieren zu können. ;-)


Kha - Do 27.11.08 23:14

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt keine genauere Zeitmessmethode unter Windows. GetTickCount ist relativ ungenau, [...]
Genauso ungenau ist es, nur einen einzelnen Wert zu messen, da springt dir jeder Statistiker an die Decke ;) . Und bei zehntausenden von Wiederholungen dürfte dann auch GetTickCount exakt genug sein :) .


Tilman - Fr 28.11.08 01:15

Man könnte auch versuchen zu messen wieviele Buchstaben(-Paare) eure Algos in 30 Sekunden kodieren / dekodieren. Das wäre vielleicht ein Wert den man besser vergleichen kann.

Wobei ich persönlich den 100. Wettbewerb "wer schreibt den schnellsten Algo" nicht mehr sooo prickelnd finde ;) ich hab als 2. hier enkodiert reingeschrieben und mich nen Keks darüber gefreut, das genügt mir ^^

P.S. an die Schöpfer des Rätsels:
interessant finde ich in dem Zusammenhang das Wort "Adventsgewinnspiel". Denn es scheint die Antwort auf die Frage zu sein "Geben Sie ein Wort an, welches möglichst viele Informationen zum adfgvx-Kode liefert". Zusammen mit der Zahl 2008 kommen doch tatsächlich alle Pre- und Postfixe darin vor, die Häufigsten Buchstaben E,N,I,S,A und mit 00, NN sowie weiteren Buchstaben ließ sich auch leicht erschließen dass es ein Monoalphabetisches Verfahren ist.

Natürlich weiß ich dass das Wort in jedem Jahr das selbe ist - aber es war hier wirklich perfekt.


jaenicke - Fr 28.11.08 02:37

So, ich habe es jetzt auf dem 3700er auf 0,069ms gedrückt, 6000er 0,044ms. Ein Klick auf Start im Anhang macht 1000 Durchläufe.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
const
  CharList1: array[65..122of Byte = (00010230000000,
    0000000405000000000001023,
    0000000000000040500);
  CharList2: array[65..122of Byte = (60070890000000,
    000000010011000000000001023,
    0000000000000040500);
  CharTable: array[0..5of array[0..11of Char =
    (('a''b''c''d''e''f''A''B''C''D''E''F'),
     ('g''h''i''j''k''l''G''H''I''J''K''L'),
     ('m''n''o''p''q''r''M''N''O''P''Q''R'),
     ('s''t''u''v''w''x''S''T''U''V''W''X'),
     ('y''z'' '' '' '' ''Y''Z''0''1''2''3'),
     (' '' '' '' '' '' ''4''5''6''7''8''9'));

var
  CurIn, CurOut, Len: Integer;
  Chars: array of Char;
  tmp: string;
  StartTime, EndTime, Freq: Int64;
  i: Integer;
begin
  QueryPerformanceFrequency(Freq);
  QueryPerformanceCounter(StartTime);

  for i := 1 to 1000 do
  begin
    tmp := memInput.Text;
    Len := Length(tmp);
    SetLength(Chars, Len);
    CopyMemory(@Chars[0], @tmp[1], Len);
    CurIn := 0;
    CurOut := 0;
    while CurIn < Len do
    begin
      if not (Chars[CurIn] in ['a'..'z''A'..'Z']) then
      begin
        Chars[CurOut] := Chars[CurIn];
        Inc(CurIn);
      end
      else
      begin
        Chars[CurOut] := CharTable[CharList1[Ord(Chars[CurIn])]]
          [CharList2[Ord(Chars[CurIn + 1])]];
        Inc(CurIn, 2);
      end;
      Inc(CurOut);
    end;
    SetLength(Chars, CurOut);
    SetLength(tmp, CurOut);
    CopyMemory(@tmp[1], @Chars[0], CurOut);
    memOutput.Text := tmp;
  end;

  QueryPerformanceCounter(EndTime);
  ShowMessage(FormatFloat('0.000', (EndTime - StartTime) / Freq) + ' ms');
end;


// EDIT:
Und mit ein wenig Pointerspielerei liege ich jetzt bei 0,032ms.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
const
  CharList1: array[65..122of Byte = (00010230000000,
    0000000405000000000001023,
    0000000000000040500);
  CharList2: array[65..122of Byte = (60070890000000,
    000000010011000000000001023,
    0000000000000040500);
  CharTable: array[0..5of array[0..11of Char =
    (('a''b''c''d''e''f''A''B''C''D''E''F'),
     ('g''h''i''j''k''l''G''H''I''J''K''L'),
     ('m''n''o''p''q''r''M''N''O''P''Q''R'),
     ('s''t''u''v''w''x''S''T''U''V''W''X'),
     ('y''z'' '' '' '' ''Y''Z''0''1''2''3'),
     (' '' '' '' '' '' ''4''5''6''7''8''9'));

var
  EndAddr: Integer;
  CurIn, CurOut: ^Char;
  tmp: string;
  StartTime, EndTime, Freq: Int64;
  i: Integer;
begin
  QueryPerformanceFrequency(Freq);
  QueryPerformanceCounter(StartTime);

  for i := 1 to 1000 do
  begin
    tmp := memInput.Text;
    EndAddr := Integer(Pointer(tmp)) + Length(tmp);
    CurIn := Pointer(tmp);
    CurOut := CurIn;
    while Integer(CurIn) < EndAddr do
    begin
      if not (CurIn^ in ['a'..'z''A'..'Z']) then
      begin
        CurOut^ := CurIn^;
        Inc(CurIn);
      end
      else
      begin
        CurOut^ := CharTable[CharList1[Ord(CurIn^)]]
          [CharList2[Ord(Char(Pointer(Integer(CurIn) + 1)^))]];
        Inc(CurIn, 2);
      end;
      Inc(CurOut);
    end;
    SetLength(tmp, Integer(CurOut) - Integer(Pointer(tmp)));
    memOutput.Text := tmp;
  end;

  QueryPerformanceCounter(EndTime);
  ShowMessage(FormatFloat('0.000', (EndTime - StartTime) / Freq) + ' ms');
Dieser Quelltext liegt auf dem Speed Knopf unterhalb des Startbuttons (Anhang aktualisiert).

// EDIT2:
Post korrigiert, ich hatte noch einen Fehler gemacht in der ersten Version.

// EDIT3:
Offenbar wird das Memo gar nicht aktualisiert, da es immer den selben Text bekommt. Ich habe das BeginUpdate..EndUpdate herausgenommen, weil user profile iconYogu sowas auch nicht drin hatte, aber ich glaube mit diesen beiden Zeilen wäre das Ergebnis realistischer. Dafür 10 mal so groß ca.


BenBE - Fr 28.11.08 15:32

Hab jänicke's Programm mal kurz entkernt und hab da mal meine ASM-Variante getestt mit:
Mein Rechner kommt auf 120ms; die Original-Version waren 140ms. Hab nen AMD Athlon64 X2 4000+.

Hier mal meine Routine:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
procedure TfrmMain.btnSpeedClick(Sender: TObject);
const
  CharList: array[Char] of Byte = (
    0000000000000000,
    0000000000000000,
    0000000000000000,
    0000000000000000,

    0100203400000000,
    0000005060000000,
    0100203400000000,
    0000005060000000,

    0000000000000000,
    0000000000000000,
    0000000000000000,
    0000000000000000,

    0000000000000000,
    0000000000000000,
    0000000000000000,
    0000000000000000
    );

  CharTable: array[0..35of Char = (
    'A''B''C''D''E''F',
    'G''H''I''J''K''L',
    'M''N''O''P''Q''R',
    'S''T''U''V''W''X',
    'Y''Z''0''1''2''3',
    '4''5''6''7''8''9'
    );

var
  EndAddr: Integer;
  CurIn, CurOut: ^Char;
  tmp: string;
  StartTime, EndTime, Freq: Int64;
  i: Integer;
begin
  QueryPerformanceFrequency(Freq);
  QueryPerformanceCounter(StartTime);

  for i := 1 to 1000 do
  begin
    tmp := memInput.Text;
    asm
      PUSH  ESI
      PUSH  EDI
      PUSH  EBX

      //CurIn := Pointer(tmp);
      MOV    ESI, DWORD PTR [tmp]
      //CurOut := CurIn;
      MOV    EDI, ESI
      //ECX := Length(tmp);
      MOV    ECX, DWORD PTR [ESI-4]

      MOV    EBX, OFFSET CharList

      TEST  ECX, ECX
      JMP    @@CheckLoop

@@StartLoop:
      //AL := CurIn^;
      //Inc(CurIn);
      LODSB
      MOV    AH, AL

      //Check AL in ['a'..'z', 'A'..'Z'] AND transform char into correct offset
      XLATB

      OR    AL, AL
      JNZ    @@Got1

      //CurOut^ := CurIn^;
      //Inc(CurOut);
      MOV    AL, AH
      STOSB
      JMP    @@ECycle

@@Got1:
      MOV    EDX, EAX
      //AL := CurIn^;
      //Inc(CurIn);
      LODSB
      MOV    AH, AL

      //Adjust input byte counting
      DEC    ECX

      //Check AL in ['a'..'z', 'A'..'Z'] AND transform char into correct offset
      XLATB
      OR    AL, AL
      JNZ    @@Got2

      //Second byte is not valid: Leave unchanged
      MOV    AL, DH
      STOSB
      MOV    AL, AH
      STOSB
      JMP    @@ECycle

@@Got2:
      //DL := ((DL * 2-2)+DL-1)*2
      DEC    DL
      AND    EDX, 7
      LEA    EDX, DWORD PTR [EDX+EDX*2]
      ADD    EDX, EDX

      //Decode table position into char
      MOV    EBX, OFFSET CharTable
      ADD    AL, DL
      DEC    AL
      XLATB
      MOV    EBX, OFFSET CharList

      //Fix Lowercase\Uppercase
      AND    AH, $20
      ADD    AL, AH

      //Store decrypted char
      STOSB

@@ECycle:
      //Adjust Input Byte counting
      DEC    ECX
@@CheckLoop:
      JNZ    @@StartLoop

      MOV    DWORD PTR [CurOut], EDI

      POP    EBX
      POP    EDI
      POP    ESI
    end;
    SetLength(tmp, Integer(CurOut) - Integer(Pointer(tmp)));
    memOutput.Text := tmp;
  end;

  QueryPerformanceCounter(EndTime);
  ShowMessage(FormatFloat('0.000', (EndTime - StartTime) / Freq) + ' ms');
end;


jaenicke - Fr 28.11.08 16:51

Bei mir kommt deine Version auf 0,061ms und meine auf 0,044ms (3700+ Single Core), auf dem anderen PC (6000+ X2) sinds 0,049ms bei dir und 0,032ms bei mir. Weshalb das bei dir so viele ms sind weiß ich nicht. :nixweiss:


freedy - Fr 28.11.08 17:32

Also, ich muss schon sagen, dass ich mächtig verwirrt bin. 0,0xx ms? Habt ihr überall vergessen mit 1000 zu multiplizieren? QueryPerformanceFrequency wird ja in Sekunden zurückgegeben.

Somit liegt mein Algo immernoch bei 16ms für die Dekodierung des Anfangsartikels. BenBes habe ich bei mir mit 44ms im Schnitt gemessen. Jaenickes gibt mir einen Fehler bei der Bereichsüberprüfung.


GTA-Place - Fr 28.11.08 17:41

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
QueryPerformanceFrequency wird ja in Sekunden zurückgegeben.

Ja, da wird tatsächlich vergessen mit 1000 zu multiplizieren. 0,034 heißt in dem Fall 34ms.


jaenicke - Fr 28.11.08 17:42

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Jaenickes gibt mir einen Fehler bei der Bereichsüberprüfung.
Bei der kompilierten Exe? Die funktioniert bei mir nämlich eigentlich einwandfrei, kompiliert habe ich mit dem BDS 2006.


jasocul - Fr 28.11.08 18:24

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
QueryPerformanceFrequency wird ja in Sekunden zurückgegeben.

Ja, da wird tatsächlich vergessen mit 1000 zu multiplizieren. 0,034 heißt in dem Fall 34ms.

Dann ist meine Variante mit 1,46 ms ein echte Rakete.


jaenicke - Fr 28.11.08 18:26

Also ich weiß nicht bei welcher Variante das fehlen soll, bei meiner jedenfalls führe ich 1000 Durchläufe durch, warum sollte ich also erst mit 1000 multiplizieren und dann wieder durch 1000 teilen, weil es ja um einen Durchlauf geht.
Ich habe das lieber gleich aus der Rechnung herausgekürzt.


freedy - Fr 28.11.08 18:50

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Jaenickes gibt mir einen Fehler bei der Bereichsüberprüfung.
Bei der kompilierten Exe? Die funktioniert bei mir nämlich eigentlich einwandfrei, kompiliert habe ich mit dem BDS 2006.


Ich habe deinen Quellcode in meine Anwendung eingebaut. Ich mache keine 1000 Durchläufe. Maßstab ist für mich der erste Artikel. Die Sourcen liegen nun leider auf meinem Firmenrechner. Bin morgen aber nochmal dort.
Der Fehler trat auf jeden Fall hier auf:


Delphi-Quelltext
1:
CurOut^ := CharTable[CharList1[Ord(CurIn^)]]                    


Grüße


jaenicke - Fr 28.11.08 19:07

Ich weiß warum glaube ich: irgendwo ist der Code auseinandergerissen. Bei mir war beim ersten Einfügen "GAGdAaFxGd" in
"GAG
dAaFxGd"
aufgeteilt. Und dann funktioniert das nicht. Beim Geschwindigkeitstest habe ich derartige Fehler nicht beachtet, weil ich von einem gültigen Code ausgehe ohne Zeilenumbrüche mitten in einem Wort ;-).


der organist - Mo 01.12.08 13:35

Paranuss 3, wo ist Lippstadt?


jaenicke - Mo 01.12.08 14:01

Stell diese Frage doch besser im Korrekturen-Thread zum Gewinnspiel, wenn du einen Fehler vermutest. ;-)
http://www.delphi-forum.de/viewtopic.php?t=88351


AdrianK - Mi 03.12.08 14:59

Endlich! Ich hab Gewinnspiel Nr1 gelöst... :) war eigentlich ganz einfach.... aber ich glaube ohne den Tipp, dass die Katze programmiert, hätte ichs nicht geschafft :)


Robert.Wachtel - Mo 08.12.08 02:24

Übrigens: Wie alle Jahre wieder fordert Ihr die Mitspieler auf, die meines Wissens mittlerweile unter Artenschutz stehenden privaten Nachrichten zu erhalsen... :mrgreen:

Zitat:
Über das Ergebnis der Auslosung des Gewinnspiels erhälst Du eine private Nachricht.


Jann1k - Mo 08.12.08 12:45

Juhuu, Nr.2 hab ich geschafft (jedenfalls den Speicher zu entschlüsseln) jetzt gehts ans rätseln...


Robert.Wachtel - Mo 08.12.08 12:58

user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
Juhuu, Nr.2 hab ich geschafft (jedenfalls den Speicher zu entschlüsseln) [...]

Das war im Gegensatz zum 1. Rätsel schon fast zu einfach...

Zitat:
jetzt gehts ans rätseln...

...und das war noch einfacher... :mrgreen:


freedy - Mo 08.12.08 13:27

user profile iconRobert.Wachtel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
Juhuu, Nr.2 hab ich geschafft (jedenfalls den Speicher zu entschlüsseln) [...]

Das war im Gegensatz zum 1. Rätsel schon fast zu einfach...

Zitat:
jetzt gehts ans rätseln...

...und das war noch einfacher... :mrgreen:


Muss ich dir leider Recht geben. Aber das lässt mir diese Woche genügend Zeit für die drei Paranüsse. Mit der ersten hab ich doch meine Schwierigkeiten...


Yogu - Mo 08.12.08 19:12

Hallo,

Das zweite Rätsel war ja ein Kinderspiel im Gegensatz zum ersten! Schon mein dritter Versuch klappte ohne Probleme. :D (*snip*)

Vielleicht habe ich ja bei diesem Gewinnspiel mehr Glück, und gewinne die nette Tasse :D

Grüße,
Yogu

Moderiert von user profile iconNarses: Tipp entfernt


GTA-Place - Mo 08.12.08 22:33

Glückwunsch den Gewinnern, nächstes mal bin ich wieder dran :lol:


Wolle92 - Mo 08.12.08 23:21

Wolle will auch mal was gewinnen... :bawling: :bawling: :bawling:


GTA-Place - Mo 08.12.08 23:31

:party: Sohohohoho... Trommelwirbel... 1.000 - 2.000 - 3.000 - 4.000 - 5.000 Beiträge und 200 Threads im Delphi-Forum! Das gibt eine Jubiläumsparty :party:

:dunce: - :beer: :beer: - :dance: :dance2: - :beer: :beer: - :dunce:

Normal folgt jetzt so eine Dankesrede, aber die lass ich mal aus :mrgreen:

:dunce: :dunce: :wink2: :party: EE ich will (k)ein Kind von Dir! :D

(jegliche Überschneidungen mit meinem 18. Geburtstag sind rein zufällig und unbeabsichtigt...)



So - Back to Topic - @Wolle: Wenn du mal, so wie ich, bei fast 60 Gewinnspielen teilgenommen hast, dann gewinnste sicherlich :mrgreen:


Regan - Mo 08.12.08 23:32

Herzlichen Glückwunsch user profile iconGTA-Place zum 5000sten Post :!: :!: :!: :party: :party:


@Wolle: Du brauchst halt immer Glück im Leben. Manche haben es in der Liebe.


Wolle92 - Mo 08.12.08 23:34

Ach, jetzt seh ich erst, das GTA-Place Geburtstag hat... Und dazu noch den 18.!

Und am selben Tag 5000 Posts...

Ich finde, du solltest die EE einladen am Wochenende...
Und dann gibbet Party!