<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Fotomix's Weblog</title>
	<atom:link href="http://fotomix.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fotomix.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 09 Dec 2011 23:27:55 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fotomix.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Fotomix's Weblog</title>
		<link>http://fotomix.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fotomix.wordpress.com/osd.xml" title="Fotomix&#039;s Weblog" />
	<atom:link rel='hub' href='http://fotomix.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Smalltalk &#8211; TDD</title>
		<link>http://fotomix.wordpress.com/2011/11/30/smalltalk-tdd/</link>
		<comments>http://fotomix.wordpress.com/2011/11/30/smalltalk-tdd/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 01:11:04 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[tutoriais]]></category>

		<guid isPermaLink="false">https://fotomix.wordpress.com/?p=717</guid>
		<description><![CDATA[Como pode ser visto nos artigos anteriores, o ambiente do Smalltak (estou usando o Pharo) é excelente para o desenvolvimento e depuração, permitindo alterações em tempo de execução mantendo o estado dos dados. Nem precisa de TDD. Mas não é bem assim. Alterações no sistema podem requerer que todos ou uma determinada série de testes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=717&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como pode ser visto nos artigos anteriores, o ambiente do Smalltak (estou usando o <a href="http://www.pharo-project.org/home" target="_blank">Pharo</a>) é excelente para o desenvolvimento e depuração, permitindo alterações em tempo de execução mantendo o estado dos dados. Nem precisa de TDD.</p>
<p>Mas não é bem assim. Alterações no sistema podem requerer que todos ou uma determinada série de testes sejam refeitas para validar a correção do programa. Quando o programador possui prazos e nao se policia muito bem, os testes impõem um limite tangível. Passou nos testes não é necessário mais nada. Também não é bem assim, mas vamos ignorar por hora.</p>
<p>O &#8220;video-tutorial-mudo&#8221; mostra como utilizar TDD no desenvolvimento e como o sistema facilita a vida do usuário na criação de classes, métodos e execução dos testes. Foram feitos apenas testes para passar, mas poderiam ser criados testes para os casos onde deve ocorrer falha (divisão por zero por exemplo) e, como sempre, outras coisinhas.</p>
<p>Inicialmente criamos uma classe derivada de <span style="color:#ffdca8;"><code>TestCase</code></span> que conterá os métodos correspondentes aos testes a serem efetuados. Existe ainda o método <span style="color:#ffdca8;"><code>setUp</code></span> que, se definido, será executado antes de cada teste e o método <span style="color:#ffdca8;"><code>tearDown</code></span> que será executado ao final. Colocamos os métodos na categoria <span style="color:#ffdca8;"><code>testing</code></span>.</p>
<p>No evento do vídeo abaixo, após a criação do primeiro método para o teste, eu poderia criar a variável &#8216;c&#8217; na instância da classe e inicializá-la no método <span style="color:#ffdca8;"><code>setUp</code></span>. Optei por declará-la como temporária dentro do próprio método. Tudo que o ambiente não reconheceu, tentou criar de uma forma automatizada ou solicitar a confirmação.</p>
<p>Poderemos executar os testes diretamente pelo menu, toda a classe ou os métodos individualmente. Como de praxe, quando um teste falha, o círculo na esquerda fica vermelho. Se passa é mostrado na cor vermelha. Podemos utilizar a janela <span style="color:#ffdca8;"><code>TestRunner</code></span> para auxiliar na execução dos testes. Depois fizemos uma pequena refatoração no programa e executamos os testes novamente para confirmar se estava tudo perfeito.</p>
<p>O vídeo baseia-se na imagem salva do artigo <a href="http://fotomix.wordpress.com/2011/11/29/smalltalk-imagem-e-versionamento/" target="_blank">anterior</a>.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='549' height='339' src='http://www.youtube.com/embed/XxqZVAOomfM?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/717/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/717/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/717/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=717&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/11/30/smalltalk-tdd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Smalltalk &#8211; Imagem e versionamento.</title>
		<link>http://fotomix.wordpress.com/2011/11/29/smalltalk-imagem-e-versionamento/</link>
		<comments>http://fotomix.wordpress.com/2011/11/29/smalltalk-imagem-e-versionamento/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 01:03:46 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[tutoriais]]></category>

		<guid isPermaLink="false">https://fotomix.wordpress.com/?p=712</guid>
		<description><![CDATA[Para continuar lendo esta entrada, é necessário que você tenha lido a anterior. Pausa para ler a anterior&#8230;&#8230; Ok, então criamos uma classe, seus métodos, agrupamos para uma melhor organização, efetuamos os testes e, ao sair do ambiente, decidimos por salvar a imagem. Quando abrimos o ambiente novamente, ele encontra-se no mesmo estado que estava [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=712&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para continuar lendo esta entrada, é <strong>necessário</strong> que você tenha lido a <a href="http://fotomix.wordpress.com/2011/11/28/smalltalk-criacao-de-classes-metodos-e-outras-coisinhas/" target="_blank">anterior</a>. Pausa para ler a anterior&#8230;&#8230;</p>
<p>Ok, então criamos uma classe, seus métodos, agrupamos para uma melhor organização, efetuamos os testes e, ao sair do ambiente, decidimos por salvar a imagem. Quando abrimos o ambiente novamente, ele encontra-se no mesmo estado que estava quando saímos. Podemos inclusive continuar com os testes no Workspace que tudo funcionará normalmente. Aliado ao fato de podermos efetuar alterações no código e continuar trabalhando como se nada tivesse acontecido, certamente são fatores que facilitam a vida do desenvolvedor.</p>
<p>Digamos que eu queira alterar o método <span style="color:#ffdca8;"><code>resetTo:</code></span> para que, se for recebido um valor negativo, inicialize o contador com zero. Não tem nenhum problema. Basta alterar o método e continuar com os testes (TDD fica para outra hora). Mas e se&#8230;. A sei. Você faz uma cópia do método ou comenta as linhas caso necessite retornar ao código original? Aqui não é necessário. O próprio ambiente se encarrega de fazer o versionamento do programa. A qualquer momento você poderá retornar algo anterior. Mais uma característica do ambiente para facilitar a vida do desenvolvedor.</p>
<p>Se fosse somente pela linguagem, Smalltalk seria apenas mais uma em um ambiente onde se cria uma nova linguagem a cada dia com algumas frescurinhas para diferenciar de outra. Mas como Smalltalk pressupõe a linguagem e o ambiente (já era assim na década de setenta) e o ambiente oferece facilidades não encontradas ou dificilmente encontradas em outros ambientes, aliados a uma linguagem simples e flexível, o seu estudo vale a pena. Se você possui um caixa razoável até poderia pensar em investir em um ambiente comercial (veja alguns <a href="http://www.cincomsmalltalk.com/main/successes/" target="_blank">casos de sucesso</a> com o VisualWorks; e o JPMorgam não é o que se pode chamar de empresa pequena).</p>
<p>Ok, mais um vídeo mudo.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='549' height='339' src='http://www.youtube.com/embed/aghcycPpXcg?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/712/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/712/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/712/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=712&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/11/29/smalltalk-imagem-e-versionamento/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Smalltalk &#8211; Criação de classes, métodos e outras coisinhas.</title>
		<link>http://fotomix.wordpress.com/2011/11/28/smalltalk-criacao-de-classes-metodos-e-outras-coisinhas/</link>
		<comments>http://fotomix.wordpress.com/2011/11/28/smalltalk-criacao-de-classes-metodos-e-outras-coisinhas/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 10:02:45 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[tutoriais]]></category>

		<guid isPermaLink="false">https://fotomix.wordpress.com/?p=706</guid>
		<description><![CDATA[Agora vamos ver como criar classe e métodos no Pharo. Como de praxe, ao final teremos um vídeo mudo. A primeira coisa a fazer é abrir o navegador do sistema para termos acesso a todas as classes e métodos existentes na nossa imagem de trabalho. Da esquerda para a direita temos as categorias das classes, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=706&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Agora vamos ver como criar classe e métodos no <a href="http://www.pharo-project.org/home" target="_blank">Pharo</a>. Como de praxe, ao final teremos um vídeo mudo. A primeira coisa a fazer é abrir o navegador do sistema para termos acesso a todas as classes e métodos existentes na nossa imagem de trabalho. Da esquerda para a direita temos as categorias das classes, classes, categorias dos métodos e métodos. Na parte inferior temos o código de um determinado método.</p>
<p>Depois falaremos mais sobre imagem. Para não bagunçar o sistema, criarei uma categoria chamada <span style="color:#ffdca8;"><code>Sandbox</code></span> onde vou criar classes para demonstração.</p>
<p>Depois crio uma classe <span style="color:#ffdca8;"><code>Contador</code></span>. Posteriormente, adiciono diversos métodos ao contador como incremento e decremento. Os métodos serão categorizados para que tudo fique mais ordenado e de fácil localização.</p>
<p>Ao criar o método para a inicialização da classe, foi informada uma variável que conterá o valor atual do contador propositadamente não definida anteriormente para mostrar como o ambiente se comporta nessas situações no momento em que ele compila o método (Accept).</p>
<p>No meio tempo, exploramos algumas possibilidades do ambiente como edit &amp; continue com adição de novos métodos, inspeção do conteúdo de uma classe com o resultado da execução dos métodos.</p>
<p>Ao término iremos fechar a janela e salvar a imagem para uso futuro o que significa, basicamente, salvar o estado atual do ambiente. No próximo artigo veremos melhor o que significa isso.</p>
<p>Abaixo o vídeo-tutorial-mudo. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='549' height='339' src='http://www.youtube.com/embed/ad6M0DtUAD4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>=-=-=-=-=<br />
<em>Powered by </em><a href="http://blogilo.gnufolks.org/"><strong><em>Blogilo</em></strong></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/706/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/706/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=706&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/11/28/smalltalk-criacao-de-classes-metodos-e-outras-coisinhas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Smalltalk &#8211; Refactoring, Edit &amp; Continue e outras coisinhas</title>
		<link>http://fotomix.wordpress.com/2011/11/25/smalltalk-refactoring-edit-continue-e-outras-coisinhas/</link>
		<comments>http://fotomix.wordpress.com/2011/11/25/smalltalk-refactoring-edit-continue-e-outras-coisinhas/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 01:38:35 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[tutoriais]]></category>

		<guid isPermaLink="false">https://fotomix.wordpress.com/?p=702</guid>
		<description><![CDATA[Se no artigo anterior eu falei da busca por exemplo que eu acho legal no Smalltalk, nesse vou falar de outras coisinhas não só legais como importantes no desenvolvimento. Um dos aspectos interessantes/importantes é a possibilidade de editar o código em tempo de execução sem que seja necessário executar novamente a parte anterior. Ao final [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=702&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Se no artigo <a href="http://fotomix.wordpress.com/2011/11/23/smalltalk-busca-por-exemplo/" target="_blank">anterior</a> eu falei da busca por exemplo que eu acho legal no Smalltalk, nesse vou falar de outras coisinhas não só legais como importantes no desenvolvimento. Um dos aspectos interessantes/importantes é a possibilidade de editar o código em tempo de execução sem que seja necessário executar novamente a parte anterior. Ao final eu coloco um vídeo. Como não tenho microfone, o vídeo não tem som. A sequencia é, basicamente a seguinte:</p>
<ul>
<li>Chamo o método addOne para um número cuja finalidade seria de adicionar 1 ao número. Um simples incremento.</li>
<li>Como o método não existe, o ambiente me informa e pede para que seja confirmado, cancelado ou corrigido. Ele abre uma janela com diversas opções que ele acha que poderia ser as correções.</li>
<li>Se eu escolho informar que eu estava correto e o método não existe, o ambiente gera uma exceção para o erro com possibilidade para que eu continue, abandone, inicie a depuração ou crie o método.</li>
<li>Decido por criar o método na classe <span style="color:#ffdca8;"><code>Integer</code></span> (já que eu havia aplicado para um inteiro), escolho a categoria <span style="color:#ffdca8;"><code>arithmetic</code></span> (serve para que os métodos fiquem agrupados de forma lógica) e os dados de quem está efetuando a alteração para que alguém seja considerado culpado em caso de problema. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>É aberta uma janela para que eu edite o que o novo método irá fazer, informo que é apenas para somar 1 e retornar o resultado (usa-se <span style="color:#ff0000;"><strong>^</strong></span> para indicar retorno de um valor), informo <span style="color:#ffdca8;"><code>Accept</code></span> para que o método seja compilado e seleciono <span style="color:#ffdca8;"><code>Proceed</code></span> para continuar o programa que estava sendo executado.</li>
</ul>
<p>Ok, acabamos de ter o primeiro contado com o edit &amp; continue, isto é, efetuamos uma alteração no programa e continuamos a execução sem a perda do que foi processado anteriormente. Na maioria das linguagens, se o seu programa está rodando a duas semanas, já processou um zilhão de dados e encontra um problema em uma circunstancia que não havia sido prevista inicialmente, a solução seria efetuar as correções e esperar mais duas semanas para chegar ao pondo em que havia parado. Em teoria, um programa em Smalltalk necessitaria ser interrompido apenas para a correção do bug e seguiria em frente. Outra opção radical, o que não significa racional, seria a possibilidade de colocar o sistema em produção logo após ter iniciado. Mas vamos juntar o Edit &amp; Continue com o Refactoring.</p>
<ul>
<li>Agora eu resolvo invocar o método <span style="color:#ffdca8;"><code>addOne</code></span> para um valor em ponto flutuante. Novamente o ambiente irá mostrar um erro dizendo que não existe método addOne para a classe <span style="color:#ffdca8;"><code>Float</code></span>. Lógico, eu adicionei o método para a classe <span style="color:#ffdca8;"><code>Integer</code></span>. Poderia criar um novo método para a classe Float o que não seria muito inteligente. O ideal seria mover o método para a classe pai e ele seria herdado pelas filhas.</li>
<li>Para fazer isso, posso abrir o navegador no ambiente, procurar o método addOne e movê-lo para a classe pai. Como pode ser visto nos menus do vídeo, as opção para refactoring são abundantes. Então escolho Refactor method e Pull up e pronto. O método passou da classe Integer para a classe Number. Digo para aceitar e pronto.</li>
</ul>
<p>E assim termina o vídeo-tutorial-mudo de hoje. Lembrando que eu estou usando o <a href="http://www.pharo-project.org/home" target="_blank">Pharo</a> versão 1.3. YMMV.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='549' height='339' src='http://www.youtube.com/embed/WlW-673PFVs?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/702/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=702&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/11/25/smalltalk-refactoring-edit-continue-e-outras-coisinhas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Smalltalk &#8211; Busca por exemplo.</title>
		<link>http://fotomix.wordpress.com/2011/11/23/smalltalk-busca-por-exemplo/</link>
		<comments>http://fotomix.wordpress.com/2011/11/23/smalltalk-busca-por-exemplo/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 19:09:35 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Pharo]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">https://fotomix.wordpress.com/?p=684</guid>
		<description><![CDATA[Provavelmente a funcionalidade que eu acho mais legal no Smalltalk é a busca de algum método sem saber o seu nome. Em outras linguagens (não conhecendo muito bem ela, é claro), eu sei que 2 elevado na 3 é igual a 8. Mas como traduzir isso para o programa? Algumas linguagens utilizam pow, outras **, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=684&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Provavelmente a funcionalidade que eu acho mais legal no Smalltalk é a busca de algum método sem saber o seu nome. Em outras linguagens (não conhecendo muito bem ela, é claro), eu sei que 2 elevado na 3 é igual a 8. Mas como traduzir isso para o programa? Algumas linguagens utilizam <span style="color:#ffdca8;"><code>pow</code></span>, outras <span style="color:#ffdca8;"><code>**</code></span>, outras <span style="color:#ffdca8;"><code>expt</code></span> e assim vai. E lá vamos nós procurar no manual. Mas antes apresentar o <strong>Finder</strong>, uma breve introdução.</p>
<p>Para começar, o ambiente de desenvolvimento em Smalltalk já é algo muito bom. Totalmente integrado e já vem com a linguagem. Ou será que é a linguagem que vem com o ambiente? Há bastante tempo eu testei o <a title="Squeak" href="http://squeak.org/" target="_blank">Squeak</a> mas achei meio estranho. Como o objetivo era para o aprendizado infantil na área de programação, era muito lúdico para o meu gosto. Mesmo assim, vários projetos interessantes surgiram sob a plataforma. O <a title="Seaside" href="http://www.seaside.st/" target="_blank">Seaside</a> foi um deles e talvez o mais importante. Outro foi o <a title="Croquet" href="http://en.wikipedia.org/wiki/Croquet_Project">Croquet</a> . Um tempo depois surgiu o <a title="Pharo" href="http://www.pharo-project.org/home" target="_blank">Pharo</a>. Apesar de baseado no Squeak, ainda estava no início do desenvolvimento e não dei muita atenção. Mas já está bem usável e justifica que se fale mais sobre ele. É o que será utilizado por mim em todos os exemplo. Se alguém deseja um comercial, a opção pode ser o <a title="VisualWorks" href="http://www.cincomsmalltalk.com/main/products/visualworks/" target="_blank">VisualWorks</a>. Para um aprendizado maior sobre a linguagem, existem diversos <a href="http://stephane.ducasse.free.fr/FreeBooks.html" target="_blank">livros gratuitos</a> que podem ser baixados (só lembre-se que podem existir algumas diferenças no ambiente de desenvolvimento e na implementação da linguagem). Pode ser interessante salientar que o Pharo roda no Linux, OS X e no Windows.</p>
<p>Mas vamos voltar ao que interessa. Diversas vezes, e não foram apenas meia dúzia, eu sabia o que queria mas não lembrava de como chegar lá. Como fazer para calcular 2 ao cubo naquela linguagem? Seria <span style="color:#ffdca8;"><code>2 ^ 3</code></span>? ou <span style="color:#ffdca8;"><code>2 ** 3</code></span> ou era uma função do tipo <span style="color:#ffdca8;"><code>pow(2,3)</code></span>? No Pharo basta abrir a janela para localizar, selecionar exemplo, digitar os valores <span style="color:#ffdca8;"><code>2. 3. 8</code></span> e pronto. Ele retorna, entre outras opções, o <strong>raisedTo:</strong> que seria o método que eu invocaria em um número com o argumento 3 para retornar 8. Da mesma forma poderíamos procurar pelo método que retornaria o fatorial de 5 entrando com <span style="color:#ffdca8;"><code>5. 120</code></span> e obtemos <strong>factorial</strong>. A única observação é colocar um ponto para separar os valores. Um videozinho para facilitar a visualização.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='549' height='339' src='http://www.youtube.com/embed/-Rf1YF0nwVQ?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/684/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/684/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/684/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=684&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/11/23/smalltalk-busca-por-exemplo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Projeto Euler &#8211; #48</title>
		<link>http://fotomix.wordpress.com/2011/09/11/projeto-euler-48/</link>
		<comments>http://fotomix.wordpress.com/2011/09/11/projeto-euler-48/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 03:29:41 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Euler+J]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[tutoriais]]></category>

		<guid isPermaLink="false">http://fotomix.wordpress.com/?p=679</guid>
		<description><![CDATA[O problema #48 do projeto Euler é bem simples. A série 11 + 22 + 33 + &#8230; + 1010 = 10405071317. Qual os últimos 10 dígitos da série 11 + 22 + 33 + &#8230; + 10001000 Bem, dá para fazer até no papel. Mas como o meu objetivo é aprender J, então vou [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=679&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>O problema <a title="#48" href="http://projecteuler.net/index.php?section=problems&amp;id=48" target="_blank">#48</a> do projeto Euler é bem simples. A série 1<span style="vertical-align:super;">1</span> + 2<span style="vertical-align:super;">2</span> + 3<span style="vertical-align:super;">3</span> + &#8230; + 10<span style="vertical-align:super;">10</span> = 10405071317. Qual os últimos 10 dígitos da série 1<span style="vertical-align:super;">1</span> + 2<span style="vertical-align:super;">2</span> + 3<span style="vertical-align:super;">3</span> + &#8230; + 1000<span style="vertical-align:super;">1000</span></p>
<p>Bem, dá para fazer até no papel. Mas como o meu objetivo é aprender J, então vou resolver em J. Mas vou resolver passo a passo conforme o enunciado. Primeiro a geração da sequencia:</p>
<p><span style="color:#ff8000;"><code> &gt;:i.10x<br />
1 2 3 4 5 6 7 8 9 10</code></span></p>
<p>Como a sequencia inicia com zero, devemos incrementar os elementos <span style="color:#ff8000;">&gt;:</span> e o <span style="color:#ff8000;">x</span> foi utilizado para trabalhar com precisão estendida.</p>
<p><span style="color:#ff8000;"><code> ^~&gt;:i.10x<br />
1 4 27 256 3125 46656 823543 16777216 387420489 10000000000</code></span></p>
<p>O <span style="color:#ff8000;">^</span> irá elevar um número a um determinado expoente e, como o <span style="color:#ff8000;">~</span> duplica a lista antes do verbo, significa elevar um número a ele mesmo.</p>
<p>Para somar os elementos de uma lista, inserimos <span style="color:#ff8000;">/</span> o verbo <span style="color:#ff8000;">+</span> entre cada elemento dela. Como resultado temos:</p>
<p><span style="color:#ff8000;"><code> +/^~&gt;:i.10x<br />
10405071317</code></span></p>
<p>Ok, está conforme o enunciado. Para obtermos os últimos dez dígitos do resultado, primeiro deveremos converter o número para um string utilizando &#8220;: e, logo em seguida, obter os últimos dez dígitos <span style="color:#ff8000;">_10{.</span> (como foi visto na resolução do problema <a title="#13" href="http://fotomix.wordpress.com/2011/09/10/projeto-euler-problema-13/" target="_blank">#13</a>, <span style="color:#ff8000;">10{.</span> retorna os 10 primeiros elementos)</p>
<p><span style="color:#ff8000;"><code> _10{.":+/^~&gt;:i.10x<br />
0405071317</code></span></p>
<p>A solução não é otimizada e resultou em um tempo mais longo do que eu espera para a sequencia 1&#8230;1000. Apesar do problema permitir que eu exclua 100 número dos cálculos (como desejamos os últimos dez dígitos e todo o múltiplo de dez ira gerar um valor como dez ou mais zeros que não seriam significativos na soma), essa exclusão não melhorou muito a performance do cálculo. Após resolver o exercício e entrar no fórum do problema, uma outra forma de resolução do problema em J possui uma performance bem melhor. Enquanto a minha leva 3s, o método lá leva 0.09s. Mas é para quem já está no nível 1 de aprendizado de J.</p>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/679/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/679/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=679&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/09/11/projeto-euler-48/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Projeto Euler &#8211; Problema #13</title>
		<link>http://fotomix.wordpress.com/2011/09/10/projeto-euler-problema-13/</link>
		<comments>http://fotomix.wordpress.com/2011/09/10/projeto-euler-problema-13/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 15:53:21 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[fotografia]]></category>

		<guid isPermaLink="false">http://fotomix.wordpress.com/?p=667</guid>
		<description><![CDATA[Bem, o problema #13 do projeto Euler é bem simples. Apenas pede os 19 primeiros dígitos da soma de 100 números com 50 dígitos cada um. É só somar todos e pegar os 10 primeiro. Mas como resolver em J? A=: &#8220;.;._2(0 : 0) 37107287533902102798797998220837590246510135740250 &#8230; 53503534226472524250874054075591789781264330331690 ) Ok, criamos uma lista com os 100 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=667&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bem, o problema <a href="http://projecteuler.net/index.php?section=problems&amp;id=13">#13</a> do projeto Euler é bem simples. Apenas pede os 19 primeiros dígitos da soma de 100 números com 50 dígitos cada um. É só somar todos e pegar os 10 primeiro. Mas como resolver em J?</p>
<div><span class="Apple-style-span" style="color:#ffa858;">A=: &#8220;.;._2(0 : 0)</span></div>
<div><span class="Apple-style-span" style="color:#ffa858;">37107287533902102798797998220837590246510135740250<br />
&#8230;<br />
</span></p>
<div><span class="Apple-style-span" style="color:#ffa858;">53503534226472524250874054075591789781264330331690</span></div>
<div><span class="Apple-style-span" style="color:#ffa858;">)</span></div>
</div>
<div>Ok, criamos uma lista com os 100 números de 50 digitos. Para o resultado é só:</div>
<p>&nbsp;</p>
<div><span class="Apple-style-span" style="color:#ffa858;">10{.&#8221;:x:+/A</span></div>
<div>Mais um sem graça.</div>
<div><span style="color:#ff9900;"><strong>+/</strong></span> soma todos os elementos da lista, <span style="color:#ff9900;"><strong>x:</strong></span> torna precisão extendida, <span style="color:#ff9900;"><strong>&#8220;:</strong></span> converte para string, <span style="color:#ff9900;"><strong>10{.</strong></span> retorna os 10 primeiros elementos.</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/667/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=667&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/09/10/projeto-euler-problema-13/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Projeto Euler &#8211; Problema #11</title>
		<link>http://fotomix.wordpress.com/2011/09/07/projeto-euler-problema-11/</link>
		<comments>http://fotomix.wordpress.com/2011/09/07/projeto-euler-problema-11/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 03:10:50 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Euler+J]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[j]]></category>
		<category><![CDATA[Projeto Euler]]></category>

		<guid isPermaLink="false">http://fotomix.wordpress.com/?p=657</guid>
		<description><![CDATA[O problema #11 do projeto Euler deseja saber o maior produto de quatro números adjacentes calculados em qualquer direção (direita, esquerda, diagonais, cima, baixo). Como de costume, vamos resolver em J . Vamos começar com uma matriz pequena para facilitar a visualização.    A=. ?. 6 6 $ 10 Ok, criamos uma matriz 6&#215;6 com elementos aleatórios [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=657&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>O problema <a href="http://projecteuler.net/index.php?section=problems&amp;id=11">#11</a> do projeto Euler deseja saber o maior produto de quatro números adjacentes calculados em qualquer direção (direita, esquerda, diagonais, cima, baixo).</div>
<p></br></p>
<div>Como de costume, vamos resolver em <a href="http://jsoftware.com/">J</a> . Vamos começar com uma matriz pequena para facilitar a visualização.</div>
<p></br></p>
<pre><span style="color:#993300;">   A=. ?. 6 6 $ 10</span></pre>
<div>
</br>Ok, criamos uma matriz 6&#215;6 com elementos aleatórios entre 0 a 9 (como foi utilizado o ?. o resultado será sempre o mesmo).</div>
<p></br></p>
<pre><span style="color:#993300;">   A</span>
<span style="color:#993300;">6 5 9 2 4 9</span>
<span style="color:#993300;">0 7 0 4 6 8</span>
<span style="color:#993300;">3 8 1 2 8 0</span>
<span style="color:#993300;">0 2 1 6 0 4</span>
<span style="color:#993300;">4 1 3 3 6 6</span>
<span style="color:#993300;">5 7 8 8 2 1</span></pre>
<p></br>
<div>Para o agrupamento de quatro elementos de uma coluna podemos utilizar 4\ e termos:</div>
<p></br></p>
<pre> <span style="color:#993300;">  4&lt;\A</span>
<span style="color:#993300;">┌───────────┬───────────┬───────────┐</span>
<span style="color:#993300;">│6 5 9 2 4 9│0 7 0 4 6 8│3 8 1 2 8 0│</span>
<span style="color:#993300;">│0 7 0 4 6 8│3 8 1 2 8 0│0 2 1 6 0 4│</span>
<span style="color:#993300;">│3 8 1 2 8 0│0 2 1 6 0 4│4 1 3 3 6 6│</span>
<span style="color:#993300;">│0 2 1 6 0 4│4 1 3 3 6 6│5 7 8 8 2 1│</span>
<span style="color:#993300;">└───────────┴───────────┴───────────┘</span></pre>
<p></br>
<div>Como é possível ver, a primeira coluna da matriz A contendo 6 0 3 0 4 5 foi seccionada em três com quatro elementos cada: 6 0 3 0, 0 3 0 4 e 3 0 4 5. Todas as outras também. Como tanto faz de baixo para cima ou o contrário que o resultado será o mesmo.</div>
<p></br></p>
<pre><span style="color:#993300;">   4*/\A</span>
<span style="color:#993300;">0 560  0  96 0 0</span>
<span style="color:#993300;">0 112  0 144 0 0</span>
<span style="color:#993300;">0 112 24 288 0 0</span></pre>
<p></br>
<div>Para saber o maior produto obtido:</div>
<p></br></p>
<pre><span style="color:#993300;">   &gt;./, 4*/\A 560</span></pre>
<p></br>
<div>A primeira etapa foi muito simples. Bastaram 9 caracteres para resolver o nosso problema. Mas é apenas a primeira etapa. Obtemos a maior soma de quatro número consecutivos de todas as colunas da nossa matriz. Como próxima etapa, podemos calcular a maior soma das linhas da nossa matriz. Para obter o resultado é um pouquinho mais complexo.</div>
<p></br></p>
<pre><span style="color:#993300;">   &gt;./,4*/\"1 A</span>
<span style="color:#993300;">2240</span></pre>
<p></br>
<div>Da mesma forma que para as colunas, não é necessário efetuar o mesmo cálculo da esquerda para a direita. Agora entraremos na parte mais complexa. Trabalhar com as diagonais.</div>
<p></br></p>
<pre><span style="color:#993300;">   A</span>
<span style="color:#993300;">6 5 9 2 4 9</span>
<span style="color:#993300;">0 7 0 4 6 8</span>
<span style="color:#993300;">3 8 1 2 8 0</span>
<span style="color:#993300;">0 2 1 6 0 4</span>
<span style="color:#993300;">4 1 3 3 6 6</span>
<span style="color:#993300;">5 7 8 8 2 1</span></pre>
<p></br>
<div>Para obter as diagonais da matriz é só utilizar /.</div>
<p></br></p>
<pre><span style="color:#993300;">   &lt;/.A</span>
<span style="color:#993300;">┌─┬───┬─────┬───────┬─────────┬───────────┬─────────┬───────┬─────┬───┬─┐</span>
<span style="color:#993300;">│6│5 0│9 7 3│2 0 8 0│4 4 1 2 4│9 6 2 1 1 5│8 8 6 3 7│0 0 3 8│4 6 8│6 2│1│</span>
<span style="color:#993300;">└─┴───┴─────┴───────┴─────────┴───────────┴─────────┴───────┴─────┴───┴─┘</span></pre>
<p></br>
<div>É fácil associar as diagonais com a matriz original.</div>
<p></br></p>
<pre> <span style="color:#993300;">  &gt;./,4*/\"1]/.A</span>
<span style="color:#993300;">1152</span></pre>
<p></br>
<div>Na diagonal irá fazer diferença da direita para a esquerda e da esquerda para a direita. Então teremos que pegar a outra, que pode ser obtida por:</div>
<p></br></p>
<pre>  <span style="color:#993300;"> &lt;/.|.A</span>
<span style="color:#993300;">┌─┬───┬─────┬───────┬─────────┬───────────┬─────────┬───────┬─────┬───┬─┐</span>
<span style="color:#993300;">│5│7 4│8 1 0│8 3 2 3│2 3 1 8 0│1 6 6 1 7 6│6 0 2 0 5│4 8 4 9│0 6 2│8 4│9│</span>
<span style="color:#993300;">└─┴───┴─────┴───────┴─────────┴───────────┴─────────┴───────┴─────┴───┴─┘</span>
<span style="color:#993300;">   &gt;./,4*/\"1]/.|.A</span>
<span style="color:#993300;">1152</span></pre>
<p></br>
<div>Juntando tudo temos o que poderíamos chamar de &#8216;one liners&#8217;. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </div>
<p></br></p>
<pre><span style="color:#993300;">   (&gt;./,4*/\"1]/.|.A) &gt;. (&gt;./,4*/\"1]/.A) &gt;. (&gt;./,4*/\"1 A) &gt;. &gt;./, 4*/\A</span>
<span style="color:#993300;">2240</span></pre>
<p></br>
<div>Que nos dará o resultado do problema em uma etapa. É só substituir nossa matriz pela do exercício e o problema estará resolvido.</div>
<p></br></p>
<pre><span style="color:#008000;">A=: ".;._2(0 : 0)</span>
<span style="color:#008000;">08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08</span>
<span style="color:#008000;">49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00</span>
<span style="color:#008000;">...</span>
<span style="color:#008000;">20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54</span>
<span style="color:#008000;">01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48</span>
<span style="color:#008000;">)</span></pre>
<p></br>
<div>E aplicar o nosso programa de uma linha. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/657/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=657&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/09/07/projeto-euler-problema-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Projeto Euler &#8211; Problema #24</title>
		<link>http://fotomix.wordpress.com/2011/06/10/projeto-euler-problema-24/</link>
		<comments>http://fotomix.wordpress.com/2011/06/10/projeto-euler-problema-24/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 12:00:50 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Euler+J]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[j]]></category>
		<category><![CDATA[Projeto Euler]]></category>

		<guid isPermaLink="false">http://fotomix.wordpress.com/?p=638</guid>
		<description><![CDATA[A resolução de problema #24 do Projeto Euler não tem muita graça em J. Conforme o enunciado, temos que as permutações possíveis de 0, 1 e 2 são: 012, 021, 102, 120, 201 e 210. Inicialmente temos que 0, 1 e 2 pode ser traduzido para J como i.3. O número de permutações para três [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=638&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A resolução de problema <a title="http://projecteuler.net/index.php?section=problems&amp;id=24" href="http://projecteuler.net/index.php?section=problems&amp;id=24" target="_blank">#24</a> do <a title="http://projecteuler.net/" href="http://projecteuler.net/" target="_blank">Projeto Euler</a> não tem muita graça em <a title="http://jsoftware.com/" href="http://jsoftware.com/" target="_blank">J</a>. Conforme o enunciado, temos que as permutações possíveis de 0, 1 e 2 são: 012, 021, 102, 120, 201 e 210.</p>
<p>Inicialmente temos que 0, 1 e 2 pode ser traduzido para J como <strong>i.3</strong>. O número de permutações para três elementos seria dada pelo fatorial de 3 ou <strong>!3</strong> em J que é 6. Para resolver as permutações e selecionar uma das sequências utilizamos <span style="color:#ff0000;"><strong>A.</strong></span> (<a title="http://jsoftware.com/help/dictionary/dacapdot.htm" href="http://jsoftware.com/help/dictionary/dacapdot.htm" target="_blank">Anagram Index</a>). Como no exemplo são três elementos e seis possíveis combinações, para obtermos todas as combinações podemos utilizar:</p>
<p><code> 0 1 2 3 4 5 A. 0 1 2</code></p>
<p><code>0 1 2<br />
0 2 1<br />
1 0 2<br />
1 2 0<br />
2 0 1<br />
2 1 0</code></p>
<p>Apesar do número de permutações aumentar rapidamente e não ser interessante visualizar todas, uma forma mais genéria poderia ser:</p>
<p><code> (i.!3) A. i.3</code></p>
<p><code>0 1 2<br />
0 2 1<br />
1 0 2<br />
1 2 0<br />
2 0 1<br />
2 1 0</code></p>
<p>Então, para sabermos a quinta permutação, usamos diretamente <strong>4 A. i.3</strong> que retorna <strong>2 0 1</strong>. Para saber a décima sexta permutação onde os elementos são os números inteiros de 0 a 9, podemos escrever:</p>
<p><code> 15 A. i.10</code></p>
<p><code>0 1 2 3 4 5 8 7 9 6</code></p>
<p>Até aqui tudo bem, só que o problema deseja um número sem espaços. A solução mais complicada seria copiar a lista gerada e apagar manualmente os espaços. Outra forma é utilizar a <span style="color:#ff0000;"><strong>#.</strong></span> (<a title="http://jsoftware.com/help/dictionary/d401.htm" href="http://jsoftware.com/help/dictionary/d401.htm" target="_blank">base</a>) utilizando 10 como base. Como exemplo: <strong>10#.2 3 4 =&gt; 234</strong>. A resposta para o problema ficaria como <strong>10#.999999 A.i.10</strong>.</p>
<p>Como uma string é uma lista de caracteres (como pode ser visto no final do artigo sobre programas em <a title="http://fotomix.wordpress.com/2011/06/04/10-j-one-liners-to-impress-your-friends/" href="http://fotomix.wordpress.com/2011/06/04/10-j-one-liners-to-impress-your-friends/" target="_blank">uma linha</a>), o problema também poderia ser resolvido usando uma string. No exemplo do problema ficaria:</p>
<p><code> (i.6) A. '012'</code></p>
<p><code>012<br />
021<br />
102<br />
120<br />
201<br />
210</code></p>
<p>Facinho né?</p>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/638/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=638&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/06/10/projeto-euler-problema-24/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
		<item>
		<title>Projeto Euler &#8211; Problema #29</title>
		<link>http://fotomix.wordpress.com/2011/06/09/projeto-euler-problema-29/</link>
		<comments>http://fotomix.wordpress.com/2011/06/09/projeto-euler-problema-29/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 21:51:59 +0000</pubDate>
		<dc:creator>Guaracy Monteiro</dc:creator>
				<category><![CDATA[Euler+J]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[j]]></category>
		<category><![CDATA[Projeto Euler]]></category>

		<guid isPermaLink="false">http://fotomix.wordpress.com/2011/06/09/projeto-euler-problema-29/</guid>
		<description><![CDATA[Hoje o Thiago Silva colocou no twitter via Thiago Arrais (pô, quanto Thiago): &#8220;One word? Inspiring! &#8216;How I Failed, Failed, and Finally Succeeded at Learning How to Code&#8216;: &#8220; Legal para ler. Fala do Colin Hughese e da criação do Projeto Euler. Lembrei dos velhos tempos do Ruby e do Code Kata do Dave Thomas. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=634&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoje o <a title="https://twitter.com/#!/thiago_silva" href="https://twitter.com/#!/thiago_silva" target="_blank">Thiago Silva</a> colocou no twitter via <a title="https://twitter.com/#!/thiagoarrais" href="https://twitter.com/#!/thiagoarrais" target="_blank">Thiago Arrais </a>(pô, quanto Thiago): &#8220;<em>One word? Inspiring! &#8216;</em><a title="http://www.theatlantic.com/technology/print/2011/06/how-i-failed-failed-and-finally-succeeded-at-learning-how-to-code/239855/" href="http://www.theatlantic.com/technology/print/2011/06/how-i-failed-failed-and-finally-succeeded-at-learning-how-to-code/239855/" target="_blank"><em>How I Failed, Failed, and Finally Succeeded at Learning How to Code</em></a><em>&#8216;: </em>&#8220;</p>
<p>Legal para ler. Fala do Colin Hughese e da criação do <a title="http://projecteuler.net/" href="http://projecteuler.net/" target="_blank">Projeto Euler</a>. Lembrei dos velhos tempos do Ruby e do <a title="http://codekata.pragprog.com/" href="http://codekata.pragprog.com/" target="_blank">Code Kata</a> do Dave Thomas. Basicamente, o treino leva a prefeição. Uma mente brilhante e preguiçosa pode ser ultrapassada por uma nem tão brilhante mas ativa.</p>
<p>Como já fiz algumas coisas do Projeto Euler e coloquei <a title="http://pt-br.wordpress.com/tag/eulerj/" href="http://pt-br.wordpress.com/tag/eulerj/" target="_blank">aqui</a>, decidi resolver o problema <a title="http://projecteuler.net/index.php?section=problems&amp;id=29" href="http://projecteuler.net/index.php?section=problems&amp;id=29" target="_blank">#29</a>. Em <a title="http://jsoftware.com/" href="http://jsoftware.com/">J</a> é claro. Após ler o enunciado e pensar um pouquinho (saiu um cheirinho de queimado mas não estragou nada <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) verifiquei que seria muito fácil resolver em J. Nem impressionaria os seus amigos pois não poderia ser considerado &#8216;<a title="http://fotomix.wordpress.com/2011/06/04/10-j-one-liners-to-impress-your-friends/" href="http://fotomix.wordpress.com/2011/06/04/10-j-one-liners-to-impress-your-friends/" target="_blank">uma linha</a>&#8216;. Talvez alguns caracteres.</p>
<p>A primeira coisa seria gerar uma seqüência para efetuar as operações, no caso elevar os números a uma determinada potência. No caso do exemplo do exercício que tem como base de 2 a 5, a seqüência seria dada por <strong>2+i.4</strong> que resultaria na lista <strong>2 3 4 5</strong>. e seria assumida por <strong>a</strong> e <strong>b</strong> para efetuar <strong>a^b</strong>. Então:</p>
<p><code><br />
^/ ~2+i.4</code><br />
<code><br />
 4   8  16   32<br />
 9  27  81  243<br />
16  64 256 1024<br />
25 125 625 3125</code></p>
<p>Não preciso explicar, mas sabemos que <span style="color:#ff0000;"><strong>i.x</strong></span> gera uma seqüência de números inteiros entre 0 e x-1, <span style="color:#ff0000;"><strong>~</strong></span> duplica o operador a esqurda do verbo (+~2=4), <span style="color:#ff0000;"><strong>^</strong></span> é para exponenciação e o advérbio <span style="color:#ff0000;"><strong>/</strong></span> insere o verbo entre cada elemento da lista.</p>
<p>O próximo passo seria eliminar os elementos duplicados. Para tanto nos poderemos converter a matriz gerada pelo resultado em uma lista utilizando <span style="color:#ff0000;"><strong>,</strong></span> (<a title="http://jsoftware.com/help/dictionary/d320.htm" href="http://jsoftware.com/help/dictionary/d320.htm" target="_blank">Ravel</a>) e selecionar os elementos não duplicados utilizando <span style="color:#ff0000;"><strong>~</strong></span>. (<a title="http://jsoftware.com/help/dictionary/d221.htm" href="http://jsoftware.com/help/dictionary/d221.htm" target="_blank">Nub</a>). Fica:</p>
<p><code> ~. , ^/ ~ 2+i.4</code></p>
<p><code>4 8 16 32 9 27 81 243 64 256 1024 25 125 625 3125</code></p>
<p>Agora é só verificar quantos elementos possui a lista para obtermos a resposta para o problema. Vamos de <span style="color:#ff0000;"><strong>#</strong></span> (<a title="http://jsoftware.com/help/dictionary/d400.htm" href="http://jsoftware.com/help/dictionary/d400.htm" target="_blank">Tally</a>). Temos então, para a resolução do problema conforme o enunciado:</p>
<p><code> # ~. , ^/ ~ 2+i.4</code></p>
<p><code>15</code></p>
<p>São 15 termos distintos para a=b=2 3 4 5. É só substituir o 4 por (aqui fica por sua conta) para obter o resultado do problema onde a=b=2&#8230;100. Como não sabemos os valores resultantes, pode ser interessante colocar o sufixo <span style="color:#ff0000;"><strong>x</strong></span> no número para trabalhar com precisão extendida e garantir que não haverá conflitos onde o ponto flutuante for assumido. Por exemplo:</p>
<p><code> 32^45</code></p>
<p><code>5.39199e67</code></p>
<p><code> 32^45x</code></p>
<p><code>53919893334301279589334030174039261347274288845081144962207220498432</code></p>
<p>=-=-=-=-=<br />
<em>Powered by <strong><a href="http://blogilo.gnufolks.org/">Blogilo</a></strong></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fotomix.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fotomix.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fotomix.wordpress.com/634/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fotomix.wordpress.com&amp;blog=4235560&amp;post=634&amp;subd=fotomix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fotomix.wordpress.com/2011/06/09/projeto-euler-problema-29/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ee5bef27ce2f0f2aa0df86e710fec7f8?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Guaracy</media:title>
		</media:content>
	</item>
	</channel>
</rss>
