Pagina web en blogger

Algo que faltaba a blogger era la posibilidad de agregar páginas, además de posts. Podemos tener hasta 10 páginas. Para configurarlo, ir a Creacion de entradas -> Editar páginas.

Resolve problemas en un par de lineas de codigo, sin usar recursividad.

La idea de este blog es ir mostrando algunos problemas de programación y resolverlos en pocas lineas. Sobre todo voy a usar Python y Ruby. Algunos problemas, muestran formulas y algoritmos de algebras. A la derecha, buscá el tema que te interese en las etiquetas(labels).

Instalando Ruby en Puppy Linux

(metodo testeado en maquina virtual con virtualbox)

Configurando y compilando Ruby desde Source Code

Primero necesitas bajar devx_412.sfs (desde repositorios de puppy) al mismo directorio de pup_save.2fs y reiniciar la maquina
Obs: tiene que existir el pup_save si no hiciste full install de puppy.

Antes de instalar ruby:
proba en la shell
make + enter (si no dice command not found), segui adelante

Despues que probaste que va a funcionar "make"
   0. bajas la version (recommended ) http://www.ruby-lang.org/en/downloads/
   a directorio /root (el primero que ves cuando haces clic en la casita)
   1. Abris una consola.
   2. Cambias directorio a Ruby package. (donde esta el archivo que bajaste)
   3. Untar el package:
    tar -xvf ruby-1.9.1.tar.gz
    o hace clic en el paquete y busca el boton de extraer
  4. Cambias al directorio creado por el package.
   cd ruby-1.9.1
   5.    ./configure --host=i486-pc-linux-gnu (atencion al punto antes /configure...)
   6.     make CFLAGS="-march=i486 -mtune=i686"
  7. make install
   FIN !!!!

Paciencia para cada paso, espera que la maquina trabaje hasta que te devuelva el cursos, tomate un coffee o hace otra cosa.
Proba irb + enter
Y en Geany (clic en notas) elegi new Ruby Source file, borra todo y escribis
puts "hola ruby" y presionas F5 o clic en Execute.
Listo, tenes ruby.

Maximo Comun Divisor

Calculo del MCD usando el algoritmo de Euclides

Ej: el maximo comun divisor entre 6 y 10: mcd(6:10) = mcd(10:6) = mcd(6:4) = mcd(4:2) = mcd(2:0). Se calcula el MCD con el resto de dividir el valor absoluto del mayor por el menor, y nos quedamo con el resto de la division y el valor menor que teníamos

Ruby:

#a,b numeros enteros no nulos
def mcd(a,b)
d = a.abs, b.abs #[a.abs, b.abs]
while d.min != 0
d = d.min, d.max%d.min
end
end puts mcd(6,10)

Combinatoria

 

Ruby:
#combinatorio (9,3) n,k
c = 9,3
c << c[0]-c[1]
#--> [9,3,6]
# 7*8*9/(1*2*3) en una linea
r = (c.sort[1]+1..c.max).inject{|a,b| a*b}/(1..c.min).inject{|c,d| c*d}
puts r

en una linea el combinatorio (9,6) =
(7..9).inject{|a,b| a*b}/(1..3).inject{|c,d| c*d}

explicacion:
c es una lista [9,3] despues agregamos (<<)la diferencia (9-3) y nos queda
c = [9,3,6] c.sort --> [3,6,9] ;
c.sort[1]+1 --> 7 ; nos queda (7..9)

inject: esta funcion usa dos variables |a,b| en a acumula el resultado y
con b va recorriendo una lista de numeros desde el segundo elemente hasta el ultimo.
--> (7*8)*9)

------------- ~ ---------------

Python

>>> a,b,i = 1,1,1
>>> for x in range(6+1,9+1):
...                    a = a*x
...                    b,i = b*i, i+1
...
>>> a/b
84

------------- ~ ---------------

Factorial

Ruby:
#factorial de 8

(1..8).inject{|x,y| x*y}


Python 2.5:
def fact(x):

    a = 1

    for i in range(1,x+1):

         a = a*i

    return a


Python 2.6:

import math
math.factorial(8)