dojo@Centro 04/06/2014 – Star Wars! Na Guerra ou você mira ou atira!

quarta-feira, 11 junho 2014

Salve padawans de Plantão!

No dia 4 de junho tivemos mais um Dojo no quartel general da DTM e depois de vários meses sem postar aqui no dojorio, nada melhor que falar sobre os temas que movem o mundo: Matemática e é claro StarWars. É isso mesmo que você ouviu (ou leu). O problema selecionado foi sobre Star Wars.

topo


 

O problema:

Há muitos anos atrás em uma galáxia distante, existia um império que dominava todos os outros.  Uma aliança rebelde insatisfeita  com esta situação decide lutar contra essa força, com o objetivo de restaurar a democracia e a paz para todas as nações.

Capitão Cael, um dos comandantes rebeldes, navegando pelo espaço com o seu cruzador espacial, quando ele de repente identifica a presença de uma nave do império ( e de acordo com os padrões da época, todas as naves são tetraedros). Após um momento de surpresa, Cael percebe que está na linha de tiro e pode colocar um canhão em qualquer ponto de sua nave.

Objetivo > Dados os pontos das naves (tetraedros). Qual é a menor distância entre as naves, para melhor posicionar o canhão.

Como eu sei que sou péssimo dando os detalhes das coisas. Segue o link do problema: http://www.urionlinejudge.com.br/judge/en/problems/view/1126

Para os curiosos e DojoHomeworkers aficionados. Segue link do código fonte no github: https://github.com/dojorio/dojo-centro/tree/master/2014/20140604%20-%20naves%20e%20tetraedros%20-%20javascript

Retrospectiva:

 

rindo

 

 

 

 

Guloseimas;

Álgebra linear;

Muita gente;

Javascript;

Referências Star Wars.

 

triste

 

 

 

 

 

 

Teste com javascript;

Começou tarde.

 


 

fimO dojo rola todas as 4º feiras, começando entre 18:30 – 19:00 e se você gostou, é só chegar! Qualquer dúvida, é só mandar email para a lista do dojo google groups, que sempre tem alguém para responder, por isso, venha!


Dojando com estudantes de direito

quarta-feira, 27 novembro 2013

Alô amigos dojeiros!

Há tempos não escrevo aqui e vou quebrar o jejum contando um pouco de uma bagunça que temos feito deste lado da galáxia.

No meio deste ano passei a trabalhar na escola de direito da FGV; como minha pesquisa lá na matemática estava debruçada sobre esse domínio, fez sentido aproveitar a oportunidade de trabalhar direto com essa gente boa que fala muito diferente.

Pouco tempo depois, o professor Ivar Hartmann, responsável pelo Supremo em Números, decidiu começar um grupo de estudos em programação com os estudantes de direito e me convidou para ser “tutor” do grupo.

O desafio era compartilhar do maravilhoso mundo da programação com um grupo que conhecia muito pouco do assunto, com backgrounds e interesses diferentes. Não tive dúvidas: façamos Dojos!

O que se seguiu foi uma experiência bem gostosa. Ver o pessoal entendendo temas como TDD, tipos, mutáveis x imutáveis e as coisas fluindo tão suavemente foi bem legal. Legal não, foi maneiríssimo vê-los comemorando porque o teste passou, pulando de alegria em algum momento eureka e explicando com segurança as próprias sacadas para quem tinha faltado a algum encontro.

Enfim, deu pra ver que focar as pessoas, não o conteúdo, focar a aprendizagem, não a “ensinagem”, faz toda diferença. O Dojo se mostrou mais uma vez um método bem útil pra isso. Tenho aprendido muito a cada encontro.

Termino esse post, então, com três depoimentos dos participantes:

O Grupo de Estudos em Programação é uma oportunidade para o estudante ou profissional do Direito explorar uma área em intenso desenvolvimento. As atividades permitem o desenvolvimento de raciocínio lógico e o aprimoramento da capacidade de estruturação e expressão através da linguagem. Em poucos encontros, os resultados já são evidentes e superaram minhas expectativas. Bianca Dutra

