Advertisement
techno-

Ej 2 SocialDistance.java

Oct 2nd, 2022
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.91 KB | None | 0 0
  1. public class SocialDistance {
  2.     /**
  3.      * Given the layout of a class with available seats marked with an ’A’ and
  4.      * invalid sites marked with a ’. ’, returns the resulting layout with the
  5.      * sites occupied by the students marked with a ’#’ following two rules :
  6.      * - Students occupy an empty seat if there are no other adjacent students .
  7.      * - A student leaves a seat empty if he/ she has 4 or more adjacent students .
  8.      * @param layout The initial layout .
  9.      * @return The resulting layout .
  10.      * @throws IllegalArgumentException if the initial layout is invalid (is null ,
  11.      * is ragged , includes characters other than ’.’ or ’A ’)).
  12.      */
  13.     public static char [][] seatingPeople ( char [][] layout ) {
  14.         int i;
  15.         int j;
  16.         int rodeado = 0;
  17.         if (layout==null){
  18.             throw new IllegalArgumentException("Disposición nula\n");
  19.         }
  20.  
  21.         int rowLength = layout[0].length;
  22.         for (char[] fila : layout) {
  23.             if (fila.length != rowLength) {
  24.                 throw new IllegalArgumentException("Ragged array\n");
  25.             }
  26.         }
  27.  
  28.         for(i=0,j=0; layout[i][j] != 0; i++){
  29.             for(j=0; layout[i][j] != 0; j++){
  30.                 if(layout[i][j] != 'A' && layout[i][j] != '.'){
  31.                     throw new IllegalArgumentException("Caracteres invalidos\n");
  32.                 }
  33.             }
  34.         }
  35.  
  36.  
  37.         for(i=0,j=0; layout[i][j] != 0; i++){
  38.             for(j=0; layout[i][j] != 0; j++){
  39.                 if(layout[i][j] == 'A'){
  40.                     layout[i][j] = '#';
  41.                 }
  42.             }
  43.         }
  44.  
  45.         for(i=0,j=0; layout[i][j] != 0; i++){
  46.             for(j=0; layout[i][j] != 0; j++){
  47.                 if(layout[i][j] == '#'){
  48.                     if(layout[i][j-1]== '#'){
  49.                         rodeado++;
  50.                     }
  51.                     if(layout[i][j+1]== '#'){
  52.                         rodeado++;
  53.                     }
  54.                     if(layout[i-1][j]== '#'){
  55.                         rodeado++;
  56.                     }
  57.                     if(layout[i-1][j-1]== '#'){
  58.                         rodeado++;
  59.                     }
  60.                     if(layout[i-1][j+1]== '#'){
  61.                         rodeado++;
  62.                     }
  63.                     if(layout[i+1][j]== '#'){
  64.                         rodeado++;
  65.                     }
  66.                     if(layout[i+1][j-1]== '#'){
  67.                         rodeado++;
  68.                     }
  69.                     if(layout[i+1][j+1]== '#'){
  70.                         rodeado++;
  71.                     }
  72.                     if(rodeado>=4){
  73.                         layout[i][j] = 'A';
  74.                     }
  75.                 }
  76.             }
  77.         }
  78.  
  79.         for(i=0,j=0; layout[i][j] != 0; i++){
  80.             for(j=0; layout[i][j] != 0; j++){
  81.                 if(layout[i][j] == 'A'){
  82.                     if(layout[i][j-1]== '#'){
  83.                         rodeado++;
  84.                     }
  85.                     if(layout[i][j+1]== '#'){
  86.                         rodeado++;
  87.                     }
  88.                     if(layout[i-1][j]== '#'){
  89.                         rodeado++;
  90.                     }
  91.                     if(layout[i-1][j-1]== '#'){
  92.                         rodeado++;
  93.                     }
  94.                     if(layout[i-1][j+1]== '#'){
  95.                         rodeado++;
  96.                     }
  97.                     if(layout[i+1][j]== '#'){
  98.                         rodeado++;
  99.                     }
  100.                     if(layout[i+1][j-1]== '#'){
  101.                         rodeado++;
  102.                     }
  103.                     if(layout[i+1][j+1]== '#'){
  104.                         rodeado++;
  105.                     }
  106.                     if(rodeado<4){
  107.                         layout[i][j] = '#';
  108.                     }
  109.                 }
  110.             }
  111.         }
  112.  
  113.  
  114.     return layout;
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement