Skip to content

Instantly share code, notes, and snippets.

@danielnieto
Created January 26, 2013 12:29
Show Gist options
  • Save danielnieto/4642055 to your computer and use it in GitHub Desktop.
Save danielnieto/4642055 to your computer and use it in GitHub Desktop.
Ejercicios bootcamp Crowd
#Autor: Daniel Nieto
preguntas = ["como te llamas?", "cual es tu edad?", "estudias o trabajas", "eres hombre o mujer?" , "iOS o Android?", "Pepsi o Coca Cola?", "donde vives?", "sabes programar con Ruby?", "fumas?", "bebes alcohol?"]
respuesta = nil
until respuesta.eql? "bye"
puts preguntas.sample
respuesta = gets.chomp.downcase
puts "Gracias por tu respuesta" if not respuesta.eql? "bye"
end
#Autor: Daniel Nieto
def factorial (n = 1)
resultado = 1
n.times do |x|
resultado = resultado * (n-x)
end
resultado
end
puts factorial 3
#Autor: Daniel Nieto
class Person
def initialize(hash)
@hash = hash
end
def method_missing(method, *args, &block)
if @hash.has_key? method.to_sym
puts @hash[method]
else
super method, args, block
end
end
end
values = {first_name: "daniel", last_name:"nieto", telephone:"341-41-3-41-33"}
p = Person.new values
p.first_name
#Autor: Daniel Nieto
#DISCLAIMER:
#No estaba seguro si con "contar" se referia a usar los metodos que ya tiene cada clase como Array.count y String.size
#o a programar un algoritmo nosotros mismos, de todos modos hice los metodos contar (retorna cuantas ocurrencias
#hay de un elemento dentro de un Array, hace lo mismo que Array.count) y longitud (retorna la longitud de una cadena,
#hace lo mismo que String.size).
class Array
def contar(palabra)
veces = 0
self.each do |x|
veces = veces + 1 if x.eql? palabra
end
veces
end
end
class String
def longitud
x = 0
until self[x].eql? nil
x = x+1
end
x
end
end
parrafo = "Fernanda, por el contrario, levant el tono. No tengo por qu callarme -dijo-. El que no quiera orme que se vaya. Entonces Aureliano Segundo perdi el dominio. Se incorpor sin prisa, como si slo pensara estirar los huesos, y con una furia perfectamente regulada y metdica fue agarrando uno tras otro los tiestos de begonias, las macetas de helechos, los potes de organo, y uno tras otro los fue despedazando contra el suelo. Fernanda se asust, pues en realidad no haba tenido hasta entonces una conciencia clara de la tremenda fuerza interior de la cantaleta, pero ya era tarde para cualquier tentativa de rectificacin. Embriagado por el torrente incontenible del desahogo, Aureliano Segundo rompi el cristal de la vidriera, y una por una, sin apresurarse, fue sacando las piezas de la vajilla y las hizo polvo contra el piso. Sistemtico, sereno, con la misma parsimonia con que haba empapelado la casa de billetes, fue rompiendo luego contra las paredes la cristalera de Bohemia, los floreros pintados a mano, los cuadros de las doncellas en barcas cargadas de rosas, los espejos de marcos dorados, y todo cuanto era rompible desde la sala hasta el granero, y termin con la tinaja de la cocina que se revent en el centro del patio con una explosin profunda. Luego se lav las manos, se ech encima el lienzo encerado, y antes de medianoche volvi con unos tiesos colgajos de carne salada, varios sacos de arroz y maz con gorgojo, y unos desmirriados racimos de pltanos. Desde entonces no volvieron a faltar las cosas de comer."
parrafo.gsub!(/[.,-]/, '') # aqui quite las comas, puntos y guiones para que solo quedaran las palabras
palabras = parrafo.split
repetidas = Hash.new
palabras.each do |p|
ocurrencias = palabras.contar p # se puede sustituir palabras.contar por palabras.count
if ocurrencias > 1
repetidas[p] = ocurrencias
end
end
puts "\nPalabras repetidas (formato: palabra (num. de caracteres) -> repeticiones)\n\n"
repetidas.each {|x,y| puts "#{x} (#{x.longitud}) -> #{y}"} # se puede sustituir x.longitud por x.size
puts "\nEn total, #{repetidas.size} palabras aparecen en el texto al menos 2 veces"
par, impar = 0, 0
palabras.each do |p|
if p.longitud%2 == 0
par= par +1
else
impar = impar + 1
end
end
puts "\nPalabras con longitud par: #{par} \nPalabras con longitud impar: #{impar}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment