It was brute force of checking all possibilities. For levels that have less than 10 M cases clever programs are not worth to build. Calculations of that is a matter of few minutes, building program is about few hours.
With level 14 I had to calculate exact length of target lines to get to know what is the target of lines. Some other clever things (like symmetry) and finally I got the answer without a program. So it was rather a help than a full answer.
And add one more thing: level 15 is for sure faster by hand than checking all possibilities. Intersections are not so easy to catch. Plus you have to think which cases are possible and which aren't. That wasn't easy, but it was complex enough to show me logic/math part of your game.