O grupo de estudo é um espaço em que podemos estudar esse tema de vanguarda e com o método do Dojo, em que estamos sempre com a mão na massa . Assim, vendo os conceitos aplicados na prática, chega a ser divertido as reuniões do grupo, que tem um clima muito agradável. Pedro Delfino

Percebi a necessidade de aprender a programar quando do início do meu projeto de Trabalho de Conclusão de Curso. Minha proposta era enfrentar o clássico problema da Judicialização de questões envolvendo a Administração Pública analisando um grande volume de dados, fazer um estudo empírico em direito. À época, capturei, li, categorizei e tabulei em excel cerca de 600 decisões judiciais, tudo manualmente. Consegui fazer as análises que queria e obtive um excelente resultado com o TCC, mas longe do volume de dados que gostaria de explorar, simplesmente porque não sabia programar. Essa etapa que durou cerca de 2 meses, poderia ter sido feita em dias.

A importância de aprender a programar não está só para as pesquisas. O advogado de hoje e do futuro tem e terá cada vez mais que lidar com questões extremamente complexas e, por vezes, envolvendo grande volume de dados. Gerar visualizações para contribuir na tomada de decisões, explorar dados para enxergar estrategicamente, administrar processos e até mesmo fazer cálculo de predileção de determinada tese, tudo isso se torna mais simples e rápido sabendo programar.  Acredito que as aulas que a Direito Rio vem oferecendo aos alunos são de extrema relevância para facilitar o exercício profissional.Isabelle Lessa


DojoRio@Centro – Informações Importantes

quarta-feira, 25 setembro 2013

Olá, pessoal. Tudo bem?

Infelizmente, o dojoRio@Centro está num momento complicado e precisa da ajuda de todos os seus participantes. A Íparos, que posteriormente se tornou #CurtoCircuito fechou as portas.

Isso significa que o dojo neste momento não é mais feito na Av 13 de Maio, 13 – sala 615/616 (neste momento, pois quem sabe se acontece algo muito bom e um dia o dojo volta para lá, seria legal).

Estamos procurando locais onde consiga abrigar o dojoRio e os seus participantes, uma galera maneira que varia de 5 a 20 participantes. Nós agradecemos imensamente a todos os que ofereceram espaço e carinho para receber o dojoRio@Centro ou apoio de qualquer forma.

Para saber onde será o dojo, enquanto o local definitivo não é definido, é só verificar na lista do dojoRio do google groups.

Hoje, dia 25/09/2013, o dojoRio@Centro será na Intelie – Av Nilo Peçanha, 50, sala 1401 (14º andar) – esquina com a Rio Branco, perto do infocentro, mas no outro lado da Nilo Peçanha: no Edifício Rodolpho De Paoli.

Na semana passada, dia 18/09/2013, fomos no coworking Nitis Office localizado no Edifício Odeon (Praça Mahatma Ghandi n2 salas 822/823 Cinelândia – RJ).

A Viviane está levantando um fork do dojo no Meier, quem quiser ajudar dá uma olhadinha. Seria muito legal ter dojo em várias regiões e não só no Centro e esperamos que o dojo@Meier seja um sucesso também.

Quem quiser oferecer espaço para o dojo, que esteja disponível as 4º feiras entre 18:30 e 22:00 horas, por gentileza é só falar com qualquer participante do dojoRio, pois todos participam ativamente do dojo :D.

Até a próxima o/


dojo@Centro 21/08/2013 – Big Brother SUIPA

quarta-feira, 4 setembro 2013

Salve jogadores!!
Primeiramente, adotando o Jacqueline Pattern, gostaria de pedir desculpas por demorar tanto para postar como foi o dojo do dia 21/08/2013. Sem contar que as retrospectivas estavam no bolso da minha camisa que foi lavada no dia seguinte, destruindo parte deles (apenas os escritos de canetinha.)

