Day 4 has us splitting a string into 4 integers, and then implementing some range-tests. This presents no serious complications in blueprint.
The string splitting looks like this, and is used in both parts:

I mark this as a “Pure” function (Details Panel). This tells Unreal it has no side effects, and lets us call it without the execution line (white), as you’ll see in a moment.
Part 1
Part 1 is a containment test. Do either of the Left or Right side completely contain the other half. In Blueprint that looks like this:

In plain English, this says: One side contains the other if (“the left start value is greater or equal to the right start value” AND “the left end value is less than or equal to the right end value“) OR (“the right start value is greater or equal to the left start value” AND “the right end value is less than or equal to the left end value”).
This would be cleaner and easier to follow if I had made a Span type, and a Span-Contains function.
Part 2
Part 2 is an overlaps test. There is an elegant solution to this, that make it easy if you happen to know it:

I like this. The overlapping span goes from the maximum, of the minimums, to the minimum or the maximums. If the overlapping span is value, that is to say, its minimum is less than equal to its maximum, then the overlap exists. This scales to many spans, not that we need it here, but its a little piece of logic that has been burned into my memory by years of game development.