Created
January 26, 2013 12:29
-
-
Save danielnieto/4642055 to your computer and use it in GitHub Desktop.
Ejercicios bootcamp Crowd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Autor: Daniel Nieto | |
def factorial (n = 1) | |
resultado = 1 | |
n.times do |x| | |
resultado = resultado * (n-x) | |
end | |
resultado | |
end | |
puts factorial 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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