Hallo, mich beschäftigt geistig nahc wie vor die Frage wie man so Aufgaben bearbeitet (ohne Rekursion) wo man im Prinzip systematisch immer lägnere Strings (Oder Zahlen oder so) finden muss, die bestimmte Kriterien erfüllen.
Und dabei erst eine viel zu große Sammlung an Strings zu bauen, aus der man die unpassend darin platzierten Strings rauswirft.
Nun hat mir da ChatGPT eine Idee gegeben, die vielleicht etwas dumm ist aber funktioneiren könnte.
Sagen wir mal, wir suchen alle Strings der Länge <=20, die maximal 3 mal ein a enthalten.
Nun könnte man alle Strings der Länge <=20 bilden und da die sehr vielen unpassenden wieder rauswerfen.
Wollen wir aber nicht.
Nach etwas Blabla mit ChatGPT schlug der mir in etwa diese Vorgehensweise vor, die meiner Empfiundung nahc stark an Breitensuche erinnert:
Man habe erst mal eine anfangs leere Ergebnisliste.
Hier kommen alle Strings rein, die unseren bedingungen genügen.
Nann noch 1-2 Stringlisten, wo wir temporär Strings unterbringen und wieder rausschmeissen.
nenne wir die 2 Hilfslsiten A und Bm, die anfangs ebenso leer sein sollen.
Nun müssten wir folgendes machen können:
Zu Beginn fügen wir den leeren string zu B hinzu.
danahc kopieren wir den Inhalt von B zu A .
wir löschen den inhalt von B.
Wir gehen nun der reihe nahc alle Strings in A durch:
ist ein String aus A ein korrekter String (erfüllt die anforderungen), dann fügen wir ihn zur ergebnisliste hinzu.
ist der string in A ein nicht-korrekter string, so bilden wir alle kombinationen aus diesem string und einem buchstaben des alphabeten und fügen es zu b hinzu.
(Falls die Strings in A bereits maximallänge haben, wird natürlich kein noch längerer string gebaut)
sobald wir alle strings in A durchgeguckt haben, leeren wir A.
(wir haben also alle guten strings aus A in die ergebnislsite verschoben und die schlechten string dazu genutzt, nächstlägnere strings in B zu bauen, die vielleicht noch zu guten strings führen könnten).
rinse and repeat, nun im Prinzip.
alle strings der länge 1 in A werden durchgeguckt, "fertige" Strings kommen zur ergenislsite, unpassende Strings werden vor dem löschen dazu genutzt strings der nächsten länge in B zu bauen.
was maximallänge erreicht hat, ist entweder ein ergebnisstring oder landet kommentarlos im müllkorb.
So müsste das funktionieren, oder?
dass man also in einer dummylsite so die zwischenergebnisse der aktuellen stufe hält, die auf korrektheit prüft und nicht-korrekte strings zum bauen der nächsten dummyliste nutzt.
so müsste man so ein problem recht easy mit einer passenden while loop (mit bedingung der art wie "Strings in A haben länge <=20" oder so)
lösen können, oder?
Hintergrund für die frage sind keine easy stringspielereien sondern es geht mir um das bauen aller möglichen kombinationen beim blackjack.
wo man nicht so easy gerade mal alle möglichen endzustände auszählen kann, weil da je nahc glück sehr viele karten gezogen werden können )
Und dabei erst eine viel zu große Sammlung an Strings zu bauen, aus der man die unpassend darin platzierten Strings rauswirft.
Nun hat mir da ChatGPT eine Idee gegeben, die vielleicht etwas dumm ist aber funktioneiren könnte.
Sagen wir mal, wir suchen alle Strings der Länge <=20, die maximal 3 mal ein a enthalten.
Nun könnte man alle Strings der Länge <=20 bilden und da die sehr vielen unpassenden wieder rauswerfen.
Wollen wir aber nicht.
Nach etwas Blabla mit ChatGPT schlug der mir in etwa diese Vorgehensweise vor, die meiner Empfiundung nahc stark an Breitensuche erinnert:
Man habe erst mal eine anfangs leere Ergebnisliste.
Hier kommen alle Strings rein, die unseren bedingungen genügen.
Nann noch 1-2 Stringlisten, wo wir temporär Strings unterbringen und wieder rausschmeissen.
nenne wir die 2 Hilfslsiten A und Bm, die anfangs ebenso leer sein sollen.
Nun müssten wir folgendes machen können:
Zu Beginn fügen wir den leeren string zu B hinzu.
danahc kopieren wir den Inhalt von B zu A .
wir löschen den inhalt von B.
Wir gehen nun der reihe nahc alle Strings in A durch:
ist ein String aus A ein korrekter String (erfüllt die anforderungen), dann fügen wir ihn zur ergebnisliste hinzu.
ist der string in A ein nicht-korrekter string, so bilden wir alle kombinationen aus diesem string und einem buchstaben des alphabeten und fügen es zu b hinzu.
(Falls die Strings in A bereits maximallänge haben, wird natürlich kein noch längerer string gebaut)
sobald wir alle strings in A durchgeguckt haben, leeren wir A.
(wir haben also alle guten strings aus A in die ergebnislsite verschoben und die schlechten string dazu genutzt, nächstlägnere strings in B zu bauen, die vielleicht noch zu guten strings führen könnten).
rinse and repeat, nun im Prinzip.
alle strings der länge 1 in A werden durchgeguckt, "fertige" Strings kommen zur ergenislsite, unpassende Strings werden vor dem löschen dazu genutzt strings der nächsten länge in B zu bauen.
was maximallänge erreicht hat, ist entweder ein ergebnisstring oder landet kommentarlos im müllkorb.
So müsste das funktionieren, oder?
dass man also in einer dummylsite so die zwischenergebnisse der aktuellen stufe hält, die auf korrektheit prüft und nicht-korrekte strings zum bauen der nächsten dummyliste nutzt.
so müsste man so ein problem recht easy mit einer passenden while loop (mit bedingung der art wie "Strings in A haben länge <=20" oder so)
lösen können, oder?
Hintergrund für die frage sind keine easy stringspielereien sondern es geht mir um das bauen aller möglichen kombinationen beim blackjack.
wo man nicht so easy gerade mal alle möglichen endzustände auszählen kann, weil da je nahc glück sehr viele karten gezogen werden können )