 Number of triangles Puzzle - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Software Libraries (/forum-10.html) +--- Forum: HP Prime Software Library (/forum-15.html) +--- Thread: Number of triangles Puzzle (/thread-6542.html) Number of triangles Puzzle - chromos - 07-11-2016 05:00 PM 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; `