Nos episódios anteriores:
Tivemos o prazer ou desprazer de acompanhar um reality show, um pouco fora dos padrões aceitos pela sociedade, também conhecido como BBS ou Big Brother SUIPA ou defina como quiser, pois estamos falando de uma competição de cães e gatos.

Problema:
Neste caso, nos encontramos momentos antes da exibição dos resultados das votações de quem irá ficar e sair do programa (Lembrando… um reality show composto por cães e gatos).
Como a emissora está mal das pernas, decidiu manipular os resultados de uma maneira que sempre que possível o maior número de votantes fiquem satisfeitos com o resultado.
Com o seguinte detalhe, devemos levar em consideração que quem gosta de cachorro odeia gatos e vice versa.
Por fim, o nosso algoritmo recebe uma tabela com os resultados e a altera retirando ou não os escolhidos, de forma a garantir o maior número de votantes satisfeitos.

O problema na integra pode ser visto nesta url

Resultado:
Para os curiosos ou DojoHomeWorkers segue link do código no Github do DojoRio

Jogadores do dia:

  • Juan Lopes
  • Jonatas Emidio
  • Carlos Figueiredo
  • Israel Teixeira
  • Otávio Cardoso
  • Miguel Cacilhas (Cacilhinhas)
  • VitorHP
  • Marcos Rodrigues
  • Theo Bittencourt
  • Jacqueline Abreu
  • Carlos Cunha

 

Carinha feliz:
cooperação
convidados
convicção
comida+
condenação de marretadas
problema+++++
comida
pessoas novas+++
pessoas antigas+
excelente grupo presente no dojo de hoje
muita comida
banquete eclético
Pão caseiro+
discussão
dojo cheio

Carinha triste:
conversa
conversão do quadro em instrumento pessoal
condição atual não termina problema
cúpula de resolução fechada
não sabemos lidar com o diff (experiência | atraso)
Bulling
demoramos muito para começar o dojo
precisamos alterar mais a linguagem
comida
python
stress
problema
grafos só no final
espaço pequeno
nomes dos testes.

Off-topic
By Miguel Cacilhas: Juan não me adicionou no XBox Live / Eu não adicionei o Juan no face

O dojo rola todas as 4º feiras, começando entre 18:30 – 19:00 e se você gostou, é só chegar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia Sala 615. Qualquer dúvida, é só mandar email para a lista do dojo google groups, que sempre tem alguém para responder, por isso, venha! :D


dojo@Centro 14/08/2013 – Salvando o mundo parte 2

quarta-feira, 28 agosto 2013

Olá, pessoal. Tudo bem?

Neste dojo, refizemos um problema anterior  em uma outra linguagem de programação. O escolhido foi um problema conhecido do Google Code Jam, o All Your Base.

A diferença deste dojo para o dojo passado foi a linguagem, desta vez usamos ruby. A semelhança é que além do problema, o dojo também estava lotado

Rodada Final do DojoRio 14/08/2013

Como é visto na foto borrada acima, uma tentativa frustrada de foto panorâmica e pessoas tentando disfarçadamente não aparecer de forma direta na foto :).

Copiando a explicação do problema do post do dojorio@Centro 10/04/2013:

Em 2100 dC, os estrangeiros vieram para a Terra. Eles escreveram uma mensagem em uma linguagem enigmática, e próximo a ele que escreveu uma série de símbolos. Nós chegamos à conclusão de que os símbolos indicam um número: o número de segundos antes do início da guerra!

Infelizmente nós não temos nenhuma idéia do que cada símbolo significa. Nós decidimos que cada símbolo indica um dígito, mas não temos certeza de que cada dígito significa ou que base os alienígenas estão usando. Por exemplo, se eles escreveram “ab2ac999″, que poderia ter significado “31536000″ na base 10 – exatamente um ano – ou poderia ter significado “12314555″ na base de 6-398951 segundos ou cerca de quatro dias e meio . Temos a certeza de três coisas: o número é positivo, como nós, os alienígenas nunca vai iniciar um número com um zero, e eles não estão usando unário (base 1).

