CursosEmpresasBlogLiveConfPrecios

Fibonacci con Ruby

Clase 12 de 34 • Curso de Ruby 2017

Clase anteriorSiguiente clase

Contenido del curso

Introducción a Ruby

  • 1

    ¿Qué es Ruby?

    01:09 min
  • 2
    Introducción al Curso de Ruby

    Introducción al Curso de Ruby

    04:13 min
  • 3
    Instalación en Windows

    Instalación en Windows

    07:39 min
  • 4
    Operaciones y variables

    Operaciones y variables

    15:01 min
  • 5
    Estructuras selectivas

    Estructuras selectivas

    11:29 min
  • 6
    Calcular si un número es par

    Calcular si un número es par

    03:36 min
  • 7
    Definición e invocación de métodos

    Definición e invocación de métodos

    11:41 min
  • 8
    Arreglos

    Arreglos

    10:46 min
  • 9
    Estructuras repetitivas

    Estructuras repetitivas

    09:18 min

Métodos, blocks y procs

  • 10
    Argumentos y valores de retorno

    Argumentos y valores de retorno

    13:10 min
  • 11
    Métodos de arreglos, hashes

    Métodos de arreglos, hashes

    20:41 min
  • 12
    Fibonacci con Ruby

    Fibonacci con Ruby

    Viendo ahora
  • 13
    Blocks, procs y lambdas

    Blocks, procs y lambdas

    08:01 min
  • 14
    Lectura de archivos

    Lectura de archivos

    10:21 min
  • 15
    Manejo de excepciones

    Manejo de excepciones

    18:07 min

Programación Orientada a Objetos

  • 16
    Objetos y clases en Ruby

    Objetos y clases en Ruby

    13:23 min
  • 17
    Scope de variables

    Scope de variables

    14:29 min
  • 18
    Encapsulamiento

    Encapsulamiento

    14:39 min
  • 19
    Herencia

    Herencia

    11:17 min
  • 20
    Simulador de patos

    Simulador de patos

    12:51 min
  • 21
    Mixins

    Mixins

    07:13 min
  • 22
    Polimorfismo

    Polimorfismo

    10:50 min
  • 23
    Gemas

    Gemas

    05:33 min

Buenas prácticas

  • 24
    Testing

    Testing

    10:34 min
  • 25
    Convenciones de código, rubocop

    Convenciones de código, rubocop

    06:36 min

Proyecto: Scrapping

  • 26
    ¿Qué es hacer scrapping?

    ¿Qué es hacer scrapping?

    16:17 min
  • 27
    Descargar una lista de archivos

    Descargar una lista de archivos

    05:53 min

Proyecto: Aplicación web, consumiendo API

  • 28
    Hacer una app sencilla

    Hacer una app sencilla

    12:43 min
  • 29
    Usar API

    Usar API

    09:51 min
  • 30
    Hacer deploy

    Hacer deploy

    10:14 min

Conclusiones

  • 31
    Cierre del curso

    Cierre del curso

    01:52 min

