Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.Comparator;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.ArrayList;
- import java.util.List;
- class ShapesApplication {
- List<Canvas> canvases;
- public ShapesApplication() {
- }
- public int readCanvases(InputStream in) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
- this.canvases= bufferedReader.lines().map(i->Canvas.create(i)).collect(Collectors.toList());
- return canvases.stream().mapToInt(i->i.numberOfElements()).sum();
- }
- public void printLargestCanvasTo(PrintStream out) {
- PrintWriter printWriter = new PrintWriter(out);
- printWriter.println(canvases.stream().max(Comparator.naturalOrder()).get());
- printWriter.flush();
- }
- }
- class Canvas implements Comparable<Canvas> {
- private String id;
- private List<Integer> lines;
- public Canvas(String id,List<Integer> lines) {
- this.id= id;
- this.lines= lines;
- }
- public int numberOfElements(){
- return lines.size();
- }
- public int getPerimeter(){
- return lines.stream().mapToInt(i->i).sum()*4;
- }
- public static Canvas create(String s){
- String[] parts = s.split("\\s+");
- String id= parts[0];
- List<Integer> lines = new ArrayList<>();
- for(int i=1;i<parts.length;i++){
- lines.add(Integer.parseInt(parts[i]));
- }
- return new Canvas(id,lines);
- }
- @Override
- public int compareTo(Canvas o) {
- return Integer.compare(this.getPerimeter(),o.getPerimeter());
- }
- @Override
- public String toString() {
- return String.format("%s %d %d",id,numberOfElements(),getPerimeter());
- }
- }
- public class Shapes1Test {
- public static void main(String[] args) {
- ShapesApplication shapesApplication = new ShapesApplication();
- System.out.println("===READING SQUARES FROM INPUT STREAM===");
- System.out.println(shapesApplication.readCanvases(System.in));
- System.out.println("===PRINTING LARGEST CANVAS TO OUTPUT STREAM===");
- shapesApplication.printLargestCanvasTo(System.out);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement