Comenzando con el algoritmo

Un ejemplo de problema algorítmico

Un problema algorítmico se especifica describiendo el conjunto completo de instancias en las que debe funcionar y su salida después de ejecutarse en una de estas instancias. Esta distinción, entre un problema y una instancia de un problema, es fundamental. El problema algorítmico conocido como clasificación se define de la siguiente manera: [Skiena:2008:ADM:1410219]

  • Problema: Clasificación
  • Entrada: Una secuencia de n teclas, a_1, a_2, ..., a_n.
  • Salida: El reordenamiento de la secuencia de entrada tal que a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n

Una instancia de clasificación puede ser una matriz de cadenas, como { Haskell, Emacs } o una secuencia de números como { 154, 245, 1337 }.

Primeros pasos con el algoritmo simple Fizz Buzz en Swift

Para aquellos de ustedes que son nuevos en la programación en Swift y aquellos que provienen de diferentes bases de programación, como Python o Java, este artículo debería ser bastante útil. En esta publicación, discutiremos una solución simple para implementar algoritmos rápidos.

Zumbido efervescente

Es posible que haya visto Fizz Buzz escrito como Fizz Buzz, FizzBuzz o Fizz-Buzz; todos se refieren a lo mismo. Esa “cosa” es el principal tema de discusión hoy. Primero, ¿qué es FizzBuzz?

Esta es una pregunta común que surge en las entrevistas de trabajo.

Imagina una serie de un número del 1 al 10.

1 2 3 4 5 6 7 8 9 10

Fizz y Buzz se refieren a cualquier número que sea múltiplo de 3 y 5 respectivamente. En otras palabras, si un número es divisible por 3, se sustituye por fizz; si un número es divisible por 5, se sustituye por zumbido. Si un número es simultáneamente un múltiplo de 3 Y 5, el número se reemplaza con “fizz buzz”. En esencia, emula el famoso juego infantil “fizz buzz”.

Para trabajar en este problema, abra Xcode para crear un nuevo patio de recreo e inicialice una matriz como la siguiente:

// for example 
let number  = [1,2,3,4,5]
// here 3 is fizz and 5 is buzz

Para encontrar toda la efervescencia y el zumbido, debemos iterar a través de la matriz y verificar qué números son efervescentes y cuáles son zumbidos. Para hacer esto, crea un bucle for para iterar a través de la matriz que hemos inicializado:

for num in number {
  // Body and calculation goes here
}

Después de esto, simplemente podemos usar la condición “if else” y el operador de módulo en forma rápida, es decir, -% para ubicar la efervescencia y el zumbido.

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else {
    print(num)
  }
}

¡Excelente! Puede ir a la consola de depuración en el área de juegos de Xcode para ver el resultado. Encontrará que las “efervescencias” se han ordenado en su matriz.

Para la parte Buzz, usaremos la misma técnica. Probémoslo antes de desplazarnos por el artículo: puede comparar sus resultados con este artículo una vez que haya terminado de hacer esto.

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

¡Compruebe la salida!

Es bastante sencillo: dividiste el número por 3, fizz y dividiste el número por 5, buzz. Ahora, aumenta los números en la matriz.

let number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

Aumentamos el rango de números del 1 al 10 al 1 al 15 para demostrar el concepto de “efervescencia”. Dado que 15 es un múltiplo de 3 y 5, el número debe reemplazarse con “fizz buzz”. ¡Pruébelo usted mismo y compruebe la respuesta!

Aquí está la solución:

for num in number {
  if num % 3 == 0 && num % 5 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Espera… ¡aunque no ha terminado! Todo el propósito del algoritmo es personalizar el tiempo de ejecución correctamente. Imagínese si el rango aumenta de 1-15 a 1-100. El compilador verificará cada número para determinar si es divisible por 3 o por 5. Luego, revisará los números nuevamente para verificar si los números son divisibles por 3 y 5. El código esencialmente tendría que ejecutarse a través de cada número en la matriz. dos veces: primero tendría que ejecutar los números por 3 y luego ejecutarlos por 5. Para acelerar el proceso, simplemente podemos decirle a nuestro código que divida los números por 15 directamente.

Aquí está el código final:

for num in number {
  if num % 15 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Tan simple como eso, puede usar cualquier idioma de su elección y comenzar

Disfruta de la codificación