[QUIZ#1] Unscharfe Suche

kuddeldaddeldu

Erfahrenes Mitglied
Wow, ich bin ganz erschlagen von der Menge der Abgaben! Da weiß man ja gar nicht, wo man anfangen soll zu schauen und zu testen.
Ich hatte selber leider kaum Zeit am Wochenende und nur "Finden" war mir dann doch zu wenig... :)

LG
 

Mairhofer

Erfahrenes Mitglied
Hoi!

Ich habe auch nicht mitgemacht aus zeitlichen Gründen.
Finde es aber auch sehr bemerkenswert wie viele verschiedene Sprachen und die Anzahl der Lösungen die eingereicht wurden. Respekt!

Ich habe über die meisten Lösungsansätze drübergeschaut, zum testen ist es mir einfach zuviel Arbeit, und denke das viele Lösungen den gleichen Algo verwenden, bedingt durch Sprachkonstrukte nur in leicht unterschiedlicher Form, was ja auch interessant ist um unterschiede in den Sprachen zur Lösung des gleichen Ziels zu sehen.

Da ich PHP wenigstens etwas verstehe habe ich dort mal ein genaueren Blick drauf geworfen und aufgefallen ist mir, das nur eine Lösung als Klasse abgegeben wurde. Das finde ich persönlich am sinnvollsten und für die Integration in bestehende Scripte am einfachsten. Ein Lösungsansatz fand ich, hatte eine gute, ausführliche Dokumentation der "API".

Ich hoffe ich trete keinem auf die Füße und es ist wirklich subjektiv gesprochen: Etwas Kritik!
Ich habe das Gefühl, das viele Lösungsansätze einfach jeden Präsidenten durcharbeiten ohne das nur ein Suchbuchstabe in dem Präsidentennamen vorkommt. Sei es nun bei den manchmal wild anmuten RegExps oder der Char-Iteration.
Zum Beispiel braucht man beim Suchbegriff "JFK" den Präsidenten "Theodore Roosevelt" nicht bearbeiten, außer man baut eine phonetische Erkennung mit ein (Beispiel Kölner Phonetik, wo "v" und "f" den gleichen phonetischen Code haben).
Ich weiss nicht, wie sich das bei Hochsprachen verhält, aber bei PHP könnte man hier merkbare Geschwindigkeit gewinnen.

Wie gesagt, ich hoffe, das ich beim nächsten Quiz Zeit finde.
Gedanklich war ich schon dabei und hätte in PHP eine Lösung versucht mittels SPL (RegexIterator, ArrayObject).
Ansonsten wiederhole ich mich gerne: Respekt an alle für die Lösungen
 

Dennis Wronka

Soulcollector
Wow, eine Menge interessant Beitraege.
Spontan aufgefallen ist mir dass scheinbar niemand einen Beitrag in Fortran eingereicht hat, und auch Smalltalk scheint zu fehlen.

Und nein, ich kann keine der beiden Sprachen, kann also nicht damit dienen. ;)
 

OnlyFoo

Erfahrenes Mitglied
Ich hoffe ich trete keinem auf die Füße und es ist wirklich subjektiv gesprochen: Etwas Kritik!
Ich habe das Gefühl, das viele Lösungsansätze einfach jeden Präsidenten durcharbeiten ohne das nur ein Suchbuchstabe in dem Präsidentennamen vorkommt. Sei es nun bei den manchmal wild anmuten RegExps oder der Char-Iteration.
Zum Beispiel braucht man beim Suchbegriff "JFK" den Präsidenten "Theodore Roosevelt" nicht bearbeiten, außer man baut eine phonetische Erkennung mit ein (Beispiel Kölner Phonetik, wo "v" und "f" den gleichen phonetischen Code haben).
Ich weiss nicht, wie sich das bei Hochsprachen verhält, aber bei PHP könnte man hier merkbare Geschwindigkeit gewinnen

