интересная тема. довайте вспомним что условия сработки блоков пересечение с верху/с низу четко формализованны на том уровне что вы можите записать в блоке логическая формула что то типа (a[i-1]<b[i-1]&&a==b)||(a[i-1]<b[i-1]&&a>b) ( на точность не претендую) и получить аналог блока пересечения.

предложите набор условий отскока и тестировния уровня. остальное дело программировния.