Skip to content

Commit

Permalink
Merge pull request #3 from erichideki/master
Browse files Browse the repository at this point in the history
Add coding dojo at CT NOVATEC
  • Loading branch information
Eric Hideki committed Jul 13, 2015
2 parents 764a3a1 + 3ddde4b commit 9d0fc2c
Show file tree
Hide file tree
Showing 6 changed files with 211 additions and 0 deletions.
49 changes: 49 additions & 0 deletions coding-dojo-novatec-04-2015/dojo.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
Dojo Python 2015-03-05 @ CT da Novatec

Problema:
http://dojopuzzles.com/problemas/exibe/lampadas-no-corredor/

Linha para rodar os testes com o dose:
dose.py py.test dojo.py

Instalação dose:
sudo apt-get install python-wxgtk2.8 python-pip
sudo pip install dose

Retrospectiva:

*** =) ***

- Didática/Explicação (+++)
- Python (+++)
- Motivou próximos dojos!
- DojoPuzzles (+)
- git
- Semáforo dose.py (++)
- Lugar novo
- Sala confortável
- Balas, café e kitutz! (+)
- Fácil acesso (próximo do metrô) (+)
- Aprendizado coletivo / solução de dúvidas / pessoal atencioso (++)
- Tema (+)
- Ambiente acolhedor/descontraído (++)
- Boa iluminação
- Babysteps!
- Exercício/problema
- Não perdemos tempo (setup, decisões, etc.)
- Modo de seleção da linguagem
- Conhecer como funciona um dojo (gente nova)

*** =( ***

- Teve gente que chegou atrasado
- Podia vir mais gente
- Nem todos ficaram até o final

- Nem todos conseguiram contribuir
- Acabou rápido (-)
- Problema aproveitou poucos recursos da linguagem
- Bugs do dose.py (-)

- Até aqui o vestido foi comentado

19 changes: 19 additions & 0 deletions coding-dojo-novatec-04-2015/git-author-rewrite.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh

git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="Dojo SP"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
Empty file.
1 change: 1 addition & 0 deletions coding-dojo-novatec-04-2015/pip-selfcheck.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"last_check":"2015-03-05T21:39:26Z","pypi_version":"6.0.8"}
71 changes: 71 additions & 0 deletions coding-dojo-novatec-04-2015/src/dojo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env python
# coding: utf-8
#
# Um homem chamado José é o responsável por ligar e desligar as luzes de um
# corredor. Cada lâmpada tem seu próprio interruptor que liga e a desliga.
# Inicialmente todas as lâmpadas estão desligadas.
# José faz uma coisa peculiar: se existem 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?
# Exemplo:
# Entrada: 3
# Saída: [on, off, off]
# 1 TTTTTTTTTTT
# 2 TFTFTFTFTFT
# 3 TFFFTTTFFFT
# 4 TFFTTTTTFFT
# 5 TFFTFTTTFTT
# 6 TFFTFFTTFTT
# 7 TFFTFFFTFTT
# 8 TFFTFFFFFTT
# 9 TFFTFFFFTTT
# 10 TFFTFFFFTFT
# 11 TFFTFFFFTFF # 1, 4, 9

def corredor(n):
lampadas = [True] * n
for i in range(2, n + 1):
for j in range(i - 1, n, i):
lampadas[j] = not lampadas[j]
return lampadas

def test_55_lampadas():
n = 55
assert corredor(n) == [int(i ** .5) ** 2 == i for i in range(1, n + 1)]

def test_11_lampadas():
assert corredor(11) == [True,False,False,True,False,False,False,False,
True,False,False]

def test_8_lampadas():
assert corredor(8) == [True,False,False,True,False,False,False,False]

def test_7_lampadas():
assert corredor(7) == [True,False,False,True,False,False,False]

def test_6_lampadas():
assert corredor(6) == [True,False,False,True,False,False]

def test_5_lampadas():
assert corredor(5) == [True, False, False, True, False]

def test_4_lampadas():
assert corredor(4) == [True, False, False, True]

def test_3_lampadas():
assert corredor(3) == [True, False, False]

def test_2_lampadas():
assert corredor(2) == [True, False]

def test_1_lampada():
assert corredor(1) == [True]

def test_nenhuma_lampada():
entrada = 0
obtido = corredor(entrada)
assert obtido == []

71 changes: 71 additions & 0 deletions coding-dojo-novatec-04-2015/src/dojo.py~
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env python
# coding: utf-8
#
# Um homem chamado José é o responsável por ligar e desligar as luzes de um
# corredor. Cada lâmpada tem seu próprio interruptor que liga e a desliga.
# Inicialmente todas as lâmpadas estão desligadas.
# José faz uma coisa peculiar: se existem 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?
# Exemplo:
# Entrada: 3
# Saída: [on, off, off]
# 1 TTTTTTTTTTT
# 2 TFTFTFTFTFT
# 3 TFFFTTTFFFT
# 4 TFFTTTTTFFT
# 5 TFFTFTTTFTT
# 6 TFFTFFTTFTT
# 7 TFFTFFFTFTT
# 8 TFFTFFFFFTT
# 9 TFFTFFFFTTT
# 10 TFFTFFFFTFT
# 11 TFFTFFFFTFF # 1, 4, 9

def corredor(n):
lampadas = [True] * n
for i in range(2, n + 1):
for j in range(i - 1, n, i):
lampadas[j] = not lampadas[j]
return lampadas

def test_55_lampadas():
n = 55
assert corredor(n) == [int(i ** .5) ** 2 == i for i in range(1, n+1)]

def test_11_lampadas():
assert corredor(11) == [True,False,False,True,False,False,False,False,
True,False,False]

def test_8_lampadas():
assert corredor(8) == [True,False,False,True,False,False,False,False]

def test_7_lampadas():
assert corredor(7) == [True,False,False,True,False,False,False]

def test_6_lampadas():
assert corredor(6) == [True,False,False,True,False,False]

def test_5_lampadas():
assert corredor(5) == [True, False, False, True, False]

def test_4_lampadas():
assert corredor(4) == [True, False, False, True]

def test_3_lampadas():
assert corredor(3) == [True, False, False]

def test_2_lampadas():
assert corredor(2) == [True, False]

def test_1_lampada():
assert corredor(1) == [True]

def test_nenhuma_lampada():
entrada = 0
obtido = corredor(entrada)
assert obtido == []

0 comments on commit 9d0fc2c

Please sign in to comment.