<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en"> 
<title>bytesofcode</title> 
<link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode" /> 
	 
	<modified>2011-11-19T23:08:27-08:00</modified> 
<tagline>&lt;p&gt;Este blog ha sido creado con la intención de compartirte mi conocimiento en programación, en especial en los lenguajes python, perl y bash. Para que cada lector experimentado tenga la libertad de aportar algo constructivo y así poder conocer más.&lt;br /&gt;
El conocimiento vale más que las piedras preciosas, atesorémoslo.&lt;/p&gt;
</tagline> 
<generator url="http://www.lifetype.net/" version="1.2">LT</generator> 
 
<copyright>Copyright (c) pythonista</copyright> 
  
 <entry> 
 <id>tag:www.pythonblogs.com,2011-11-19:707</id>
 <title>Script en bash para redimensionar imágenes</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/707_script_en_bash_para_redimensionar_imgenes.html" /> 
  
 <modified>2011-11-19T23:08:27-08:00</modified> 
 <issued>2011-11-19T23:08:27-08:00</issued> 
 <created>2011-11-19T23:08:27-08:00</created> 
 <summary type="text/plain">  
 
 
 
  
 
 
El script funciona de la siguiente forma:
 
 
&amp;nbsp;user@host:~$ script directorio 800x600
 
 
Donde:
 
 
script es el archivo que contiene este codigo y que ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
bash 
scripts 
imagenes 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
&lt;img src=&quot;http://www.pythonblogs.com/img208.imageshack.us/img208/2843/terminallogosmall.png&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://img208.imageshack.us/img208/2843/terminallogosmall.png&quot; /&gt; 
&lt;/p&gt;
&lt;p&gt;
El script funciona de la siguiente forma:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;user@host:~$ script directorio 800x600
&lt;/p&gt;
&lt;p&gt;
Donde:
&lt;/p&gt;
&lt;p&gt;
script es el archivo que contiene este codigo y que guardamos en la carpeta bin
&lt;/p&gt;
&lt;p&gt;
directorio es el directorio que contiene las im&amp;aacute;genes que vamos a redimensionar
&lt;/p&gt;
&lt;p&gt;
y 800x600 es el nuevo tama&amp;ntilde;o que vamos a asignar
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Nota: este script no es recursivo, por lo tanto no toma las im&amp;aacute;genes de los subdirectorios del directorio dado
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;code&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
E_BADPARAMS=99&lt;br /&gt;
E_BADDIRECTORY=100&lt;br /&gt;
&lt;br /&gt;
if [[ -z &amp;quot;$1&amp;quot; || -z &amp;quot;$2&amp;quot; ]]&lt;br /&gt;
then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;Usage example: scriptname /home/user/Pictures -resize 800x600&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; exit $E_BADPARAMS&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dir=$1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ -d &amp;quot;$dir&amp;quot; || -d ./&amp;quot;$dir&amp;quot; ]]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; size=$2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ $dir =~ .*[^/]$ ]]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dir=$dir/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for file in &amp;quot;$dir&amp;quot;*.{jpg,JPG,png,PNG}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -f &amp;quot;$file&amp;quot; ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;Convirtiendo $file ...&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convert &amp;quot;$file&amp;quot; -resize $size &amp;quot;$file&amp;quot;.tmp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv &amp;quot;$file&amp;quot;.tmp &amp;quot;$file&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -t &amp;quot;$file&amp;quot;.tmp ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm &amp;quot;$file&amp;quot;.tmp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;Bad directory.&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit $E_BADDIRECTORY&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
fi
&lt;/code&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2011-09-03:519</id>
 <title>Funciones para convertir de decimal a binario</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/519_funciones_para_convertir_de_decimal_a_binario.html" /> 
  
 <modified>2011-09-03T19:44:07-07:00</modified> 
 <issued>2011-09-03T19:44:07-07:00</issued> 
 <created>2011-09-03T19:44:07-07:00</created> 
 <summary type="text/plain">  
He encontrado 2 buenos algoritmos para convertir un numero decimal a binario a trav&amp;eacute;s de estas funciones que reciben el numero entero en base 10 a convertir y devuelven una cadena de ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
python 
algoritmos 
python 2.7 
binario 
decimal 
numeros 
matematicas 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
He encontrado 2 buenos algoritmos para convertir un numero decimal a binario a trav&amp;eacute;s de estas funciones que reciben el numero entero en base 10 a convertir y devuelven una cadena de caract&amp;eacute;res con los d&amp;iacute;gitos del mismo n&amp;uacute;mero ya convertido a base 2.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Python versi&amp;oacute;n 2.7&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; binario1&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    &lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;este primer algoritmo utiliza la formula n = 2k + b&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; n == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; n == &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    k = n / &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
    E = binario1&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    b = n % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; binario2&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    &lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;y este va recorriendo 1 bit hacia la derecha en cada iteracion&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; n == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    b = &#039;&#039;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; n &amp;gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
&amp;nbsp;
        b = &lt;span class=&quot;kw1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + b
&amp;nbsp;
        n &amp;gt;&amp;gt;= &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#de esta forma el numero se va dividiendo entre 2 para llegar a 0&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#y terminar el bucle&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#tambien podria ser de esta forma&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#n /= 2 &lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; b&lt;/pre&gt;
&lt;p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Si&amp;eacute;ntente libre de comentar que te parecieron y si conoces alg&amp;uacute;n otro te invito a publicarlo, gracias&amp;nbsp;
&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2010-12-06:432</id>
 <title>N-ésima permutación lexicográfica</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/432_n-sima_permutacin_lexicogrfica.html" /> 
  
 <modified>2010-12-06T21:36:05-08:00</modified> 
 <issued>2010-12-06T21:36:05-08:00</issued> 
 <created>2010-12-06T21:36:05-08:00</created> 
 <summary type="text/plain">  
En este post tenemos dos funciones en python para obtener la n-&amp;eacute;sima permutaci&amp;oacute;n lexicogr&amp;aacute;fica de un conjunto de elementos.
 
 
&amp;nbsp;
 
 
  from  functools  import ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
python 3 
algoritmos 
proyecto euler 
permutaciones 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
En este post tenemos dos funciones en python para obtener la n-&amp;eacute;sima permutaci&amp;oacute;n lexicogr&amp;aacute;fica de un conjunto de elementos.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; functools &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;reduce&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; factorial&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;calcula el factorial de un numero&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#si n es mayor a uno realiza el calculo&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; n &amp;gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; x, y: x * y, &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, n + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#si no simplemente regresa 1&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;: &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; n_permutacion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n, lista&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;obtiene la n-esima permutacion lexicografica de los elementos de una lista&quot;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;&quot;&lt;/span&gt;
    
    &lt;span class=&quot;co1&quot;&gt;#creamos una funcion lambda para ir removiendo&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#los elementos que ya fijamos, por lo tanto los demas van cambiando&lt;/span&gt;
    remover = &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; lista, aremover: &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; lista &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i != aremover&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    
    &lt;span class=&quot;co1&quot;&gt;#cuando ya no hay elementos en la lista significa que los elementos&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#ya quedaron ordenados y terminamos, regresando [] (vacio)&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; lista:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        
    &lt;span class=&quot;co1&quot;&gt;#obtenemos div (divisor) y mod (modulo de n (numero de permutacion)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#entre la longitud de la lista - 1)&lt;/span&gt;
    div, mod = &lt;span class=&quot;kw1&quot;&gt;divmod&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n, factorial&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lista&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#el primer elemento es igual al elemento que hay&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#en la posicion div de la lista   &lt;/span&gt;
    elemento = lista&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;div&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#concatenamos el elemento actual con todos lo demas elementos&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#que nos valla regresando esta funcion, hasta que regrese []&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#notese que el modulo va disminuyendo y se va pasando como parametro&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;elemento&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+n_permutacion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mod, remover&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lista, elemento&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Cr&amp;eacute;ditos&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://pyeuler.wikidot.com/problems-21-30&quot; title=&quot;Problema 24 del Proyecto Euler&quot;&gt;http://pyeuler.wikidot.com/problems-21-30 &lt;/a&gt;
&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2010-12-04:431</id>
 <title>Código en python para hacer &quot;La criba de Eratóstenes&quot;</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/431_cdigo_en_python_para_hacer_la_criba_de_eratstenes.html" /> 
  
 <modified>2010-12-04T12:28:48-08:00</modified> 
 <issued>2010-12-04T12:28:48-08:00</issued> 
 <created>2010-12-04T12:28:48-08:00</created> 
 <summary type="text/plain">  
Bueno como ya es de saberse en cada uno de los post donde exponga alg&amp;uacute;n c&amp;oacute;digo de python sera de la versi&amp;oacute;n 3.1 &amp;oacute; &amp;gt;, entonces no cabe la necesidad de estar ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
python 3 
algoritmos 
numeros primos 
criba de eratostenes 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
Bueno como ya es de saberse en cada uno de los post donde exponga alg&amp;uacute;n c&amp;oacute;digo de python sera de la versi&amp;oacute;n 3.1 &amp;oacute; &amp;gt;, entonces no cabe la necesidad de estar mencionando la versi&amp;oacute;n del lenguaje en el t&amp;iacute;tulo del post.
&lt;/p&gt;
&lt;p&gt;
Les presento un par de algoritmos muy parecidos ya que los dos usan la llamada criba de Erat&amp;oacute;stenes para &amp;quot;cribar&amp;quot; los n&amp;uacute;meros primos de una sequencia de n&amp;uacute;meros. Ambos usan una sequencia 1..2000000.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;La criba de Erat&amp;oacute;stenes&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/b/b9/Sieve_of_Eratosthenes_animation.gif&quot; width=&quot;445&quot; height=&quot;369&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Nota&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
Si conoces alg&amp;uacute;n algoritmo m&amp;aacute;s eficiente tienes la libertad de comentarlo, gracias
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#inicializamos el tamano de la sequencia de numeros&lt;/span&gt;
n = &lt;span class=&quot;nu0&quot;&gt;2000000&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#se usa un conjunto porque es mas eficiente&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#(no hay numeros repetidos)&lt;/span&gt;
noprimos = set&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#iteramos desde 2 hasta la raiz cuadrada de n&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#y desde lo que lleva i, hasta n / i&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#esto nos permite obtener todos los multiplos de i&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#y agregarlos a el conjunto noprimos&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;kw1&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n ** .&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; noprimos:
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i, &lt;span class=&quot;kw1&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n / i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;: noprimos.&lt;span class=&quot;me1&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i * j&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        
&lt;span class=&quot;co1&quot;&gt;#por ultimo creamos una lista con todos los numeros&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#primos desde 2 hasta n&lt;/span&gt;
primos = &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;p &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, n + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; p &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; noprimos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt; 
&lt;/p&gt;
&lt;strong&gt;Cr&amp;eacute;ditos&lt;/strong&gt;:
&lt;p&gt;
&lt;a href=&quot;http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes&quot; title=&quot;Wikipedia - Criba de Erat&amp;oacute;stenes&quot;&gt;http://es.wikipedia.org/wiki/Criba_de_Erat&amp;oacute;stenes &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
y aqu&amp;iacute; esta el otro que a mi parecer es m&amp;aacute;s eficiente
&lt;/p&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#inicializamos la criba como una lista con n elementos True&lt;/span&gt;
&amp;nbsp;
criba = &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;True&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * n
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#iteramos desde 2 hasta la raiz cuadrada de n&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#y desde lo que lleva i, por i, hasta n&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;kw1&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n ** .&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i * i, n + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#esto nos permite poner False en la posicion j - i de la criba&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#porque j es un multiplo de i y por lo tanto no es primo&lt;/span&gt;
        criba&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;j - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; = False
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#por ultimo &amp;quot;cribamos&amp;quot; todos los numeros primos desde 2&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#hasta la longitud de la criba&lt;/span&gt;
primos = &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;p &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;kw1&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;criba&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; criba&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;p - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
&lt;p&gt;
&lt;strong&gt;Cr&amp;eacute;ditos&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.s-anand.net/euler.html&quot; title=&quot;S-anand - Euler&quot;&gt;http://www.s-anand.net/euler.html &lt;/a&gt;
&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2010-12-01:430</id>
 <title>Función en python 3 para obtener una lista de factores primos de un número</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/430_funcin_en_python_3_para_obtener_una_lista_de_factores_primos_de_un_nmero.html" /> 
  
 <modified>2010-12-01T16:00:38-08:00</modified> 
 <issued>2010-12-01T16:00:38-08:00</issued> 
 <created>2010-12-01T16:00:38-08:00</created> 
 <summary type="text/plain">  