Seu trabalho é determinar o número mínimo possível de segundos antes do início da guerra.”

Um caso a parte foi a explicação de bases numéricas:

Base de numeração é uma forma de respresentar quantidades – quantos símbolos se usam para representar números

Por exemplo, uma base binária representada abaixo:

aaa => n*2⁰ = 1 + n*2¹ = 2 + n*2² = 4 => 4+2+1 =1. Então,  aaa = 7

Particularmente, gostei muito desta releitura, principalmente por um problema do code jam ter se tornado parte do repertório de problemas do DojoRio e por ele sempre envolver os participantes.

O código para  a salvação do mundo pela segunda vez pode ser encontrado no link. É interessante comparar este código com o feito em C++.  Recomendo fortemente o exercício ^_^.

E quem defendeu a terra desta vez foi:

  • Thiago Belem
  • Juan Lopes
  • Carlos Cunha
  • Julio Marins
  • Miguel Cacilhinhas
  • Israel Teixeira
  • Renan Cardoso
  • Alexandre Vaz
  • Flávio Amieiro

E os números certos desta contagem regressiva foram:

  • Problema ++++++++++
  • Ruby ++++
  • Bases numéricas
  • Dojo cheio/ casa cheia++++++
  • Novatos+++++
  • Novatos programando
  • Presença do Gustavo
  • Releitura do problema
  • Ver  pela primeira vez/conhecer  um pouco mais ruby ++
  • Cooperação
  • Ambiente local/ambiente de desenvolvimento ++
  • Ruby inteligível
  • Galera utilizando bastante o quadro para expor ideias
  • Praticar explicar um  conceito para outras pessoas
  • Pessoas que sabem a linguagem (ruby) ajudaram a solucionar algumas dúvidas relacionadas à linguagem
  • “Eu voltei!!!” ++
  • Dojo divertido
  • Problema com matemático +
  • Volta dos sumidos +
  • Solução que construida pelo grupo para o problema
  • Retorno do casal Bel[eé]m

E o que quase nos fez perder a batalha contra os aliens:

  • Muita gente +
  • Pouco tempo
  • Ruby macetado +
  • Nem todos programaram +++
  • Problema não intuitivo
  • Bug no char
  • Split sem compatibilidade reversa
  • Apesar do dojo ter rolado bem, ainda teve falatório +
  • Pouca bebida
  • Infelizmente,  pessoas foram embora antes do dojo terminar (problemas pessoais, mas ainda sim é triste não poderem participar até o final)

Uma sugestão dada foi:  a solução poderia ter avançado mais rápido se o par fosse composto de pessoa experiente com ruby e uma novata.

E o DojoRio@Centro PERMANECE!

Toda a quarta feira, aproximadamente às 18:30 é iniciado o DojoRio do Centro – tem em vários outros lugares, em caso de dúvida é só mandar email para o grupo. O dojoRio@Centro é feito no #CurtoCircuito – Av 13 de Maio, nº 13, 6º andar, sala 615.

Venha estar conosco :D e até a próxima o/


Dojo@Centro 12/06/2013 – O Jogo da Velha Google!!

terça-feira, 25 junho 2013

Salve jogadores!!

Perdoem-me pelo atraso deste post. Minha semana foi bem enrolada.

No dojo de 12/06/2013 tivemos mais uma oportunidade de resolver um problema proposto pela Gigante de Mountain View Google” em sua anual competição de algoritmo, o Google Code Jam.
Contamos com a presença de 5 jogadores e um novato:
Andre Oliveira
Flávio Amieiro
Jonatas Emidio
Otávio Cardoso
Carlos Cunha
Filipe Sales (Novato)
Para quem ainda não sabe, o problema proposto foi o Tic-Tac-Toe , também conhecido como Jogo da Velha, carinhosamente apelidado pela Google de Tic-Tac-Toe-Tomek , por se tratar de uma evolução da lógica tradicional do jogo.
Tivemos também algumas coincidências relacionando o nosso código com o dia em questão.

Só lembrando… Este foi o Dojo do dia dos namorados ou Dia de São Valentim.

Pasmem!! Após os primeiros turnos de programação o resultado do nosso código estava exatamente assim.
2013-06-25

Tradução para os mais lentos: Carinha mandando beijinho, seguida de coração, seguido de carinha impressionada retornando ao final disso tudo um ‘Rolando’ e Bem no dia dos namorados. Será que é a Matrix tentando nos dizer algo?
Pois bem, sem demais delongas, este é o nosso código final postado no GitHub, que por “incressa que parível” foi finalizado antes da retrospectiva!

Flapjack-feliz
xoxo, (‘T’), (‘x’), (‘0′), <3+
Problema++
Novato++
Ar condicionado
Mate
Evolução do problema
xoxo no dia dos namorados
Pão de queijo
Dojo por default
Solução
Comida

flapjack-triste
Pouca gente+
Terminamos o problema
Recepção para o novato foi meio campenga

A Íparos agora está se tornando o espaço #CurtoCircuito. Para saber mais, leia o post da @CissaBelem sobre ele – é uma versão bastante simplificada sobre o espaço, veja outras informações na fan page do espaço e também veja o http://curto-circuito.org/ :D.

E se você gostou de tudo isso, esteja conosco na próxima 4º feira, na  Av Treze de Maio, 13 – 6° andar – Cinelândia, entre 18:30 e 19:00. Só não tem dojo@Centro se a 4º feira for dia de feriado . Qualquer dúvida, é só mandar email para o  grupo (google groups) do dojo, alguém do grupo sempre responde as dúvidas conforme for possível ou um tweet com a hashtag #dojoRio.

Você é muito bem vindo, de verdade :D .

Até a próxima o/.


Dojo@Centro 5/06/2013 – Pintando árvores

domingo, 9 junho 2013

Olá, pessoas queridas. Tudo bem?

No dojo@centro da última quarta feira, o problema que tentamos resolver foi o seguinte:

Dada uma árvore binária, só podemos pintar o nó se o nó pai já estiver pintado. Cada nó possúi um valor correspondente e a ordem da pintura é multiplicada ao valor do nó, correspondendo ao tempo de pintar o nó. Sabendo disso, qual é o menor tempo para pintar todos os nós da árvore?

Com isso, temos um conjunto de nós pintados e um conjunto de nós candidatos a serem pintados e temos que encontrar a ordem dos nós que resulta no menor tempo de pintura. O problema original pode ser visto aqui

No tópico do dojo deste dia, foi postada uma consideração sobre o problema:

É um problema de job scheduling. Parto do princípio que a maior tarefa existente, quando for possível fazer (i.e. o pai já tiver sido colorido), necessariamente vai trazer o maior ganho imediato *e global*. Isso significa, em outras palavras, que a maior tarefa precisa ser executada necessariamente logo depois da tarefa pai dela. Assim, eu posso mesclar os dois nós em uma tarefa só (pois elas sempre precisam ser executadas juntas). Mas, para isso, precisei generalizar o problema.

No problema original, as tarefas tem um tempo para ficarem prontas (inicialmente todas tem tempo 1) e a penalidade é dada pelo tempo do final (não pelo do início). Mudei para o tempo ser calculado a partir do início da tarefa pela função linear at + b. Então, inicialmente, todas as tarefas, que tinham penalidade a*t, passam a ter penalidade a*t + a, onde a é a penalidade da tarefa como descrita pelo problema. Toda vez que mesclo duas tarefas cujas penalidades são a*t + b e c*t + d, onde a primeira precisa ser executada antes da segunda, tenho que a nova penalidade é:
penalidade(A+B) = (a + c)*t + (b + d) + c*duração(A)
duração(A+B) = duração(A) + duração(B)
O “c*duração(A)” é porque enquanto A está executando, a tarefa B está acumulando penalidades proporcionais ao tempo perdido executando A.
Se a maior tarefa não tem nenhum pai na árvore (ou seja, ela pode ser executada imediatamente), executo e incremento o tempo. Senão, vou reduzindo a árvore efetuando esses merges.
Mantenho a lista de tarefas ordenadas usando set (e não uma heap, principalmente porque preciso poder remover uma tarefa no meio da lista), e para simplificar as operações na árvore, mesclo duas tarefas usando union-find (para evitar ter que percorrer as tarefas filhas atualizando seus pais).
A solução que conseguimos está no repositório Github do dojoRio
Este dojo também teve uma versão de brigadeiro feito pela Cissa Belém para comemorar o aniversário do Elias Tandel. Os dojos de aniversário estão com problemas muito bons, creio que em honra ao aniversariante :), mas além disso, o Elias trouxe uma notícia que explodiu várias cabeças: CSS 3 é Turing Complete
E os participantes que se lambuzaram de tinta foram :
  • Thiago Belem
  • Juan Lopes
  • Otávio Cardoso
  • Andre Oliveira
  • Álvaro Justen
  • Elias Tandel
  • Carlos Cunha
  • Jacqueline Abreu
  • Diego Volpato

E as pinturas bonitinhas que a galera curtiu foi:

  • Problema “profundo” – o falso problema simples, aquele que tem enunciado com aparência de fácil, que só revela a complexidade na hora de implementar +++++++
  • Novatos e o retorno de  participantes antigos ++
  • Novatos
  • Menos bullying com as linguagens
  • Nova versão de brigadeiros bel[eé]m +++++++
  • A vinda da Val Parajara, do Diego Volpato, do Júlio Marins e do Leonardo Alberto (Leobeto)
  • Aniversário do Elias Tandel +
  • Comida +++
  • CSS 3 Turing Complete +++
  • Ruby +++
  • Retorno ao dojo
  • Árvore (Estrutura de Dados)
  • Rule 110

E as manchas no chão que teremos que limpar foram:

  • Falatório ++++++
  • Ar condicionado não está funcionando direito ++++
  • Israel e Claudio Berrondo não puderam vir +
  • Fonte de dojotimer não estava ok
  • Entender um pouco mais de ruby
  • Webdings +++
  • CSS 3 não deveria ser turing complete (está fazendo mais do que deve)
  • O dojo começou tarde ++
  • Explicar várias vezes o problema atrasa o andamento do dojo
  • [] != NIL
  • Bel[eé]m fêmea, vulgo Cissa, não participou
  • Receber ligações telefonicas na hora em que está pilotando
  • O problema pareceu não estar muito adequado a ser feito seguindo a lógica do TDD. A implementação da solução foi muito exaustiva
  • Poucas bebidas
  • Apesar de menor, ainda teve momentos de bullying com as linguagens
  • Não consegui participar ++

E este foi o dojo@Centro desta semana e semana que vem tem mais. Se você quer mostrar para a sua namorada ou namorado que programação também pode ser feita em grupo e divertida, pode levar a pessoa ao próximo dojo :).

A Íparos agora está se tornando o espaço #CurtoCircuito. Para saber mais, leia o post da @CissaBelem sobre ele – é uma versão bastante simplificada sobre o espaço, veja outras informações na fan page do espaço e também veja o http://curto-circuito.org/ :D.

E se você gostou de tudo isso, esteja conosco na próxima 4º feira, na  Av Treze de Maio, 13 – 6° andar – Cinelândia, entre 18:30 e 19:00. Só não tem dojo@Centro se a 4º feira for dia de feriado . Qualquer dúvida, é só mandar email para o  grupo (google groups) do dojo, alguém do grupo sempre responde as dúvidas conforme for possível ou um tweet com a hashtag #dojoRio.

Você é muito bem vindo, de verdade :D.

Até a próxima o/.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 30 outros seguidores