<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comentarios en: Ejercicio 16 &#8211; proyecto Euler</title>
	<atom:link href="http://www.juanjoconti.com.ar/2009/09/18/euler-16/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=euler-16</link>
	<description>el blog de Juanjo Conti - abstracto, lúdico y digital</description>
	<lastBuildDate>Tue, 07 Feb 2012 01:36:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<item>
		<title>Por: Santiago</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-83732</link>
		<dc:creator>Santiago</dc:creator>
		<pubDate>Wed, 23 Dec 2009 01:02:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-83732</guid>
		<description>No hace falta pasar el string a lista para iterar por los caracteres :)&lt;br&gt;&lt;br&gt;&gt;&gt;&gt; a = 2**1000&lt;br&gt;&gt;&gt;&gt; sum((int(x) for x in str(a)))&lt;br&gt;1366</description>
		<content:encoded><![CDATA[<p>No hace falta pasar el string a lista para iterar por los caracteres <img src='http://www.juanjoconti.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&gt;&gt;&gt; a = 2**1000<br />&gt;&gt;&gt; sum((int(x) for x in str(a)))<br />1366</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Esteban</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-83412</link>
		<dc:creator>Esteban</dc:creator>
		<pubDate>Thu, 03 Dec 2009 05:50:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-83412</guid>
		<description>En un one liner, se me ocurrió esto.

&gt;&gt;&gt; sum([int(a) for a in str(2**1000)])

Estoy de acuerdo en que la conversión a string es cara, pero la simpleza de la linea de aquí arriba me mata...

Muy buen blog! 

Saludos,
Esteban</description>
		<content:encoded><![CDATA[<p>En un one liner, se me ocurrió esto.</p>
<p>&gt;&gt;&gt; sum([int(a) for a in str(2**1000)])</p>
<p>Estoy de acuerdo en que la conversión a string es cara, pero la simpleza de la linea de aquí arriba me mata&#8230;</p>
<p>Muy buen blog! </p>
<p>Saludos,<br />
Esteban</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema Cortés</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82694</link>
		<dc:creator>Chema Cortés</dc:creator>
		<pubDate>Tue, 06 Oct 2009 17:52:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82694</guid>
		<description>Yo sugeriría dos soluciones (en realidad mejoras de las ya dadas):

1) la primera sería mejorar la solución que pasa a una cadena:

&gt;&gt;&gt; a=2**1000
&gt;&gt;&gt; s=str(a)
&gt;&gt;&gt; sum(i*s.count(str(i)) for i in range(1,10))

2) la segunda sería hacer más elegante la propuesta de Facundo con iteradores:

&gt;&gt;&gt; a=2**1000
&gt;&gt;&gt; def digit_iter(n):
...    while n&gt;9:
...        n,x=divmod(n,10)
...        yield x
...     yield n

&gt;&gt; sum(digit_iter(a))</description>
		<content:encoded><![CDATA[<p>Yo sugeriría dos soluciones (en realidad mejoras de las ya dadas):</p>
<p>1) la primera sería mejorar la solución que pasa a una cadena:</p>
<p>&gt;&gt;&gt; a=2**1000<br />
&gt;&gt;&gt; s=str(a)<br />
&gt;&gt;&gt; sum(i*s.count(str(i)) for i in range(1,10))</p>
<p>2) la segunda sería hacer más elegante la propuesta de Facundo con iteradores:</p>
<p>&gt;&gt;&gt; a=2**1000<br />
&gt;&gt;&gt; def digit_iter(n):<br />
&#8230;    while n&gt;9:<br />
&#8230;        n,x=divmod(n,10)<br />
&#8230;        yield x<br />
&#8230;     yield n</p>
<p>&gt;&gt; sum(digit_iter(a))</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Juanjo</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82349</link>
		<dc:creator>Juanjo</dc:creator>
		<pubDate>Mon, 21 Sep 2009 02:09:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82349</guid>
		<description>&lt;blockquote&gt;
No hace falta pasar el string a lista para iterar por los caracteres :)
&lt;/blockquote&gt;
Gracias Santiago, se me re pasó.</description>
		<content:encoded><![CDATA[<blockquote><p>
No hace falta pasar el string a lista para iterar por los caracteres <img src='http://www.juanjoconti.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p></blockquote>
<p>Gracias Santiago, se me re pasó.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Santiago</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82295</link>
		<dc:creator>Santiago</dc:creator>
		<pubDate>Fri, 18 Sep 2009 04:20:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82295</guid>
		<description>se me ocurrió esto tratando de pasar el algoritmo de Facundo a un one liner

&gt;&gt;&gt; f = lambda x: x &gt; 9 and x % 10 + f(x / 10) or x
&gt;&gt;&gt; f(2**1000)
1366L</description>
		<content:encoded><![CDATA[<p>se me ocurrió esto tratando de pasar el algoritmo de Facundo a un one liner</p>
<p>&gt;&gt;&gt; f = lambda x: x &gt; 9 and x % 10 + f(x / 10) or x<br />
&gt;&gt;&gt; f(2**1000)<br />
1366L</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Santiago</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82294</link>
		<dc:creator>Santiago</dc:creator>
		<pubDate>Fri, 18 Sep 2009 04:10:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82294</guid>
		<description>No hace falta pasar el string a lista para iterar por los caracteres :)

&gt;&gt;&gt; a = 2**1000
&gt;&gt;&gt; sum((int(x) for x in str(a)))
1366</description>
		<content:encoded><![CDATA[<p>No hace falta pasar el string a lista para iterar por los caracteres <img src='http://www.juanjoconti.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&gt;&gt;&gt; a = 2**1000<br />
&gt;&gt;&gt; sum((int(x) for x in str(a)))<br />
1366</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Nacho</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82293</link>
		<dc:creator>Nacho</dc:creator>
		<pubDate>Fri, 18 Sep 2009 03:37:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82293</guid>
		<description>Me olvidé de pegar la solución (en lo anterior donde puse función, era operador... había probado con \\):
&lt;code&gt;
&gt;&gt;&gt; a = 2 ** 1000
&gt;&gt;&gt; s = 0 
&gt;&gt;&gt; while a / 10 != 0:
...     s += a % 10
...     a = a / 10
... 
&gt;&gt;&gt; s + a
1366L
&gt;&gt;&gt; 
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Me olvidé de pegar la solución (en lo anterior donde puse función, era operador&#8230; había probado con \\):<br />
<code><br />
&gt;&gt;&gt; a = 2 ** 1000<br />
&gt;&gt;&gt; s = 0<br />
&gt;&gt;&gt; while a / 10 != 0:<br />
...     s += a % 10<br />
...     a = a / 10<br />
...<br />
&gt;&gt;&gt; s + a<br />
1366L<br />
&gt;&gt;&gt;<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Nacho</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82292</link>
		<dc:creator>Nacho</dc:creator>
		<pubDate>Fri, 18 Sep 2009 03:32:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82292</guid>
		<description>iba a sugerir la misma que Facundo. Me ganó de mano porque no conocía la función para el módulo (remainder) je. Seguí posteando los ejercicios que están buenos.
Saludos!</description>
		<content:encoded><![CDATA[<p>iba a sugerir la misma que Facundo. Me ganó de mano porque no conocía la función para el módulo (remainder) je. Seguí posteando los ejercicios que están buenos.<br />
Saludos!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Facundo Batista</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82291</link>
		<dc:creator>Facundo Batista</dc:creator>
		<pubDate>Fri, 18 Sep 2009 03:02:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82291</guid>
		<description>&gt;&gt;&gt; a = 2**1000
&gt;&gt;&gt; sum((int(x) for x in list(str(a))))
1366
&gt;&gt;&gt; t = 0
&gt;&gt;&gt; n = a
&gt;&gt;&gt; while n &gt; 9:
            n, x = divmod(n, 10)
            t += x

&gt;&gt;&gt; t += n
&gt;&gt;&gt; t
1366L

Hacer str() de un número de *muchos* dígitos, es caro (fijate de hacer de 2 ** 1000000), así que si evitás pasar por ahí, mejor.

Por otro lado, tu solución es clara y evidente, mi algoritmo lo tenés que leer y pensar...</description>
		<content:encoded><![CDATA[<p>&gt;&gt;&gt; a = 2**1000<br />
&gt;&gt;&gt; sum((int(x) for x in list(str(a))))<br />
1366<br />
&gt;&gt;&gt; t = 0<br />
&gt;&gt;&gt; n = a<br />
&gt;&gt;&gt; while n &gt; 9:<br />
            n, x = divmod(n, 10)<br />
            t += x</p>
<p>&gt;&gt;&gt; t += n<br />
&gt;&gt;&gt; t<br />
1366L</p>
<p>Hacer str() de un número de *muchos* dígitos, es caro (fijate de hacer de 2 ** 1000000), así que si evitás pasar por ahí, mejor.</p>
<p>Por otro lado, tu solución es clara y evidente, mi algoritmo lo tenés que leer y pensar&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Juanjo</title>
		<link>http://www.juanjoconti.com.ar/2009/09/18/euler-16/comment-page-1/#comment-82289</link>
		<dc:creator>Juanjo</dc:creator>
		<pubDate>Fri, 18 Sep 2009 02:39:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=1824#comment-82289</guid>
		<description>Explicación, de adentro para afuera: el número 2^1000 es convertido a string con str, es decir una secuencia de caracteres. Esa secuencia de caracteres es convertida en una lista. Ahora tenemos una lista de caracteres. Cada uno de los elementos de esa lista, es convertido en un número. A primera vista ahora tenemos una lista de números. En realidad, los paréntesis hacen que se cree un generador de números (un bicho más eficiente en memoria, pero que visto desde afuera grazna como una lista). Todos los números que puede generar el generador son sumados.</description>
		<content:encoded><![CDATA[<p>Explicación, de adentro para afuera: el número 2^1000 es convertido a string con str, es decir una secuencia de caracteres. Esa secuencia de caracteres es convertida en una lista. Ahora tenemos una lista de caracteres. Cada uno de los elementos de esa lista, es convertido en un número. A primera vista ahora tenemos una lista de números. En realidad, los paréntesis hacen que se cree un generador de números (un bicho más eficiente en memoria, pero que visto desde afuera grazna como una lista). Todos los números que puede generar el generador son sumados.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