Aber du weißt im voraus doch garnicht, ob das J überhaupt vorkommt, wenn du nicht wenigstens einmal jeden Buchstabne angeschaut hast. Und wer klug war hat das ja eh mit ner Schleife und indexOf-Schleife gemacht. Ich galub das war eine der schnellsten Lösungen: $match = true; foreach( buchsatabe in suchbegriff ) { if( ($lastIndex = suchbegriff.indexOf( buchstabe, $lastIndex+1)) == -1 ) { $match = false; break; }
Eine schnellere Möglichkeit kann ich mir nicht vorstellen. Wenn du eine hast, gern her damit.
Und Phonetik wär an der Aufgabe vorbei, da es hier ja wirklich drum ging, das Vorkommen der Buchstaben zu überprüfen
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

ich glaube, er meinte, dass die vordefinierten Funktionen in den Sprachen vielleicht performanter sind, als eine Schleife über jeden einzelnen Buchstaben "zu Fuß" zu programmieren.
Ich wollte z.B. eine Lösung ausprobieren, die ohne Schleife über den gesamten input-String und ohne reguläre Ausdrücke auskommt, indem ich beide Strings in ein Array umgewandelt und mittels array_intersect() (PHP) die irrelevanten Zeichen herausgefilter habe. Im resultierenden String kann man dann bequem per strpos() schauen, ob das Suchwort enthalten ist. Für die Ersetzung braucht man auch nur das reduzierte Array, da die keys bei array_intersect() erhalten bleiben, sieht z.B. so aus:

Code:
Treffer in Zeile 25: Theodore Roosevelt
Array
(
    [3] => o
    [5] => o
    [10] => o
    [11] => o
)
Treffer in Zeile 27: Woodrow Wilson
Array
(
    [1] => o
    [2] => o
    [5] => o
    [12] => o
)

Ob das dann wirklich performanter ist, habe ich nicht probiert, war nur so'ne Idee abseits der naheliegenden. ;)

LG
 

Mairhofer

Erfahrenes Mitglied
Moin!
So in der Richtung habe ich das gemeint. Allerdings habe ich gestern bei einer Autofahrt doch noch mal intensiv nachgedacht und war mir schon nicht mehr sicher. In früheren Programmierungen hat es sich immer als Geschwindigkeitsvorteil erwiesen, vorher zu prüfen, ob ein String vorkommt, bevor man via preg_* arbeitet. Hier bei der Aufgabe ist es natürlich anders, was ich gestern nicht bedacht habe, da man ja keinen ganzheitlichen String hat, sondern nur Buchstaben die auf jeder x-ten Position vorkommen können

Heute morgen wollte ich es eigentlich mal in einer schnellen Sekunde testen. Doch anstatt nun ein Testszenario dafür aufzustellen habe ich mich wieder in SPL verrannt und mehr oder weniger eine Lösung runtergeschrieben (in PHP). Ich nehme daher meine These doch eher zurück. Meinen Code poste ich natürlich auch nicht, da es etwas blöd aussehen würde nachträglich etwas vorzulegen. Ich habe aber auch nicht damit gerechnet das es so einfach ist. Beim nächsten mal dann!


Eine Frage hätte ich noch zu der Art der Aufgaben eines Quiz.
Mir ist klar, das keine zu komplexen Aufgaben gestellt werden können, bedingt durch das zeitliche Limit. Spannend würde ich aber Aufgaben finden, die Grafiken bzw. Zeichnungen als Ergebnis haben. Zum Beispiel die Darstellung von Abhängigkeiten mit Linien oder Verweigungen. Wäre soetwas von der Komplexität okay?

Schönen Tag an alle,
Gruss
 

OnlyFoo

Erfahrenes Mitglied
Zum Beispiel die Darstellung von Abhängigkeiten mit Linien oder Verweigungen. Wäre soetwas von der Komplexität okay?

Schönen Tag an alle,
Gruss

Ich denke da muss man vorsichtig sein. Nicht jede Sprache unterstützt von Natur aus das Ausgeben von Graphiken. Wenn dann sollte man das vielleicht als Erweiterung zu einer ganz normalen Textausgabe sehen.
 

Neue Beiträge