IT-Talents.de Code Competitions

Ich behaupte ich brauche auch relativ viel Speicher für die Optimierung...
Ungefähr...
Ähm...
(Gewicht_in_kg + 1) x (Anzahl_Elemente + 1) x Anzahl_Datenfelder_pro_Element(3)
Und das dann mutmaßlich noch plus den Speicher der ursprünglichen Liste und den Speicher der Ergebnisliste.

Also eine ganze Menge Speicher, die ich da nutze. Und halt
Rechenschritte zum Optimieren und nochmal
Anzahl_Ergebnis_Teile x 2
für einen letzten Schritt.

Das geht mit einer sortierten Liste usw. deutlich ressourcenschonender. Aber ich behaupte, ich komme auf das beste Ergebnis, wenn ich überhaupt auf eins komme (weil der Speicherbedarf halt so groß ist...)
 
Also ich hab mittlerweile schon wieder ein paar Dinge ausprobiert, auch das mit dem dazupacken, aber ich komme nicht drauf wie es perfekt geht. - Hut ab davor.

Ich glaube der Ansatz, Dinge die zusammen weniger Wert haben, aus dem Korb zu entfernen und durch ein größeres zu ersetzen, war der beste Ansatz den ich so gehabt habe.

Ständig scheitere ich bei einer / zwei IF-Abfragen...

Mein letzter Ergebnis hat sich minimal verbessert:

[src=text]Round 1...
New gain: + 10 (Total 10) [Weight 78 / Available left: 1 - Replaced: 79]

Round 2...
Result: 128 items, value/weight: 86024 Euro / 4999 kg[/src]

Jetzt sind es eigentlich nur noch 30 € die uns trennen... und das Gewicht ist leider nur (fast) maximal ausgelastet.

Was mich natürlich glücklich stimmt ist die Laufzeit, etwas um eine Sekunde.
 
Zuletzt bearbeitet:
Ich glaube der Ansatz, Dinge die zusammen weniger Wert haben, aus dem Korb zu entfernen und durch ein größeres zu ersetzen, war der beste Ansatz den ich so gehabt habe.

Womit ich noch nicht fertig bin, ist, ich bin so träge, beim Austausch die Kombinationen zu berücksichtigen. Wenn ich etwas mit 15 Kg brauche, kann es einen Gegenstand mit diesem Gewicht haben, aber der könne weniger Wert haben, als als z.B. 2 oder 3 andere zusammen, welche zusammen das Gewicht von 15 haben
 
Kapitn, eigentlich ist es bei mir glaube ich value over weight

wenn der Gegenstand nichts mehr ersetzen kann durch den Wert und dadurch gewonnene Kilos, können wir nichts mehr optimieren. Jedenfalls in meiner Welt, Roin hat da wohl ne etwas andere :D

Aber auf der anderen Seiten ist glaube ich die letzte Optimierung, die Gegenstände über das Limit dazuzupacken und dann zu entfernen wenn der Wert am Ende höher ausfällt und wir damit wieder im Limit liegen.... aber soweit bin ich noch nicht. Und das Szenario das höhere Ergebnisse liefert als das letzte zu notieren.

Bin aber erst mal froh das es so jetzt schon etwas besser aussieht. Nachdem ich drei bis vier Schritte kombiniert habe ;)
 
@theSplit:

Sorry wenn das nun ein wenig Offtopic ist.
Du scheinst ja schonmal an einer der Code Competitions teilgenommen zu haben, wann kann man denn mit erstem Feedback zur Abgabe rechnen.

Danke!
Kevin
 
Hallo Kevin, also soweit ich weiß nimmt die Auswertung etwas Zeit in Anspruch - es kann also gut 2 Monate dauern bis man Antwort bekommt.

Für die die Competitions steht es auf der jeweiligen Wettbewerbs-Seite:

Für Markdown ist es so:

Abgabetermin:
30. April 2017 - 23:59Uhr

Auswertung:
01. - 23. Mai 2017

Siegerehrung:
Juni 2017

Also frühestens/spätestens im (Mitte?) Juni. (rechte Spalte).
 
Meine Welt passt sich nunmal immer meinen Anforderungen an - und die sind: Der Beste sein!
:D

Allerdings braucht das halt ne ganze Menge Zeit...
 
Du hast dir aber ein bescheidenes Ziel gesetzt.... :p - kommt gleich hinter der Weltherrschaft :D

Ansonsten bin ich natürlich sehr gespannt, falls du deine Lösung hier veröffentlichen solltest, wie diese aussieht und ob einem noch Tricks dazu einfallen, wie man die Laufzeit und den Speicherverbrauch noch senken kann.

Auf der anderen Seite, bevor es soweit kommt, sind ja noch ein paar Tage, ist ja eine relativ kurze Arbeitswoche... eventuell kannst du dich ja über Javascript "Optimierung" einlesen - was Datenstrukturen angeht, Schleifen und Indexierung und Ansprechen von Listenelementen, und (Pre)-Caching usw.. noch einlesen und versuchen darüber noch etwas zu optimieren.

Im übrigen könntest du auch NodeJS antesten, wie die Laufzeit in der Umgebung wäre. Ich hab mal versucht etwas mit Electron zu machen, war mir zu kompliziert auch wenn es da ein Beispiel gab, aber in NodeJS kannst du deinen Code theoretisch eins zu eines übernehmen, kannst aber auch Ergebnisse zwischenspeichern auf Festplatte zum Beispiel. Und du hast nicht die Umgebung des Browsers, der das ganze vielleicht noch einschränkt. Und die API von NodeJS ist einfacher als die von Electron ;)

Ich versuche noch mal das was ich im Spoiler angekündigt habe wenn alles rund läuft. Im übrigen ist die Laufzeit jetzt bei ~350 - 460 Millisekunden, da ich noch ein Break hinzugefügt und nur weitersuche, wenn der höherwertigere mit Gewicht X (absteigend im Wert nach Gewicht) auch eingepackt worden ist. :)
 
eventuell kannst du dich ja über Javascript "Optimierung" einlesen - was Datenstrukturen angeht, Schleifen und Indexierung und Ansprechen von Listenelementen, und (Pre)-Caching usw.. noch einlesen und versuchen darüber noch etwas zu optimieren.

Mutmaßlich werde ich das nicht mehr tun. Ich muss noch 5 Zeilen oder so anpassen, damit die HTML etwas vernünftig aussieht aber mehr werde ich nicht tun - da ruft dann leider doch die richtige Arbeit ;-)
 
Jupp, die richtige Arbeit hat natürlich den Vorrang und die Challenge soll ja auch Spaß bleiben... aber wenn du so nen doch mächtigen Algorithmus hast, kann man vielleicht schnell diverse Ideen zur Optimierung testen, so weit möglich, und eventuell lohnt es sich. Stellst du deinen Code hier dann, wenn die Challenge quasi um ist, rein bzw. auch auf Github? Oder wird das ein Geheimnis bleiben wie du es gelöst hast? ;)
 
Wenn ich dran denke, kann ich den hier ja mal hochladen.
Ich habe vor eben mal gegooglet, ob es denn noch einen Algorithmus gibt, der besser zu sein scheint. Ich habe keinen gefunden :P
Mutmaßlich habe ich mir die gleichen Gedanken gemacht wie der Herr, mit dem Musteralgorithmus. Ist doch auch eine schöne Erkenntnis.
 
Wäre nett. Ich würde halt gerne sehen welche Taktik/Strategie du fährst.

Ich bin aber auch noch guter Dinge das ein "pack dazu" entferne alles was kleiner ist an Wert, teste ob wir am Ende im Maximalgewicht liegen bzw. mit dem teuersten anzufangen und uns runter in das Gewicht zu arbeiten in dem wir landen wollen, notiere den Wert der Runde falls höher als der vorherige, was auch fruchten könnte.

Natürlich weiß ich nicht ob die Technik das optimale Ergebnis bringt, so wie du es hast, aber das würde ich noch einmal versuchen.

Ich habe bei meiner letzten Optimierung auch mehrere For Schleifen über alle "relevanten" Elemente gemacht, und trotzdem war die Zeit noch annehmbar, denke ich. Also kann man ruhig etwas mehr loopen und testen... besonders wenn nach Gewicht und absteigend Wert sortiert ist innerhalb der Gewichtsklasse.

Edit: Bisher teste ich ja immer nur ob wir noch im Maximalgewicht liegen, das ist aber wohl ein Fehler. ;)
 
Zuletzt bearbeitet:
An dieser Stelle nur eine kurze Information:

Die Mai Competition endet in zwei Tagen, bitte vergesst nicht eure Lösungen abzugeben!

[src=text]Abgabetermin:
31. Mai 2017 - 23:59Uhr[/src]

Also, nicht vergessen. ;)
 
Der Ansatz mit der Sortierung nach Bewertungsindex reicht für eine Annäherung.
Dann in einem nachträglichen Durchgang eine Korrektur durchzuführen um die Lücke zum Maximalgewicht gewinnbringend auszufüllen, war keine gute Idee. Da gibt es so viele Möglichkeiten zu prüfen, daß man das auch direkt als Ansatz wählen kann.