El d&amp;iacute;a de hoy estuve buscando con un algoritmo para obtener una lista de factores primos de un n&amp;uacute;mero y me tope con est&amp;eacute; que me pareci&amp;oacute; muy interesante ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
python 
algoritmos 
numeros primos 
factores primos 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
El d&amp;iacute;a de hoy estuve buscando con un algoritmo para obtener una lista de factores primos de un n&amp;uacute;mero y me tope con est&amp;eacute; que me pareci&amp;oacute; muy interesante
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; factorizar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#almacenamos los resultados&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#de la factorizacion en una lista&lt;/span&gt;
    l = &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    num1 = n
    &lt;span class=&quot;co1&quot;&gt;#mientras podamos dividir por 2&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#el dos es un factor&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; num1 % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
        l.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        num1 /= &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#ahora probamos con los impares&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#empezando por el 3&lt;/span&gt;
    cuenta = &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
    raiz = &lt;span class=&quot;kw1&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;math&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sqrt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;num1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; cuenta &amp;lt;= raiz &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; num1 &amp;gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; num1 % cuenta == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            l.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cuenta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            num1 /= cuenta
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            cuenta += &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; num1 &amp;gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        l.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;num1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; l  
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;
&lt;p&gt;
&lt;strong&gt;Cr&amp;eacute;ditos&lt;/strong&gt;:&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://latecladeescape.com/recetas-algoritmicas/descomposicion-en-factores-primos.html&quot;&gt;http://latecladeescape.com/recetas-algoritmicas/descomposicion-en-factores-primos.html&lt;/a&gt;
&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2010-11-30:429</id>
 <title>Script en bash para actualizar y limpiar el sistema con apt-get</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/429_script_en_bash_para_actualizar_y_limpiar_el_sistema_con_apt-get.html" /> 
  
 <modified>2010-11-30T16:17:18-08:00</modified> 
 <issued>2010-11-30T16:17:18-08:00</issued> 
 <created>2010-11-30T16:17:18-08:00</created> 
 <summary type="text/plain">  
Ya tengo alg&amp;uacute;n tiempo con este peque&amp;ntilde;o script el cual en pocas palabras lo que hace es actualizarme la lista de paquetes en ubuntu e instalarme opcionalmente nuevos paquetes ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
bash 
scripts 
apt-get 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
Ya tengo alg&amp;uacute;n tiempo con este peque&amp;ntilde;o script el cual en pocas palabras lo que hace es actualizarme la lista de paquetes en ubuntu e instalarme opcionalmente nuevos paquetes as&amp;iacute; como eliminarme paquetes en desuso y tratar de corregirme aquellos con dependecias incumplidas.
&lt;/p&gt;
&lt;p&gt;
Pueden apreciarlo aqu&amp;iacute;:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;code&gt;
&lt;p&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Actualiza el sistema y remueve paquetes no necesarios&lt;br /&gt;
update() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;\n********** ACTUALIZANDO EL SISTEMA **********\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo -e &amp;quot;1. ACTUALIZANDO LA LISTA DE PAQUETES...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get update 1&amp;gt; /dev/null &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo -e &amp;quot;2. ACTUALIZANDO...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sudo apt-get upgrade&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;\n3. CHECANDO DEPENDENCIAS INCUMPLIDAS...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get check&amp;nbsp; 1&amp;gt; /dev/null &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;4. CORRIGIENDO DEPENDENCIAS INCUMPLIDAS...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get install -fy 1&amp;gt; /dev/null &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;********** ELIMINADO PAQUETES BASURA **********\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;5. DESINSTALANDO PAQUETES EN DESUSO...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get autoremove&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo -e &amp;quot;\n6. BORRANDO ARCHIVOS DESCARGADOS...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get autoclean 1&amp;gt; /dev/null &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e &amp;quot;7. BORRANDO ARCHIVOS ANTIGUOS DESCARGADOS...\n&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sudo apt-get clean 1&amp;gt; /dev/null &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sudo true&lt;br /&gt;
update&lt;br /&gt;
echo -e &amp;quot;********** ^^ LISTO ^^ **********&amp;quot;&lt;br /&gt;
sleep 1&lt;br /&gt;
clear&lt;br /&gt;
&lt;br /&gt;
#mas info en [man apt-get] o [apt-get --help] (mas breve)
&lt;/p&gt;
&lt;/code&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Por &amp;uacute;ltimo les recomiendo que cualquier script que hagan, lo guarden en un directorio que este incluido en el $PATH esto es en la variable de entorno para las rutas. Para que lo puedan ejecutar desde la terminal, p.e. yo nombre a mi script &amp;quot;update&amp;quot;, entonces cada vez que lo quiero ejecutar voy a la terminal y escribo:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;update&amp;nbsp; &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
y me da la sig. salida:
&lt;/p&gt;
&lt;p&gt;
user@host:~$ update&lt;br /&gt;
[sudo] password for user: &lt;br /&gt;
&lt;br /&gt;
********** ACTUALIZANDO EL SISTEMA **********&lt;br /&gt;
&lt;br /&gt;
1. ACTUALIZANDO LA LISTA DE PAQUETES...&lt;br /&gt;
&lt;br /&gt;
2. ACTUALIZANDO...&lt;br /&gt;
&lt;br /&gt;
Leyendo lista de paquetes... Hecho&lt;br /&gt;
Creando &amp;aacute;rbol de dependencias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
Leyendo la informaci&amp;oacute;n de estado... Hecho&lt;br /&gt;
0 actualizados, 0 se instalar&amp;aacute;n, 0 para eliminar y 0 no actualizados.&lt;br /&gt;
&lt;br /&gt;
3. CHECANDO DEPENDENCIAS INCUMPLIDAS...&lt;br /&gt;
&lt;br /&gt;
4. CORRIGIENDO DEPENDENCIAS INCUMPLIDAS...&lt;br /&gt;
&lt;br /&gt;
********** ELIMINADO PAQUETES BASURA **********&lt;br /&gt;
&lt;br /&gt;
5. DESINSTALANDO PAQUETES EN DESUSO...&lt;br /&gt;
&lt;br /&gt;
Leyendo lista de paquetes... Hecho&lt;br /&gt;
Creando &amp;aacute;rbol de dependencias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
Leyendo la informaci&amp;oacute;n de estado... Hecho&lt;br /&gt;
0 actualizados, 0 se instalar&amp;aacute;n, 0 para eliminar y 0 no actualizados.&lt;br /&gt;
&lt;br /&gt;
6. BORRANDO ARCHIVOS DESCARGADOS...&lt;br /&gt;
&lt;br /&gt;
7. BORRANDO ARCHIVOS ANTIGUOS DESCARGADOS...&lt;br /&gt;
&lt;br /&gt;
********** ^^ LISTO ^^ **********
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Recomendaci&amp;oacute;n:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Ejecuta este comando hasta que en todas las secciones te aparezca
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;0 actualizados, 0 se instalar&amp;aacute;n, 0 para eliminar y 0 no actualizados.
&lt;/p&gt;
&lt;p&gt;
Esto significa que ya no hay paquetes por actualizar, instalar, eliminar y actualizar, y que por lo tanto 0 paquetes se actualizaron. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Dudas?, comentarios? 
&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.pythonblogs.com,2010-11-29:428</id>
 <title>Bienvenidos a mi nuevo Blog de programación</title> 
 <link rel="alternate" type="text/html" href="http://bytesofcode.pythonblogs.com/102_bytesofcode/archive/428_bienvenidos_a_mi_nuevo_blog_de_programacin.html" /> 
  
 <modified>2010-11-29T17:26:45-08:00</modified> 
 <issued>2010-11-29T17:26:45-08:00</issued> 
 <created>2010-11-29T17:26:45-08:00</created> 
 <summary type="text/plain">  
