Archive for Novembro, 2007

Sudoku

Quase esqueci de dizer que hoje foi um dia de descobertas. Até hoje nunca tinha ouvido falar sobre Sudoku, você já?

Calma! Sudoku não dói e não é de comer. Não é esporte, muito menos prato japonês. Supostamente é algo que eu deveria ter aprendido nas fases iniciais da faculdade - na verdade, faltou avisar os professores de Sistemas de Informação.

Sudoku, conhecido também por “lugar do número”, é um enigma de lógica baseado na colocação. O alvo do enigma é incorporar dígitos numéricos de 1 a 9 em cada matriz 9×9 composta de submatrizes 3×3 (ver imagem abaixo); cada linha, coluna, e submatriz devem conter somente um exemplo de cada número. Terminar o enigma requer paciência e habilidade lógica.

sudoku

Segundo consta, o Sudoku foi inventado em Indianapólis em 1979. Este nome é a abreviatura japonesa de uma frase bem longa: “kagiru do ni do dokushin do wa Suuji” que significa “os dígitos devem permanecer únicos”.

Como os relacionamentos aritméticos entre números são irrelevantes, os números em enigmas de Sudoku são usados por conveniência. A atração do enigma é que as regras são simples, contudo a linha do raciocínio requerida para resolver o enigma pode ser complexa.

Eu achei bem interessante. Encontrei um joguinho na internet deste enigma em: “Sudoku, o quebra-cabeça mais popular do mundo“. Vale a pena dar uma olhada, nem que seja só pra entender a idéia.

Bom, e para quê isto serve? Qual a utilidade? Bom, não faço idéia, só sei que não é o tipo de problema que uma pessoa leva uma meia horinha pra formular um algoritmo de solução.

Ops, faltou apontar uma solução. Eu ainda nem cheguei a tentar fazer de verdade, nem a descobrir a melhor solução, mas gostei um pouco deste algoritmo:

1. Criar um array com as coordenadas dos números

Array[sub-grade][linha coluna];

2. Povoar os elementos com o número 123456789.

3. Entrar em um loop recursivo:

3.1. Verificar se existe pelo menos um número, em toda a matriz, composto de mais de um número (78 por exemplo).
Se a resposta é sim, continuo, caso contrario saio do loop.

3.2. Escolher um número presente no menor número em comprimento presente no array.

Exemplo: na célula Array[5][32] (quinta submatriz, terceira linha, segunda coluna) temos o numero
“2589″ e este número possui 4 caracteres. Todos os outros sao maiores ou possuem o mesmo número de
caracteres. Então escolhemos aleatoriamente um deles: “8″ e o colocamos em substituição do “2589″
presente na célula.

3.3. Substituir o número escolhido (8) em todos os outros elementos presentes na quinta
sub-grade.

Para cada elemento do Array[5] diferente de [32] substituir o numero 8 com “” (nada).

3.4. Substituir o número escolhido (8) em todos os outros elementos presentes na
linha.

3.5. Substituir o número escolhido (8) em todos os outros elementos presentes na
coluna.

3.6. Recomeçar o loop.

Enjoy! ;)

Ser fiscal da UFSC é a maior cilada

Hoje foi um dia cheio. Algumas aventuras, algumas chatices, algumas coisas bacanas… É a vida!

A coisa legal (?) é que me chamaram pra ser fiscal do vestibular da UFSC no CFH. Que máximo, dessa vez o sistema não me mandou pra onde Judas perdeu as meias… Sei que é o centro dos malucos e maconheiros, mas pelo menos é aqui perto. É um bico ingrato, é verdade, afinal ninguém merece ficar indo ao banheiro com alguém, mas é uma graninha boa pra quem está precisando. Seria melhor ainda ser fiscal de grupo pra poder ficar lendo as redações dos candidatos, mas acho que só o pessoal mais velho é selecionado pra essa tarefa. Ser fiscal de corredor é uma das funções mais infelizes, acredito. Você simplesmente não pode fazer nada, não pode ler nada, não pode conversar com outros fiscais, não pode falar com os candidatos, não pode dormir, não pode simplesmente nada. A única coisa permitida é ficar parado esperando que um fiscal de grupo te chame pra você levar alguém no banheiro… Cá entre nós, ser fiscal de corredor da UFSC é a maior cilada! :P

Finalmente passei no teste da Motorola sobre programação segura. Por que a Motorola insiste que programadores Java façam provas sobre vulnerabilidades de algumas funções de C? É realmente intrigante. Além do que, em Java, nem precisamos nos preocupar com Buffer Overflow.. Não sei, talvez eles achem que seja interessante que nós saibamos pelo menos que isso existe e também pra não ficarmos apenas no nosso mundinho de gerência de memória automática. Enfim, eu simplesmente odeio ter que provar coisas para os outros… :(

Hoje realmente me dei conta que minha conversação em inglês tá péssima. Preciso dar um jeito nisso, mas é quase impossível morando no Brasil e não fazendo aulas de inglês. Ler notícias, artigos e livros em inglês realmente não adiantam de nada se a gente não fala, não pratica… Acreditem, não é como andar de bicleta. :P

Preciso encarar os fatos, é quase noite e hoje é o meu dia de limpar a casa. Além disso, preciso encontrar ânimo pra fazer meu TCC ainda hoje (eu tinha dito isso pra mim ontem e não fiz, em vez disso fui ver Sex and the city). Como um trabalho pode deixar a gente psicologicamente tão pirado? Incrível. TCC deixa a gente preocupado mesmo quando a gente não tá efetivamente fazendo. Eu consigo pensar no TCC pelo menos por uma fração de segundo em cada coisa que eu faço. Incrível, isso podia fazer parte da nossa nota… Com certeza no meu caso renderia mais que dez.

Vou fechar com um pensamento super motivador do Einstein - alguém já disse que ele realmente é o cara? Essa frase resume o que eu tentei fazer o dia todo: acertar!

O único homem que está isento de erros, é aquele que não arrisca acertar.

:)

Garfield: Christmas

Vocês também não adoram o Natal? :~)

Essa do Garfield tá muito legal!!

garfield

Enjoy!

:)

Fonte: Garfield Comic Today

Princípio de Hollywood

Frameworks operam sob a inversão do fluxo de controle, conhecido como Princípio de Hollywood. A responsabilidade de saber quais métodos serão chamados deve ser do framework e não da aplicação. Desta forma, as classes da aplicação esperam ser chamadas pelo framework durante o tempo de execução. Um conjunto de métodos pré-definidos (métodos hooks) é chamado pelo framework, e é neste ponto em que o comportamento específico da nova aplicação será inserido, através da herança e do polimorfismo. Os métodos hooks, que implementam os hot spots, formam, em conjunto com métodos templates (que implementam os frozen spots), um ponto de flexibilidade dos frameworks. Métodos hooks podem ser redefinidos pela aplicação e são utilizados pelos métodos templates que implementam de forma genérica um algoritmo.

Esse é um trechinho do capítulo sobre frameworks do meu TCC. Não é nada de mais, mas convém destacar esta característica de inversão de fluxo. Reprojetei no inkscape a única imagem decente que encontrei sobre esse tema na internet. Nem preciso dizer que a imagem vale mais que mil palavras… (clique na imagem para aumentar a resolução)

Princípio de Hollywood

Calvin + Socks = an Elephant!

Opa… oi! Bom diaaa!! =)

Essa tirinha do Calvin tá muito engraçada. Vejam só:

calvin

Fonte: http://www.gocomics.com/calvinandhobbes/ Enjoy!

;)

Próxima Página »