index(): buscar la primera vocal de una palabra en Ruby

Buscar la primera vocal de una palabra es muy fácil debido a que en Ruby todo es un objeto y posee métodos como index, compact y min para trabajar sobre la información que queremos procesar. En este pequeño programa veremos paso a paso cómo podemos lograr nuestro objetivo.

Código fuente
#!/usr/bin/env ruby

print("Ingrese una palabra a evaluar: ")
palabra = gets.chomp.downcase

a = palabra.index("a")
e = palabra.index("e")
i = palabra.index("i")
o = palabra.index("o")
u = palabra.index("u")

ind = [a, e, i, o, u].compact.min

puts "La primera vocal es: #{palabra[ind]}"
puts "Su indice es: #{ind}"

La primera línea de este programa es opcional y se llama Shebang, es muy famosa en sistemas Unix ya que permite ejecutar programas escritos en lenguajes de tipo scripting sin necesidad de llamar al intérprete en la terminal; por ejemplo:

Con la línea ShebangSin la línea Shebang
$ ./BuscarPrimeraVocal.rb$ ruby BuscarPrimeraVocal.rb
Leer información ingresada por el usuario

Lo típico de este tipo de programas es la interacción con el usuario.

print("Ingrese una palabra a evaluar: ")
palabra = gets.chomp.downcase

Le solicitamos al usuario que ingrese la palabra que desee evaluar, luego leemos la información ingresada con el método gets y usamos el método chomp para eliminar el carácter de salto de línea «\n»; por último convertimos toda palabra en minúscula usando el método downcase y la asignamos a la variable «palabra» lo que ha ingresado el usuario.

Obteniendo los índices

Ruby nos ofrece un método para obtener los índices de un carácter o substring en un string.

a = palabra.index("a")
e = palabra.index("e")
i = palabra.index("i")
o = palabra.index("o")
u = palabra.index("u")

Usamos el método index() para obtener el índice de cada vocal. Este método solo nos devuelve el índice de la primera ocurrencia de cada vocal y en caso de no existir, nos devuelve nil.

Obtener el índice menor

Para poder saber cuál es la primera vocal en una palabra o string, primero debemos saber cuál es el índice menor de todo los índices obtenidos anteriormente.

ind = [a, e, i, o, u].compact.min

Lo primero que debemos hacer es agrupar los índice de las 5 vocales en un objeto lista, es decir, entre «[]»; luego usamos el método compact para eliminar todos valores nil que nos haya devuelto el método index(), por último obtenemos el índice menor usando el método min y lo asignamos a la variable «ind».

Mostrando el resultado

El programa no tendría sentido alguno si no muestra el resultado final al usuario.

puts "La primera vocal es: #{palabra[ind]}"
puts "Su indice es: #{ind}"

Primero mostramos la primera vocal accediendo a ella mediante su índice palabra[ind] y luego mostramos el índice en donde se ubica la vocal en la palabra.

Probando el programa

La única forma de saber si el programa funciona como se espera, es probandolo.

[fixedtorres@linuxero]$ ./BuscarPrimeraVocal.rb
Ingrese una palabra a evaluar: 17 de Septiembre de 2019
La primera vocal es: e
Su indice es: 4
[fixedtorres@linuxero]$ 

El programa cumple su función y nos indica que la primera vocal es la «e» y que se encuentra en el índice «4», lo cual es cierto.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *