Advertisement
dzocesrce

[NP] Baby Canvas

Apr 13th, 2025
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.21 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Comparator;
  3. import java.util.List;
  4. import java.util.stream.Collectors;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. class ShapesApplication {
  9.  
  10.     List<Canvas> canvases;
  11.  
  12.     public ShapesApplication() {
  13.     }
  14.  
  15.     public int readCanvases(InputStream in) {
  16.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
  17.         this.canvases= bufferedReader.lines().map(i->Canvas.create(i)).collect(Collectors.toList());
  18.  
  19.         return canvases.stream().mapToInt(i->i.numberOfElements()).sum();
  20.     }
  21.  
  22.     public void printLargestCanvasTo(PrintStream out) {
  23.         PrintWriter printWriter = new PrintWriter(out);
  24.  
  25.         printWriter.println(canvases.stream().max(Comparator.naturalOrder()).get());
  26.         printWriter.flush();
  27.     }
  28. }
  29.  
  30. class Canvas implements Comparable<Canvas> {
  31.     private String id;
  32.     private List<Integer> lines;
  33.  
  34.     public Canvas(String id,List<Integer> lines) {
  35.         this.id= id;
  36.         this.lines= lines;
  37.     }
  38.  
  39.     public int numberOfElements(){
  40.         return lines.size();
  41.     }
  42.  
  43.     public int getPerimeter(){
  44.         return lines.stream().mapToInt(i->i).sum()*4;
  45.     }
  46.  
  47.     public static Canvas create(String s){
  48.  
  49.         String[] parts = s.split("\\s+");
  50.         String id= parts[0];
  51.         List<Integer> lines = new ArrayList<>();
  52.         for(int i=1;i<parts.length;i++){
  53.             lines.add(Integer.parseInt(parts[i]));
  54.         }
  55.         return new Canvas(id,lines);
  56.     }
  57.  
  58.     @Override
  59.     public int compareTo(Canvas o) {
  60.         return Integer.compare(this.getPerimeter(),o.getPerimeter());
  61.     }
  62.  
  63.     @Override
  64.     public String toString() {
  65.         return String.format("%s %d %d",id,numberOfElements(),getPerimeter());
  66.     }
  67. }
  68.  
  69.  
  70. public class Shapes1Test {
  71.  
  72.     public static void main(String[] args) {
  73.         ShapesApplication shapesApplication = new ShapesApplication();
  74.  
  75.         System.out.println("===READING SQUARES FROM INPUT STREAM===");
  76.         System.out.println(shapesApplication.readCanvases(System.in));
  77.         System.out.println("===PRINTING LARGEST CANVAS TO OUTPUT STREAM===");
  78.         shapesApplication.printLargestCanvasTo(System.out);
  79.  
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement