# 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()BEGINLOCAL 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+1) TO (SIZE(L0)-1) DO  FOR r FROM (q+1) TO 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
• HP Forums: https://www.hpmuseum.org/forum/index.php
• :