Привет!

День 3 из 30: Ruby Coding Challenge номер 3 🥳.

Это почтовая версия это видео на Youtube

В предыдущем видео мы решили очень распространенную задачу:

Сколько простых элементов в заданном массиве

Окончательный код был ужасен. Впрочем, мне даже не жаль. Вспоминая почему:

Когда дело доходит до алгоритмов, украшение означает несколько вещей:

  • Лучшая производительность
  • Лучшая читаемость
  • Лучшая ремонтопригодность

Ну, лучший дизайн кода

Сегодня я решу ту же проблему с (надеюсь) лучшим дизайном кода:

Ниже вы можете увидеть первую уродливую версию:

#1 — Уродливая версия алгоритма

Пора навести порядок на кухне. Было бы здорово иметь метод, который проверяет, является ли заданное число простым.

# 2 — Организация метода

У нас есть 2 основные обязанности

  • перебирать массив, задавая вопросы
  • проверить, является ли заданное число простым или нет

Я собираюсь разделить это на 2 метода, которые будут иметь указанные выше обязанности:

Прохладный. Пришло время добавить немного мощности Ruby и использовать блоки Ruby с методом подсчета, который мы сделали в первом видео.

№3 — Рубиновые массивы

Не знаю, как вы, а я ненавижу локальные переменные.

Пришло время избавиться от них. В Ruby можно указать, какие элементы должны быть созданы в массиве, учитывая

  • начальный номер
  • шаблон для генерации следующего числа

Удивительно, не так ли?

# 4 - Мошенничество: Ruby Prime Library

Теперь, когда мы знаем, как создать алгоритм вручную, в реальной жизни это обычно не имеет смысла.

В Ruby есть библиотека Prime, которая может легко выполнить эту работу.

Мы просто спрашиваем, является ли число простым или нет. Обратите внимание, что мы импортируем библиотеку Prime.

Продолжаем и заменяем метод is_prime(item):

И это наша финальная версия, немного отличающаяся от первой 😏

Вот и все. Я надеюсь, что вы узнали 1 или 2 вещи :)

Если подумать вслух, вероятно, следующей задачей кодирования будет переписывание алгоритма вручную с использованием рекурсии 😏

Спасибо за визит, будем на связи и увидимся!

Первоначально опубликовано на https://www.alexgama.io.