Array Summe berechnen

  • Moin,

    ich habe ein$aDate mit gleichen Tagen.

    Mit 4x 05.10. und der 3x 11.10.

    Das $aValueenthält die Zahlen, parallel zum Date Array.


    Aufgabe:

    Das $aResultValue muss errechnet werden.

    Es darf an den gleichen Tagen die Summe "8" nicht überschreiten, so wie im $aResultValuedargestellt.

    Es muss dynamisch sein. Die Zahlen können in der Höhe variieren.

    Aber immer Summe "8" als Ergebnis, bei den gleichen Tagen.

    Könnt ihr mir helfen?

    Gruß


  • Gibt es denn immer eine Kombination die klappt?
    Was passiert wenn an einem Tag nur zwei 2en stehen oder nur zwei 7en?
    Welche Vorschrift gilt denn um die "richtige" Kombination auszuwählen?

    Mir sind auch nicht klar wie die Lücken in deinem $aResultValue entstehen:
    Beim 05.10. ist die Lücke an letzter Stelle, was ich mir erkläre, dass einfach die an der Kombination beteiligten nacheinander eingetragen wurden.
    Dann aber wieder ist die Lücke beim 11.10. gleich am Anfang.

    Hier bedarf es sicher noch besserer Erklärung und vor allem weiterer konkreter Beispiele.

  • AspirinJunkie , danke erstmal für deine Hilfe.

    Zitat

    Was passiert wenn an einem Tag nur zwei 2en stehen oder nur zwei 7en?

    Bei zwei 2en, bleiben die Werte stehen.

    Bei zwei 7en: Summe = 14. Also erste zeile 7, zweite Zeile 1

    Die Gesumme darf < 8 sein, aber nicht > 8.

    Zitat

    Mir sind auch nicht klar wie die Lücken in deinem $aResultValue entstehen:

    Die Zeilen sollen ab Erreichung der Summe 8, keine Inhalte mehr haben.

  • Die Zeilen sollen ab Erreichung der Summe 8, keine Inhalte mehr haben.

    Eben das Prinzip sehe ich noch nicht ganz deutlich klar an deinem Beispiel.
    Gehen wir mal durch:

    Der 5.10.:

    • 1. Zahl = 2 -> bleibt stehen
    • 2. Zahl = 4 -> Summe = 6 -> 4 bleibt stehen
    • 3. Zahl = 10 -> Summe = 16 -> es steht da nun eine 2 - warum? ist das die 2 die danach kommt und die 10 wird stattdessen einfach "gelöscht"?
    • 4. Zahl = 2 -> leer, da wohl vorher bereits die Summe von 8 erreicht wurde

    Der 11.10.:

    • 1. Zahl = 2 -> leer obwohl 8 noch nicht erreicht wurde - warum ist die Zelle leer?
    • 2. Zahl = 8 -> 8 bleibt stehen obwohl Zwischensumme ja 10 gewesen wäre - warum?
    • 3. Zahl = 2 -> leer, da wohl die 8 vorher bereits greift

    Verstehst du, dass ich da noch Probleme habe deine Berechnungsvorschrift nachzuvollziehen?

    Wenn ich die Logik vom 5.10. auf den 11.10. übertrage, würde bei mir 2 und 2 stehen bleiben.
    Wie entscheidest du also welche der möglichen Kombinationen am Ende stehen bleibt.
    Einfach von vorn durchgehen scheint es ja offensichtlich nicht zu sein.

  • Zitat

    1. Zahl = 2 -> bleibt stehen

    Richtig!

    Zitat

    2. Zahl = 4 -> Summe = 6 -> 4 bleibt stehen

    Richtig!

    Zitat

    3. Zahl = 10 -> Summe = 16 -> es steht da nun eine 2 - warum? ist das die 2 die danach kommt und die 10 wird stattdessen einfach "gelöscht"?

    Nein!

    Summe= 16, also muss die 3. Zahl = 10, durch die 3. Zahl = 2 ersetzt werden. Dann Summe 8 erreicht!

    Zitat

    4. Zahl = 2 -> leer, da wohl vorher bereits die Summe von 8 erreicht wurde

    Richtig!

    Zitat

    Verstehst du, dass ich da noch Probleme habe deine Berechnungsvorschrift nachzuvollziehen?

    Sehr gut sogar. Ich habe schon mehrere Ansätze, aber immer wieder Probleme.

    Zitat

    Wenn ich die Logik vom 5.10. auf den 11.10. übertrage, würde bei mir 2 und 2 stehen bleiben.
    Wie entscheidest du also welche der möglichen Kombinationen am Ende stehen bleibt.
    Einfach von vorn durchgehen scheint es ja offensichtlich nicht zu sein.

    Richtig! War mein Fehler. Sorry

  • Summe= 16, also muss die 3. Zahl = 10, durch die 3. Zahl = 2 ersetzt werden. Dann Summe 8 erreicht!

    Jetzt nochmal gaaanz konkret: Wo kommt die 2 her? Ist das nun die 2, welche an 4. Stelle steht (du schreibst ja 3. Zahl = 2.... :/).
    Also wäre das so wie ich schon oben vermutete: Die 10 wird ausgelassen, da sie das Limit sprengen würde.
    Oder ist die der Anteil der 10, welcher noch zur 8 fehlt.

    Machen wir es am besten an einem abgewandelten Beispiel:
    Folge 2, 3, 10, 2 -> wie sieht die resultierende Folge hierbei aus: 2,3,2 oder 2,3,3 ?

    Edit: Falls 2,3,2 zutrifft, dann würde ich diese Logik quick and dirty folgendermaßen umsetzen:

    Einmal editiert, zuletzt von AspirinJunkie (17. Januar 2024 um 18:45)

  • AspirinJunkie , schon mal sehr gut!

    Zitat

    Jetzt nochmal gaaanz konkret: Wo kommt die 2 her? Ist das nun die 2, welche an 4. Stelle steht (du schreibst ja 3. Zahl = 2.... :/).

    Nein, ein Zufall, dass gerade an vierter Stelle eine 2 steht. Ist die Summe 8 von der ersten Stelle an erreicht, dann die vierte Stelle leer.

    Wenn es nur 2 oder 3 Stellen sind muss die Summe 8 ergeben.

    z.B. bei drei Stellen "7,5,3" ergibt "7,1,leer"bei drei Stellen.

    05.10. alles richtig.

  • Schwere Geburt.
    Wenn "7,5,3" "7,1" ergeben soll, deutet das ja darauf hin, dass tatsächlich auf die vollen 8 aufgefüllt wird.

    Das beißt sich aber komplett mit dem 11.10. bei dem du erst "leer,8,leer " stehen hattest worauf ich dann meinte "2,2,leer" würde nach der bisherigen Logik eher dort stehn müssen.
    Das hast du dann bestätigt und nun erklärst du dem widersprechend die Auffülllogik als die nun anzuwendende.
    Für den 11.10. müsste nun also etwas ganz anderes herauskommen - nämlich "2,6,leer"

    Ganz ehrlich - streng dich mal bitte mehr an mit deiner Erklärung.

    Wenn nun 2,6,leer richtig sein soll, dann wäre mein Skript folgendermaßen anzupassen:

  • Bisher hat das ganze Ding für mich keinen wirklichen Sinn ergeben aber kann es sein, das es hier um Arbeitsstunden geht?
    Dann wäre es ja auch sinnvoll nur 1 Eintrag je Tag im Ergebnis zu haben (oder brauchst du dann noch die Einzelwerte?).

  • Es soll nur an Tagen, die in folge das gleiche Datum haben, wie im Beispiel 05.10. 4x oder 11.10. 3x geschehen.

    Schnell umgesetzen könnte man das so: