Ich möchte "Brückentage" aus einer Liste von Tagen finden. Die Liste:Finden Sie Brückentage in einer Liste von Tagen
days = [
%{value: ~D[2017-04-01], categories: ["weekend"]},
%{value: ~D[2017-04-02], categories: ["weekend"]},
%{value: ~D[2017-04-03], categories: []},
%{value: ~D[2017-04-04], categories: []},
...
%{value: ~D[2017-04-13], categories: ["bank holiday"]},
%{value: ~D[2017-04-14], categories: ["bank holiday"]},
%{value: ~D[2017-04-15], categories: ["weekend"]},
%{value: ~D[2017-04-16], categories: ["weekend", "bank holiday"]},
... ]
Der Monat als auf der Webseite gemacht:
Jemand, der will seine/ihre Urlaubstage maximieren würde, weil die einen Urlaub am 10., 11. und 12. nehmen würde zu einem 10-tägigen Urlaub (8. - 17.) für eine Investition von nur 3 Ferientagen führen.
Ich möchte eine Funktion bridge_days(days, number_of_invested_vacation_days)
schreiben, die eine Liste dieser drei Tage [~D[2017-04-10], ~D[2017-04-11], ~D[2017-04-12]]
ergibt, wenn sie mit bridge_days(days, 3)
aufgerufen wird. 3 ist die Anzahl der investierten Urlaubstage.
Ein anderer Monat Beispiel:
bridge_days(days, 1)
in [~D[2017-05-26]]
weil eine Investition von 1 Urlaubstag ergibt 4 Tage Urlaub zur Folge hätte.
Eigentlich würde bridge_days/2
oft zu einer Liste von Listen führen, weil es oft mehrere Optionen gibt.
Mein Ansatz besteht darin, die Liste durchzuschleifen und +1 und -1 jeden Tages zu vergleichen. Das Problem ist, dass es ewig dauern muss.
Gibt es einen schlaueren Weg als diese rohe Gewalt anzuwenden, um dieses Problem zu lösen?
was kein Versuch als Codierung? – GavinBrelstaff
@GavinBrelstaff Die Frage ist weniger "wie mache ich das" und mehr "Ich habe eine funktionierende Lösung, aber ich suche nach einem besseren Algorithmus". –
@JustinWood Ich habe das Gefühl, dass es eine Elixier-ähnliche Lösung für das gegebene Problem geben könnte, die ich nicht gefunden habe. Ich suche eine a) elegante und b) schnelle Lösung. – wintermeyer