Facebook
From Ferhat Taş, 3 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 143
  1. import java.io.IOException;
  2. import java.nio.file.Files;
  3. import java.nio.file.Paths;
  4. import static java.util.Arrays.stream;
  5. import java.util.logging.Level;
  6. import java.util.logging.Logger;
  7.  
  8. public class Main {
  9.  
  10.     public static void main(String[] args) {
  11.         System.out.println("Maximum Sum : " + findSum("file.txt"));
  12.     }
  13.  
  14.    
  15.     public static int findSum(String filename) {
  16.         // Get triangle array from file
  17.         int[][] numbers = null;
  18.         try {
  19.             numbers = Files.lines(Paths.get(filename)).map(s -> stream(s.trim().split("\\s+")).mapToInt(Integer::parseInt).toArray()).toArray(int[][]::new);
  20.         } catch (IOException ex) {
  21.             Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  22.         }
  23.        
  24.         // Write triangle array
  25.         for (int i = 0; i < numbers.length; i++) {
  26.             for (int j = 0; j < numbers[i].length; j++) {
  27.                 System.out.printf(numbers[i][j] + " ");
  28.             }
  29.             System.out.printf("\n");
  30.         }
  31.      
  32.         // Get maximum sum with controls
  33.         int sum = 0;
  34.         for (int rowIndex = numbers.length - 1; rowIndex > 0; rowIndex--) {
  35.             for (int columnIndex = 0; columnIndex < numbers[rowIndex].length - 1; columnIndex++) {
  36.                 if (!isPrime(numbers[rowIndex - 1][columnIndex]) || (rowIndex == 1)) {
  37.                     if (rowIndex == numbers.length - 1) {
  38.                         int max = Math.max(isPrime(numbers[rowIndex][columnIndex]) ? 0 : numbers[rowIndex][columnIndex],
  39.                                 isPrime(numbers[rowIndex][columnIndex + 1]) ? 0 : numbers[rowIndex][columnIndex + 1]);
  40.                        
  41.                         numbers[rowIndex - 1][columnIndex] += max;
  42.                     } else {
  43.                         int max = Math.max(numbers[rowIndex][columnIndex], numbers[rowIndex][columnIndex + 1]);
  44.                        
  45.                         numbers[rowIndex - 1][columnIndex] += max;
  46.                     }
  47.                     sum = numbers[rowIndex - 1][columnIndex];
  48.                 } else { // If it is prime number
  49.                     numbers[rowIndex - 1][columnIndex] = 0;
  50.                     sum = numbers[rowIndex - 1][columnIndex];
  51.                 }
  52.  
  53.             }        
  54.         }
  55.        
  56.         return sum;
  57.     }
  58.    
  59.    
  60.     // A function which we can get 'true' if given number is prime
  61.     public static boolean isPrime(int number) {
  62.         if (number <= 1) {
  63.              return false;
  64.         }
  65.         for (int i = 2; i <= Math.sqrt(number); i++) {
  66.             if (number % i == 0) {
  67.                 return false;
  68.             }
  69.         }
  70.          return true;
  71.     }
  72.    
  73. }
  74.