HP Forums

Full Version: Number of triangles Puzzle
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
The program calculates the number of triangles in the geometrical figures.

Example 1:
How many triangles are in this puzzle?
[attachment=3747]

a) First we mark every important point on every line (doesn't matter in which order):
[attachment=3748]

b) Next we insert every line with their points as sublists into list L0 (doesn't matter in which order):
L0:= {
{1,2,3},
{1,4,5,6},
{6,10,9},
{3,7,8,9},
{5,11,12,13,14,15,7},
{6,16,17,13,18,19,3},
{2,4},
{4,11,16,20},
{20,21,14},
{14,18,23,2},
{22,19,15,8},
{8,10},
{10,21,17,12},
{12,23,22},
}

c) Now run the program. :-)
=====================

Example 2:
How many triangles are in this puzzle?
[attachment=3749]

a) First we mark every important point on every line (doesn't matter in which order):
[attachment=3750]

b) Next we insert every line with their points as sublists into list L0 (doesn't matter in which order):
L0:= {
{1,2,3},
{3,4,5,6},
{6,7,1},
{1,8,10,4},
{1,9,11,5},
{2,8,9,7},
{3,10,11,7}
}

c) Now run the program. :-)
=====================

PHP Code:
// The program calculates the number of triangles in the geometrical figures (puzzles).
// Mark all the vertices and intersections (i.e. number it).
// Write each straight line with all its points as sublist into L0 list.
// Example:
// Consider a triangle with its three medians.
// Fill list L0 as follows:
//L0(1):={1,2,5}
//L0(2):={1,3,7}
//L0(3):={1,4,6}
//L0(4):={2,4,7}
//L0(5):={3,4,5}
//L0(6):={5,6,7}
//Run the program, output will be in list L4 in which each sublist is one triangel with its vertices.

EXPORT NumOfTrianglesRiddle()
BEGIN
LOCAL count
:=0,p,q,r,s,t,u;
L1:={};
L2:={};
L3:={};
L4:={};
PRINT();
FOR 
p FROM 1 TO (SIZE(L0)-2) DO
 FOR 
q FROM (p+1TO (SIZE(L0)-1) DO
  FOR 
r FROM (q+1TO SIZE(L0) DO
   
L1:=L0(p);
   
L2:=L0(q);
   
L3:=L0(r);
   FOR 
s FROM 1 TO SIZE(L1) DO
    IF (
member(L1(s),L2)) THEN
     
FOR t FROM 1 TO SIZE(L2) DO
      IF (
member(L2(t),L3)) THEN
       
FOR u FROM 1 TO SIZE(L3) DO
        IF (
member(L3(u),L1)) THEN
         
IF (L1(s)<>L2(t) AND L2(t)<>L3(u) AND L3(u)<>L1(s)) THEN
          count
:=count+1;
          
L4(0):={L1(s),L2(t),L3(u)};
          
L4(count):=SORT(L4(count));
          PRINT(
count+":   "+L4(count,1)+" - "+L4(count,2)+" - "+L4(count,3));
         
END;
        
END;
       
END;
      
END;
     
END;
    
END;
   
END;
  
END;
 
END;
END;
PRINT(
"END");

END
Reference URL's