-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Modificados nomes das pastas e adicionados arquivos do Dojo UENF 3
- Loading branch information
1 parent
c94ba9a
commit 4e6e1f1
Showing
11 changed files
with
215 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
Dojo UENF [3] | ||
============= | ||
|
||
Problema: Lâmpadas no corredor | ||
------------------------------ | ||
|
||
Um homem chamado José é o responsável por ligar e desligar as luzes do corredor | ||
em nossa universidade. Cada lâmpadas tem seu próprio interruptor que troca o | ||
estado da luz. Se a luz esta apagada, apertando o interruptor ela passa a estar | ||
ligada. Apertando novamente ela erá desligar. Inicialmente todas as lâmpadas | ||
estão desligadas. | ||
|
||
José faz uma coisa peculiar, Se tem *n* lâmpadas no corredor, ele caminha até | ||
o fim do corredor e volta *n* vezes. Na *i*ésima caminhada, ele aperta apenas os | ||
interruptores aos quais sua posição é divisível por *i*. Ele não aperta nenhum | ||
interruptor na volta à sua posição inicial, apenas na ida. A *i*ésima caminhada | ||
é definida como ir ao fim do corredor e voltar. | ||
|
||
Determine qual é o estado final de cada lâmpada. Está ligada ou desligada? | ||
|
||
*Entrada* | ||
A entrada será um inteiro indicando o número de lâmpadas no corredor. Zero | ||
indica o fim da entrada e não deve ser processado. | ||
|
||
*Saída* | ||
A saída deve indicar o estado, ligada ou desligada, das lâmpadas. | ||
|
||
*Exemplo de entrada* | ||
3 | ||
|
||
*Exemplo de saída* | ||
[on, off, off] | ||
|
||
|
||
**Obs.:** Este problema foi baseado no problema "Ligth, More Ligth" do livro | ||
*Programming Challenges* de *Steven S. Skiena* e *Miguel A. Revilla*. | ||
|
||
Participantes | ||
------------- | ||
|
||
* Eduardo Hertz | ||
* Herond Salles | ||
* Hugo Maia Vieira | ||
* Mayra Santana | ||
* Rodrigo Manhães | ||
* Sânya Carvalho | ||
|
||
Observação | ||
---------- | ||
|
||
O arquivo __dojo.rb deriva de uma discussão que tivemos, levantada por Rodrigo, | ||
de como os testes deveriam se escritos. O relato da discussão está no próprio | ||
arquivo. | ||
|
||
<!--![Foto do dia 20/04/2010]()--> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# Este arquivo surgiu de uma discussão que tivemos, levantada por Rodrigo, de | ||
# como os testes deveriam se escritos. | ||
|
||
require "corredor" | ||
|
||
describe Corredor do | ||
|
||
it 'deve ter como estado inicial todas as lâmpadas apagadas' do | ||
corredor = Corredor.new 1 | ||
corredor.should have(1).lampadas | ||
corredor.estados_das_lampadas.should == [0] | ||
|
||
corredor = Corredor.new 50000 | ||
corredor.should have(50000).lampadas | ||
corredor.estados_das_lampadas. | ||
should == (1..50000).to_a.collect {|x| 0} | ||
end | ||
|
||
it "deve calcular o estado das lâmpadas ao passar" do | ||
verificar_estado :lampadas => 1, :resultado => [1] | ||
verificar_estado :lampadas => 2, :resultado => [1, 0] | ||
verificar_estado :lampadas => 1, :resultado => [1, 0, 0, 1] | ||
end | ||
|
||
# Este teste demorou 93 segundos para rodar no ruby 1.8 | ||
it "tendo 6241 lâmpadas a última lâmpada deve terminar com estado 1" do | ||
corredor = Corredor.new 6241 | ||
corredor.passar | ||
corredor.estados_das_lampadas.last.should == 1 | ||
end | ||
|
||
def verificar_estado(params) | ||
corredor = Corredor.new params[:lampadas] | ||
corredor.passar | ||
corredor.estados_das_lampadas.should == params[:resultado] | ||
end | ||
|
||
end | ||
|
||
describe Lampada do | ||
|
||
it 'deve ter o estado inicial de apagado' do | ||
Lampada.new.estado.should be_zero | ||
end | ||
|
||
it 'deve inverter o estado quando acionada' do | ||
lampada = Lampada.new | ||
lampada.acionar | ||
lampada.estado.should == 1 | ||
lampada.acionar | ||
lampada.estado.should == 0 | ||
end | ||
|
||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
require "lampada" | ||
|
||
class Corredor | ||
attr_reader :lampadas | ||
|
||
def initialize lampadas | ||
@lampadas = [] | ||
lampadas.times do | ||
@lampadas << Lampada.new | ||
end | ||
end | ||
|
||
def estados_das_lampadas | ||
@lampadas.collect {|lampada| lampada.estado} | ||
end | ||
|
||
def passar | ||
@lampadas.count.times do |passada| | ||
@lampadas.each_with_index do |lampada, i| | ||
if (i+1) % (passada+1) == 0 | ||
lampada.acionar | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
class Lampada | ||
attr_reader :estado | ||
|
||
def initialize | ||
@estado = 0 | ||
end | ||
|
||
def acionar | ||
@estado = @estado.zero? ? 1 : 0 | ||
end | ||
end | ||
|
65 changes: 65 additions & 0 deletions
65
2010.04.20.lampadas_no_corredor/lampadas_no_corredor_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
require "corredor" | ||
|
||
describe Corredor do | ||
|
||
it "deve conter inicialmente 1 lâmpada com o estado Apagado" do | ||
corredor = Corredor.new 1 | ||
corredor.should have(1).lampadas | ||
corredor.estados_das_lampadas.should == [0] | ||
end | ||
|
||
it "deve conter inicialmente 5 lâmpadas com estado Apagado" do | ||
corredor = Corredor.new 5 | ||
corredor.should have(5).lampadas | ||
corredor.estados_das_lampadas.should == [0, 0, 0, 0, 0] | ||
end | ||
|
||
it "tendo 1 lâmpada deve terminar com estado [1]" do | ||
corredor = Corredor.new 1 | ||
corredor.passar | ||
corredor.estados_das_lampadas.should == [1] | ||
end | ||
|
||
it "tendo 2 lâmpadas deve terminar com estados [1, 0]" do | ||
corredor = Corredor.new 2 | ||
corredor.passar | ||
corredor.estados_das_lampadas.should == [1, 0] | ||
end | ||
|
||
it "tendo 3 lâmpadas deve terminar com estados [1, 0, 0]" do | ||
corredor = Corredor.new 3 | ||
corredor.passar | ||
corredor.estados_das_lampadas.should == [1, 0, 0] | ||
end | ||
|
||
it "tendo 4 lâmpadas deve terminar com estados [1, 0, 0, 1]" do | ||
corredor = Corredor.new 4 | ||
corredor.passar | ||
corredor.estados_das_lampadas.should == [1, 0, 0, 1] | ||
end | ||
|
||
# Este teste demorou 93 segundos para rodar no ruby 1.8 | ||
it "tendo 6241 lâmpadas a última lâmpada deve terminar com estado 1" do | ||
corredor = Corredor.new 6241 | ||
corredor.passar | ||
corredor.estados_das_lampadas.last.should == 1 | ||
end | ||
|
||
end | ||
|
||
describe Lampada do | ||
|
||
it 'deve ter o estado inicial de apagado' do | ||
Lampada.new.estado.should be_zero | ||
end | ||
|
||
it 'deve inverter o estado quando acionada' do | ||
lampada = Lampada.new | ||
lampada.acionar | ||
lampada.estado.should == 1 | ||
lampada.acionar | ||
lampada.estado.should == 0 | ||
end | ||
|
||
end | ||
|