Snakes and rubies

Saturday, 19 April , 2008

Hace unos días que con Manuel Kaufmann (humitos) venimos comparando algunas cosas entre python y ruby, por simple curiosidad dado que son 2 lenguajes muy parecidos y que nos gustan mucho. Entonces se nos ocurrió escribir algunos problemas puntuales y sencillos para ver como los resuelve cada lenguaje, quiero aclarar que de ninguna manera queremos generar una guerra santa entre lenguajes ni mucho menos simplemente queremos divertirnos comparándolos. Entonces sin más vamos al grano, aquí va mi versión ruby de los ejercicios:

  1. Dado un array con nombres de persona eliminar los nombre que comienzan con “Pe”:
    irb(main):005:0> ["Pablo", "Raul",
    "Pedro", "Pepe", "Ariel", "TerePe"].delete_if{|n| n =~ /^Pe/}
    
    =>["Pablo", "Raul", "Ariel", "TerePe"]
  2. Verificar si el mismo array contiene el nombre “Raul”
     irb(main):006:0> ["Pablo", "Raul",
    "Pedro", "Pepe", "Ariel", "TerePe"].include?(”Raul”)
    
    => true
  3. Generar un string con todos los nombres unidos por “-”
    irb(main):009:0> ["Pablo", "Raul",
    "Pedro", "Pepe", "Ariel", "TerePe"].join(”-”)
    
    => “Pablo-Raul-Pedro-Pepe-Ariel-TerePe”
  4. Generar un segundo array con los nombres todos en minúsculas ordenado alfabéticamente
    irb(main):012:0> (["Pablo", "Raul",
    "Pedro", "Pepe", "Ariel", "TerePe"].collect{|n| n.downcase}).sort
    
    => ["ariel", "pablo", "pedro", "pepe", "raul", "terepe"]
  5. Desordenar el array:
    irb(main):016:0> ["Pablo", "Raul",
    "Pedro", "Pepe", "Ariel", "TerePe"].sort_by{ rand }
    
    => ["TerePe", "Pedro", "Raul", "Pablo", "Pepe", "Ariel"]
  6. Averiguar si la lista siguiente tiene números pares:
    irb(main):017:0> [1, 2, 3, 4, 5].any?{|x| x % 2 == 0 }
    
    => true
  7. Averiguar si toda la lista son números pares:
    irb(main):018:0> [1, 2, 3, 4, 5].all?{|x| x % 2 == 0 }
    
    => false
  8. Obtener el producto de una lista de números:
    irb(main):023:0> [1, 2, 3, 4, 5].inject{|x,n| x * n }
    
    => 120
  9. Obtener el factorial de 9999:
    irb(main):025:0> (1..9999).inject{|x,n| x * n }

    No voy a poner la salida del factorial por que es un número muuuuy….. largo pero lo pueden probar por uds mismos en el intérprete interactivo de ruby.

  10. Y por último averiguar si dos arrays son iguales:
    irb(main):002:0> [1, 2, 3, 4, 5].eql? [1, 2, 3, 4, 5]
    
    => true
  11. Todos los ejemplos se probaron con la versión 1.9 de ruby. Ahora para ver las versión python vamos a tener que estar atentos al blog de humitos

3 Responses to “Snakes and rubies”

  1. Vientos de Libertad » Blog Archive » Serpientes y rubíes Says:

    [...] Levanto el guante del desafío que plantea Gastón en su blog: juanjo@albus:~$ python Python 2.5.1 (r251:54863, Mar 7 2008, 03:41:45) [GCC 4.1.2 (Ubuntu [...]

  2. Manuel Says:

    Interesante. Yo hincho para humitos igual =P

    (el último ejemplo te quedo con letra más chica)

  3. …Python Vs. Ruby… ¿Rivales? « Humitos Says:

    [...] profundas y no que quede solo de palabras, asique decidimos escribir un par de post al respecto. Este es el primero de él, la respuesta de Juanjo y ahora tiro algunas diferencias entre [...]

Leave a Reply