Um sicher das Optimum zu bestimmen, muß man wohl alle Möglichkeiten testen. Um da sich wiederholende Berechnungen einzusparen, war es hilfreich, noch einmal die Theorie der dynamischen Programmierung nachzulesen.
Das Ergebnis von 86057 bei den 25.000 Artikeln habe ich jetzt auch aber der Code gefällt mir nicht. Statt Schleifen müßte da eigentlich auch Rekursion möglich sein. Aber um schönen Code ging es mir ja nicht.
 
Und, wie sieht's aus?
Haben alle abgegeben?

--- [2017-06-01 19:22 CEST] Automatisch zusammengeführter Beitrag ---

Und, wie sieht's aus?
Haben alle abgegeben?
 
Code Competition für Juni 2017: Chatbot und maschinelles Lernen

Ich möchte an dieser Stelle wieder auf die neue Competition Hinweisen:

Thema: "Chatbot und maschinelles Lernen - Bist Du eher der Frontend-Typ? Oder doch der Backend-Evangelist?" (Juni 2017)

Am Anfang des Entwicklerdaseins steht oftmals die Frage nach der Wahl des zukünftigen Themenschwerpunkts. Möchte man am Puls der Zeit bei der Anwenderinteraktion über diverse Frontendtechnologien (native App, HTML Webseiten) sein? Z.B. mittels responsiver Webseiten oder native Apps oder Richclients? Hat man Lust auf komplexe Algorithmen und Datenoperationen im Backend, z.B. im BigData Umfeld, der Serverarchitektur oder im Umgang mit Datenbanken? Diese Frage lässt sich für viele Personen - je nach Vorwissen und Background - unterschiedlich beantworten.

Und hier setzt die aktuelle Code Competition an: Entwickle Deinen eigenen Chatbot, der durch geschicktes Fragen herausfindet, welchen Entwicklerschwerpunkt für den Einstieg der jeweiligen Person am besten geeignet ist.



Wie immer gibt es auch hier etwas zu Gewinnen!

Einsendeschluss ist der:
[src=text]Abgabetermin:
30. Juni 2017 - 23:59Uhr [/src]

Und hier geht es zum Wettbewerb:

Allen die sich an dieser Competition beteiligen möchten: viel Spaß und Erfolg! :)



----

Etwas eigene Meinung zur Organisation drumherum:

Was glaube ich mehr oder minder aufgefallen ist in den letzten Competitions:
Strategien, Tools, Frameworks/Libs oder generelle Ideen und Tips können gern ausgetauscht werden - nur fertiger Code/Code Abschnitte sollten vielleicht erst nach Ablauf der Competition gepostet werden um anderen nichts vorweg zu nehmen.

Alte Competitions und Code soll natürlich auch weiterhin besprochen werden, aber dann sollte man schreiben auf was sich das Posting bezieht, so fern nicht direkt ersichtlich.
 
@Organisation - dafür, bzw. einfach so weiter machen - läuft finde ich super :)
Wenn ich doch mehr Zeit hätte *schnief* ... hätte das mit dem Rucksack gerne mal in Powershell umgesetzt :D
 
Und, wie sieht's aus?
Haben alle abgegeben?
Jop.

Ich denke an dieser Code-Competition werde ich nicht teilnehmen.
Die Zeit wäre da - doch mir fehlt da ein wenig der Ansatz. Man muss ja irgendwie die Eingabe des Nutzers interpretieren und dann weiter vorgehen.
Da habe ich wohl erstmal weniger Lust drauf.
 
Hab ebenfalls abgegeben :)

Ich habe so etwas auch noch nie gemacht und bin in dem Feld auch nicht wirklich breit aufgestellt. Wenn man schon ein Fundus an Daten hätte, mit denen man arbeiten können sollte, wäre das definitiv einfacher. So ist das alles etwas, "sehr weit offen" in der Tat.

Vermutlich steht und fällt alles mit den Fragen und also auch "wie" man fragt:
(ja/nein + Multiple Choice) - und daraus soll ein Profil errechnet werden
+ aus ganzen Fragen und kompletten Antworten, anhand einer "Buzzword" Liste (Deutsch + Englisch)? Nach denen eine Antwort durchsucht und bewertet wird?

Und man nimmt sich 20 Referenztexte, ein Teil über Frontend und der Rest über das Backend.. und schon hat man einen Datenbasis mit der man sein Programm "abrichten" könnte. Natürlich ergeben sich Fragen auch aus den Antworten, vielleicht muß man das auch dann irgendwie "mischen" um gute Ergebnisse zu haben. Wäre meine spontane Idee.

Kann natürlich auch sein das ich mir das zu leicht vorstelle. :)
 
Zurück
Oben