Skip to content

Integer triangles in Java

The challenge

You have to give the number of different integer triangles with one angle of 120 degrees which perimeters are under or equal a certain value. Each side of an integer triangle is an integer value.

// number of integer triangles, give_triang(max. perimeter)
Code language: Java (java)

with sides a, b, and c integers such that:

a + b + c <= max. perimeter

See some of the following cases

// No Integer triangles with perimeter under or equal five give_triang(5) // 0 // One integer triangle of (120 degrees). It's (3, 5, 7) give_triang(15) // 1 // Three triangles: (3, 5, 7), (6, 10, 14) and (7, 8, 13) give_triang(30) // 3 // (3, 5, 7), (5, 16, 19), (6, 10, 14), (7, 8, 13) and (9, 15, 21) are the triangles with perim under or equal 50. give_triang(50) // 5
Code language: Java (java)

The solution in Java code

Option 1:

public class IntTriangles { public static int giveTriang(int per) { int cnt = ; int a = 3; while (a < per) { if (2*a > per) break; int b = a; while (b < per) { if (a + 2*b > per) break; double c = Math.sqrt(a*a + a*b + b*b); if ((c % 1 == ) && (a+b+c <= per)) cnt++; b++; } a++; } return cnt; } }
Code language: Java (java)

Option 2:

public class IntTriangles { public static int giveTriang(int per) { int res = ; for(int i =1;i<per-1;i++) for(int j = i;j<per-1;j++){ double k = Math.sqrt(i*i+i*j+j*j); if(i+j+k<=per&&i+j>k&&j+k>i&&k+i>j&&k%1==) res++; } return res; } }
Code language: Java (java)

Option 3:

public class IntTriangles { public static int giveTriang(int per) { int count = ; for (int a = 1; a < per / 2; a++) { for (int b = 1; b < a; b++) { double cSquare = a * a + b * b + a * b; int c = (int)Math.sqrt(cSquare); if (c * c == cSquare && a + b + c <= per) { count++; } } } return count; } }
Code language: Java (java)

Test cases to validate our solution

import static org.junit.Assert.*; import java.util.Random; import org.junit.Test; public class IntTrianglesTest { private static void testing(int i, int results) { assertEquals(results, i); } public static void tests(int[] list1, int[] results) { for (int i = ; i < list1.length; i++) testing(IntTriangles.giveTriang(list1[i]), results[i]); return; } @Test public void test1() { System.out.println("Basic Tests"); int[] list1 = new int[] {5, 15, 30, 50, 80, 90, 100, 150, 180, 190}; int[] results = new int[] {, 1, 3, 5, 11, 13, 14, 25, 32, 35}; tests(list1, results); } }
Code language: Java (java)

See also  FizzBuzz in Java
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x