Soy estudiante de Ingenier&amp;iacute;a en Software y adem&amp;aacute;s estudio por mi cuenta los lenguajes de programaci&amp;oacute;n: python, perl y bash (porque estos no me los ense&amp;ntilde;an en la ...</summary> 
 <author> 
  
 <name>pythonista</name> 
 <url>http://bytesofcode.pythonblogs.com/102_bytesofcode</url> 
</author> 
<dc:subject>
General 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://bytesofcode.pythonblogs.com/102_bytesofcode"> 
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://bytesofcode.pythonblogs.com/plugins/plogeshi/styles/plogeshi.css&quot; /&gt;&lt;p&gt;
Soy estudiante de Ingenier&amp;iacute;a en Software y adem&amp;aacute;s estudio por mi cuenta los lenguajes de programaci&amp;oacute;n: python, perl y bash (porque estos no me los ense&amp;ntilde;an en la escuela :()
&lt;/p&gt;
&lt;p&gt;
Mi intenci&amp;oacute;n es compartir lo m&amp;aacute;s relevante de python (en especial) que valla aprendiendo y aprender m&amp;aacute;s en base a las sugerencias y cr&amp;iacute;ticas constructivas que puedan surjir.
&lt;/p&gt;
&lt;p&gt;
Te agradezco si quieres colaborar conmigo.
&lt;/p&gt;
&lt;p&gt;
Saludos
&lt;/p&gt;
&lt;p&gt;
Jorge Luna
&lt;/p&gt;
&lt;p&gt;
(pythonista) 
&lt;/p&gt; 
</content> 
</entry> 
 
</feed>
