Angenommen, Sie erhalten eine Reihe von sich nicht überschneidenden Intervallen von ganzen Zahlen [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (Wo [a,b]
ist die Menge der ganzen Zahlen größer als oder gleich a
und kleiner als oder gleich b
.)
Das Intervall bei Index X
umfasst bX - aX + 1
Werte. Wir werden diese Nummer anrufen cX
.
Vorausgesetzt, dass jedes Intervall entweder ...
- unverändert (bleibt wie
[aX,bX]
), - nach rechts zur
+
Seite der Zahl die Linie verlängert durchcX
(werden[aX,bX + cX]
), - oder nach links in Richtung der
-
Seite der Linie verlängert durchcX
(werden[aX - cX,bX]
),
Wie viele Werte können maximal durch die Vereinigung aller aktualisierten Intervalle abgedeckt werden, da sie sich immer noch nicht überschneiden?
Schreiben Sie eine Funktion oder ein Programm, das eine Zeichenfolge der Form annimmt [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
und dieses Maximum berechnet. Wenn Sie eine Funktion schreiben, geben Sie den Wert zurück. Wenn Sie ein vollständiges Programm schreiben, geben Sie stdin ein und geben Sie den Wert stdout aus (oder verwenden Sie die nächstgelegenen Alternativen).
Sie können davon ausgehen, dass alle Werte innerhalb der normalen vorzeichenbehafteten 32-Bit-Ganzzahlgrenzen liegen und dass diese aX
kleiner oder gleich sindbX
für alle Indizes sind X
. Die Intervalle können in beliebiger Reihenfolge sein und müssen nicht immer größer sein. Sie müssen als Zeichenfolge im obigen Format angegeben werden. Die Zeichenfolge kann leer sein. In diesem Fall lautet die Antwort 0.
Die kürzeste Übermittlung in Bytes gewinnt.
Beispiel
Wenn die Eingabe [-3,0],[1,2],[4,9]
wäre, wäre die Ausgabe 22. Das mittlere Intervall hat keinen Raum, um sich in irgendeiner Weise auszudehnen, so dass es unverändert bleiben muss. Die linke und rechte Intervalle können sowohl erweitert werden [-7,0]
und [4,15]
jeweils. Die Vereinigung von [-7,0]
und [1,2]
und [4,15]
enthält alle Werte von -7 bis 15, mit Ausnahme von 3. Das sind 22 Werte.
quelle
[5,6]
zum Beispiel[3,8]
(für eine Antwort von 6) werden, oder kann es einfach sein[5,8]
oder[3,6]
(für eine Antwort von 4)?Antworten:
Haskell, 145 Bytes
Probeläufe:
quelle
R
282278269247Dies wurde sehr schnell zu einem großen Problem bei der Eingabe von Zeichenfolgen. Ich vermute, ich kann das besser spielen, aber im Moment ist mir die Zeit ausgegangen.
Im Wesentlichen ist die Idee
Edit: erkannte, dass ich die Zeichen ursprünglich falsch gezählt und dann ein paar Dinge neu angeordnet habe, um ein paar zu rasieren.
quelle