This is my solution to the question.
I don't know if it is optimal.
i am running the code on VPS with 3000 intersections. (below a part of the code only 7 sets intersections)
I don't know if PROLOG able to solve it ?
%use_module(library(clpfd)).
solve_frkeno(B1,B2,B3,B4,B5,B6,B7,B8,B9,B10) :-
between(1, 13, B1),
between(4, 21, B2),
between(8, 29, B3),
between(14, 37, B4),
between(18, 41, B5),
between(27, 50, B6),
between(35, 57, B7),
between(42, 63, B8),
between(50, 68, B9),
between(58, 70, B10),
all_different([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10]),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[5,6,13,16,19,20,22,30,31,34,35,39,40,51,52,56,59,61,65,69],I1),
length(I1,N1),
between(0,6,N1),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[5,8,9,13,14,16,21,24,29,33,35,47,49,52,54,58,59,64,65,68],I2),
length(I2,N2),
between(0,6,N2),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[1,3,6,12,16,21,23,25,28,37,39,40,42,44,48,49,50,58,63,69],I3),
length(I3,N3),
between(0,6,N3),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[4,8,9,14,21,24,26,28,36,45,46,52,54,57,59,60,61,62,63,67],I4),
length(I4,N4),
between(0,6,N4),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[9,11,13,16,19,20,25,27,28,29,34,39,41,48,49,50,53,63,64,65],I5),
length(I5,N5),
between(0,6,N5),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[4,5,9,12,19,29,30,32,33,34,35,38,42,45,49,57,58,60,62,70],I6),
length(I6,N6),
between(0,6,N6),
intersection([B1,B2,B3,B4,B5,B6,B7,B8,B9,B10],[2,3,6,12,13,15,16,19,26,29,30,40,43,51,52,53,58,64,67,69],I7),
length(I7,N7),
between(0,6,N7),
member
to check if a ball has already been added to your list of 10 balls, then add it in the next goal if it hasn't. Prolog's backtracking mechanism will try all possible combinations as solutions. – G_V