-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbanheiro.rb
59 lines (49 loc) · 1.35 KB
/
banheiro.rb
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
class Banheiro
def initialize(mictorios)
@mictorios = mictorios
end
def escolhe_mictorio
if os_dois_primeiros_mictorios_estao_vagos?
primeiro_mictorio
elsif os_dois_ultimos_mictorios_estao_vagos?
ultimo_mictorio
elsif existe_sequencia_de_tres_mictorios_vagos?
ache_mictorio_mijavel
else
"Nao deve usar esse banheiro"
end
end
def os_dois_primeiros_mictorios_estao_vagos?
@mictorios.first(2) == [0,0]
end
def os_dois_ultimos_mictorios_estao_vagos?
@mictorios.last(2) == [0,0]
end
def primeiro_mictorio
"1"
end
def ultimo_mictorio
@mictorios.size.to_s
end
def existe_sequencia_de_tres_mictorios_vagos?
ache_mictorio_mijavel != "Nao encontrado"
end
def ache_mictorio_mijavel
encontre_mictorio_vago_com_a_vizinhanca_vaga @mictorios
end
private
VAGO = 0
UM, OCUPADO = 1
def encontre_mictorio_vago_com_a_vizinhanca_vaga(mictorios)
mictorio_esquerda = mictorios.index(VAGO)
mictorio_centro = mictorio_esquerda + UM
mictorio_direita = mictorio_centro + UM
if mictorios[mictorio_centro] == VAGO && mictorios[mictorio_direita] == VAGO
return (mictorio_centro + UM).to_s
elsif mictorios[mictorio_direita .. @mictorios.size].index(VAGO)
mictorios[mictorio_esquerda] = OCUPADO
return encontre_mictorio_vago_com_a_vizinhanca_vaga mictorios
end
"Nao encontrado"
end
end