Retos/Desafíos

  • 32
    Juego de adivina el número

    Juego de adivina el número

    00:29 min
  • 33
    Modelar un televisor

    Modelar un televisor

    00:43 min
  • 34
    Aplicación Web

    Aplicación Web

    00:29 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Juan Pablo Parra Sandoval

        Juan Pablo Parra Sandoval

        student•
        hace 8 años

        Otra solucion para obtener la suma del arreglo impares es utilizar el metodo sum

        arreglo.sum

        así se evitan hacer el metodo suma_arreglo

          Oscar Téllez

          Oscar Téllez

          student•
          hace 8 años

          En la version 2.3.4 no me funciona 😦 , aunque en la 2.4 si 😃

        Emmanuel Franquiz

        Emmanuel Franquiz

        student•
        hace 8 años

        Espero haber hecho el ejercicio correctamente 😃

        def crear_serie n array = [1,2] (n-2).times{ array << array[-1] + array[-2] } array end def array_impares array new_array = [] array.each do |element| if element%2 !=0 new_array << element end end new_array end def menor_40 array new_array = [] array.each do |element| if element < 40 new_array << element end end new_array end fibonacchi=crear_serie(10) impares = array_impares(fibonacchi) suma_impares = menor_40(impares).sum puts "La serie fibonacchi es: #{fibonacchi}, de los cuales los numeros impares son: #{impares} y la suma de los valores impares menores a 40 es: #{suma_impares}"
        Lizeth Paola Cuadros Olarte

        Lizeth Paola Cuadros Olarte

        student•
        hace 8 años

        Hola, esta es mi solución, yo use el método reduce(:+) ¿por favor me puedes decir si esta solución es correcta?

        Gracias.

        def crear_serie(n_total) array = [1,2] (n_total - 2).times { array << array[-1] + array[-2] } array end def arreglo_impares(array) new_arrat = [] array.each do |element| if element % 2 != 0 && element < 40 new_arrat << element end end new_arrat.reduce(:+) end fibonacci = crear_serie(40) impares = arreglo_impares(fibonacci) puts impares
          Kattya Daniella Cuevas Montes

          Kattya Daniella Cuevas Montes

          student•
          hace 8 años

          Sí, está bien!
          Si usas reduce para sumar, puedes hacer que la suma inicie en 0 con reduce (0, :+) . Así si no tienes ningún elemento te devolverá cero como resultado.

        habib borge

        habib borge

        student•
        hace 8 años

        Inicia con cualquier numero y la cantidad de elementos cualesquieras.

        puts "Ingrese el número principal de la serie: " ini = gets.chomp.to_i puts "Ingrese cantidad de numero de la serie: " limit = gets.chomp.to_i data = Array.new(limit, 1) not_even = Array.new data.each_index{ |index| if index == 0 data[index] = ini else data[index] = data[index - 1] + ( (index == 1) ? ini : data[index - 2] ) end if !data[index].even? not_even << data[index] end } puts data.inspect puts not_even.inspect
        Nathaly Stefani Riaño Bejarano

        Nathaly Stefani Riaño Bejarano

        student•
        hace 8 años

        Ejercicio!

        def fibonacci(n) initial_array = [1, 2] initial_array.each do |element| fibonacci = element + initial_array[-1] (initial_array << fibonacci) if (element <= n) end end def impares(arreglo) new_array = [] arreglo.each do |element| new_array << element if element.odd? end new_array end val1 = fibonacci(40) puts "La serie fibonacci es #{val1}" val2 = impares(val1) puts "Los números impares son #{val2}" puts "La suma de los números impares es #{val2.sum}"
        jose wilson  tallacagua espinoza

        jose wilson tallacagua espinoza

        student•
        hace 7 años

        un problema que tuve fue que al principio para crear la serie fibonaci baje las llaves { } ejemplos

        5.times { ..codigo }

        y no me reconocía la sintaxis me salia error luego escribí como en el vídeo

        5.times { }

        recién me funciono alguna explicación de salto de linea de las llaves

          Kattya Daniella Cuevas Montes

          Kattya Daniella Cuevas Montes

          student•
          hace 7 años

          El salto de línea se considera el final de una línea de código a ejecutar. Las llaves hacen que el salto de línea no sea considerado como final de la linea a ejecutar.

        Juan Camilo Lopez Marulanda

        Juan Camilo Lopez Marulanda

        student•
        hace 7 años

        el resultado es 165580141???

          Pablo Castillo

          Pablo Castillo

          student•
          hace 7 años

          Yo haciéndolo de manera completamente distinta a lo explicado me dio lo mismo del video, 350704365

          def fibo(index, arr) if index==1 return arr else fibo(index-1,arr << arr[-2]+arr[-1]) end end arr=fibo(40, [1,2]) numero=arr.reduce do |suma,e| if e.even? suma else suma+e end end puts numero
        José Carlos Orozco Medina

        José Carlos Orozco Medina

        student•
        hace 7 años

        def arreglo_impares(array)
        new_array = []
        array.each do |element|
        if element <= 40 #Solo agrego este If para que solo itere con los mayores o iguales a 40.
        if element % 2 != 0
        new_array << element
        end
        end
        end
        new_array
        end

        David Peñafiel Zeballos

        David Peñafiel Zeballos

        student•
        hace 7 años
        def fibonacci fin i = fin j = 0 a = [1,2] while j < fin j += 1 a.push a[-1] + a[-2] end puts "En la serie fibonnacci pasados 1,2 los #{fin} siguientes números son." puts a puts "Y la suma de sus números impares es:" puts a.select {|i| i % 2 != 0 }.reduce(:+) end if ARGV.empty? puts "No le pasaste un dato a la aplicación: #{ __FILE__ }" else fibonacci ARGV[0].to_i end

        llamarlo así desde la consola

        C:\Users\Dave\Desktop\pruebas>ruby "10 fibonacci con ruby.rb" 4 En la serie fibonnacci pasados 1,2 los 4 siguientes números son. 1 2 3 5 8 13 Y la suma de sus números impares es: 22
        segundo españa

        segundo españa

        student•
        hace 8 años

        Ruby es un lenguaje tan lindo que no deberían dejarlo ver difícil con sus soluciones!

        Solución fibonacci imprimiendo los primeros 40 elementos

        numeros = [1, 2] numeros.map do |numero| if numeros.size <= 40 puts numero numeros << numero.to_i + numeros[-1].to_i end end```
          segundo españa

          segundo españa

          student•
          hace 8 años

          R1) si te entiendo jcion. pero lo puse así por si alguien le da por poner un numero así: “3” no tenga inconveniente.

          R2) si es error mío, pero gran parte en la plataforma por que no me da un feedback de si el comentario fue agregado o no.

          R3) y si se me paso es hasta 39 o en su defecto imprimir a 41 por su condición de inicio en 0.

          Muchas gracias por tus comentario y por estar activo.

        Oscar Téllez

        Oscar Téllez

        student•
        hace 8 años

        Otra solución mas:

        def crear_serie(n) array = [1,2] (n - 2).times { array << array[-1] + array[-2] } array end def arreglo_impares(array) new_array = [] array.each { |e| new_array << e if !e.even? } new_array end fibonacci = crear_serie(40) impares = arreglo_impares(fibonacci) resultado = impares.inject(0, :+) puts resultado
        Alfonso Candiani

        Alfonso Candiani

        student•
        hace 8 años
        #!/usr/bin/env ruby -wKU # Fibonacci class Fibonacci def initialize() end def recorrido() puts 'Ingresa cuantos numeros de la serie quieres: ' number = gets.to_i serie = [1,1] (number - 2).times { serie << serie[-1] + serie[-2] } puts 'Serie de Fibonacci: ' print serie puts puts 'Serie impares: ' serie.each_with_index { |i, index| if i.even? == true serie.delete_at(index) end } print serie puts puts "Suma de los Impares: #{serie.reduce(:+)}" end end start = Fibonacci.new() start.recorrido gets()```
        Jose Pablo Monge Fierro

        Jose Pablo Monge Fierro

        student•
        hace 8 años
        def crear_serie(n) array = [1,2] (n - 2).times{ array << array[-1] + array[-2] } array end def arreglo_impares(array) impares = [] array.each do |numero| if numero % 2 != 0 && numero < 40 impares << numero end end impares.sum end fibonacci = crear_serie(40) impares = arreglo_impares(fibonacci) puts "La suma de los numero impares es de #{impares}"
        segundo españa

        segundo españa

        student•
        hace 8 años

        Ruby es un lenguaje tan lindo que no deberían dejarlo ver difícil con sus soluciones!

        Solución fibonacci con imprimiendo los primeros 40 elementos

        numeros = [1, 2] numeros.map do |numero| if numeros.size <= 40 puts numero numeros << numero.to_i + numeros[-1].to_i end end
        Ruben Eduardo Acosta Vela

        Ruben Eduardo Acosta Vela

        student•
        hace 8 años

        Mi solución.

        fibo = [1,1] impares = [1,1] while impares[-1] < 40 a = fibo[-1] b = fibo[-2] fibo.push(a+b) if fibo[-1]%2 != 0 impares << fibo[-1] end end impares.pop() print "Fibonacci: #{fibo}\n" print "Impares #{impares}\n" print "Suma #{impares.reduce (:+)}\n"
        Carlos Fabian Hernandez Pacheco

        Carlos Fabian Hernandez Pacheco

        student•
        hace 8 años

        Lo hice de una manera distinta para salir de la rutina… 😃

        def numeros_fibonacci @fibonacci = [1,2] while @fibonacci.length < 40 @fibonacci << @fibonacci[-1] + @fibonacci[-2] end end def numero_impar @impar = [] @fibonacci.each do |i| if i % 2 == 1 @impar << i end end end def suma @a = 0 @impar.each do |i| @a += i end puts @a end numeros_fibonacci numero_impar suma```
        Armando Rojas

        Armando Rojas

        student•
        hace 8 años

        @MrRojas

        def fibo valor if valor == 0 return 0 elsif valor == 1 return 1 else return fibo(valor - 1) + fibo(valor - 2) end end
        David Daza

        David Daza

        student•
        hace 8 años

        Con lo visto la clase anterior, los impares también pueden encontrarse así, creo

        def impares(array) array.reject { |a| a.even? } end
        Matias Jesus Ruiz Ruiz

        Matias Jesus Ruiz Ruiz

        student•
        hace 8 años

        Otra manera de obtener la suma de los números impares es

        suma_impares = impares.reduce(:+)
        Matias Jesus Ruiz Ruiz

        Matias Jesus Ruiz Ruiz

        student•
        hace 8 años

        De esta manera logre resolverlo, quizás a alguien pueda servirle

        =begin Cada termino en la sucesion de Fibonacci se genera mediante la adicion de los dos elementos anteriores. Al comenzar con 1 y 2 los primeros 10 elementos seran 1,2,3,5,8,13,21,34,55,89 Al tener en cuenta los terminos de la sucesion de fibonacci cuyos valores no superan los cuarenta, hallar la suma de los elementos impares =end def crear_serie(numero) array = [1,2] (numero -2).times{ array << array[-1] + array[-2] } array end def arreglo_impares(arreglo) nuevo_array = [] arreglo.each do |elemento| if elemento < 40 if elemento % 2 != 0 nuevo_array << elemento end end end nuevo_array end fibonnaci = crear_serie(40) impares = arreglo_impares(fibonnaci) suma_impares = impares.reduce(:+) puts fibonnaci puts '===' puts suma_impares