0votos

Edificio de 5 pisos en Java

por Pepe Gonzalez hace 3 meses

Sabiendo la respuesta es complicado evaluar si la operación que realiza el código es la correcta. La solución parece ser la buena pero supongo que se pueden afinar las operaciones.

Resolver esta especie de acertijo con programación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* 
Existe un edificio de 5 pisos donde viven 5 personas una en cada piso: 
 
  - Adam no vive en el ultimo piso. 
  - Bill no vive en el primer piso. 
  - Cora no vive ni en el primer ni en el ultimo piso. 
  - Dale vive en un piso que esta más arriba que el de Bill. 
  - Erin no vive en un piso al lado del piso donde vive Cora. 
  - Cora no vive en un piso al lado del piso donde vive Bill. 
 
Nota: Existe solo una solución. 
*/ 
 
import java.util.*; 
import java.lang.*; 
 
class Rextester 
{   
    public static void main(String args[]) 
        GetFloor G = new GetFloor(); 
               
        G.GetCora(); 
        G.SetDale();          
        System.out.println("Piso de Adam: " + G.PisoAdam()); 
        System.out.println("Piso de Erin: " + G.GetErin()); 
 
class GetFloor 
    //Lista donde guardar el orden de los pisos 
    ArrayList<Integer> List = new ArrayList<Integer>(5);  
     
    //Posibles pisos de cada inquilino 
    int[] Adam = {1, 2, 3, 4}; 
    int[] Bill = {2, 3, 4, 5}; 
    int[] Cora = {2, 3, 4};     
    int[] Dale = {3, 4, 5};     
    int[] Erin = {4, 5}; 
     
    int pisoDefCora = 0; 
    int pisoDefDale = 0; 
    int pisoBill = 0; 
         
    //Calcula el piso de Bill teniendo en cuenta el de Cora 
    public void GetCora() 
        boolean CoraTest = true;                      
        int b = 0; 
                
        while(b <= 3) 
        {              
             pisoBill = SetCora(Bill[b]); 
             b++;  
        System.out.println("Piso de Bill: " + pisoBill); 
        List(pisoBill); 
         
        pisoDefCora = pisoBill + 2; 
        List(pisoDefCora); 
        System.out.println("Piso de Cora: " + (pisoDefCora));        
     
    //Calcula el piso de Cora teniendo en cuenta el de Bill     
    public int SetCora(int z)      
        int c = 0; 
        int pisoCora = 0; 
         
        while (c <= 2) 
            if(((z - Cora[c]) != 1) || ((z - Cora[c]) != -1)) 
                pisoBill = Cora[c]; break; 
            else 
                    c++; 
                }         
        return pisoBill;    
     
    //Calcula le piso de Dale teniendo en cuenta el de Bill 
    public void SetDale() 
        pisoDefDale = pisoBill + 1; 
        List(pisoDefDale); 
        System.out.println("Piso de Dale: " + (pisoBill + 1)); 
     
    //Agrega los pisos a la lista 
    public void List(int l) 
    {            
        List.add(l); 
    }  
     
    //Calcula el piso de Adam 
    public int PisoAdam() 
        int b = 0; 
        int a = 0; 
         
        while((b <= 3) && (a <= 2)) 
            if(Adam[b] == List.get(a)) 
                b++; a++; 
            else 
                break; 
            }             
        List.add(Adam[b]); 
        int x = Adam[b]; 
        return x; 
     
    //Calcula el piso de Erin, será el que quede libre de la lista     
    public int GetErin() 
       int r = 0; 
       int ErinDef = 0; 
         
       while(r <= 1) 
           if(!List.contains(Erin[r])) 
               ErinDef = Erin[r]; break; 
           r++; 
       return ErinDef; 
    }      
        

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.