Изучив тонкости синтаксиса этого нового языка, который вы выучили, кажется, что вы находитесь на вершине мира. Однако со временем вы увидите, как вы только что коснулись поверхности того, что действительно возможно, и всей силы, которой вы обладаете. Для широких масс работа программиста может быть воспринята как «простая, просто скажи компьютеру, что делать».

Как вы, возможно, знаете, вам придется столкнуться с гораздо большим количеством проблем, чем просто сказать одному дрону, чтобы он не врезался друг в друга. Однако, чтобы решить эту проблему, вы можете не знать, с чего начать.

В качестве примера возьмем проблему с www.codewars.com (веб-сайт, который я настоятельно рекомендую, чтобы отточить себя с точки зрения решения проблем и критического мышления) с использованием Ruby.

Я попытался выбрать проблему, которая определенно может возникнуть в реальных ситуациях (например, если это был список имен, вы можете проанализировать, какие имена являются наиболее распространенными и т. Д.). Помня об этой проблеме, давайте предпримем некоторые шаги, чтобы наметьте способ решения этой проблемы.

1. ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ПРОБЛЕМУ.

Я знаю, что вы, возможно, закатываете глаза, но об этом всегда нужно говорить. Даже если вам кажется, что вы уже решали эту проблему раньше, всегда читайте до конца и получайте именно то, чего требует проблема. Вы можете упустить некоторые детали, которые имеют решающее значение для правильного ответа. Узнайте параметры решения:

  • Нахождение СЧЕТЧИКА: это говорит вам, что решением будет число
  • Отличный: единственный в своем роде
  • без учета регистра: использование заглавных букв не имеет значения
  • буквенные символы и цифровые цифры: как цифры, так и буквы
  • Ввод - это строка, состоящая только из цифр и букв.

2. СДЕЛАЙТЕ ИСПЫТАНИЯ НА ПРИМЕРАХ.

Решая проблему, вы должны убедиться, что ваш код может учитывать любой тип данных, которые ему передаются. Когда вы пишете код, всегда могут быть данные, проверяющие самые экстремальные параметры. При создании примеров вы можете рассмотреть два типа случаев:

  • Пограничные случаи - случаи, когда параметры достигают крайних значений на своих границах.
  • Угловые случаи - случаи, когда параметры выходят за нормальные границы параметров.

В нашем примере вы можете увидеть примеры, перечисленные под описанием, которое вы можете проверить. Вы также можете добавить примеры, такие как входные данные, являющиеся массивом, символы, включенные в строку, или имеющие значение nil. Это будет считаться «крайним случаем».

3. ПОШАГОВЫЙ ПРОЦЕСС РЕШЕНИЯ ПРОБЛЕМЫ.

При первой попытке решить проблему подумайте, что вы хотите сделать, на простом английском. Какие шаги для решения проблемы? Постарайтесь не слишком беспокоиться о том, как вы будете кодировать проблему, а только о том, как ее решить. Давайте посмотрим на нашу примерную задачу, не так ли?

  • Просмотрите каждый символ в тексте.
  • Убедитесь, что буква, заглавная или нет, по-прежнему считается дубликатом.
  • Запишите, сколько раз использовался каждый символ.
  • Подсчитайте каждый символ, который использовался более одного раза.
  • Edge Case: что делать, если строка пуста?

4. ВЫБИРАЙТЕ, КАКОЙ КОД НЕОБХОДИМО ИСПОЛЬЗОВАТЬ, ЧТОБЫ ВЫПОЛНИТЬ КАЖДЫЙ ШАГ.

Итак, у нас есть шаги, необходимые для решения проблемы с нашими параметрами, теперь какие методы нам понадобятся и какую логику мы будем использовать для решения проблемы. Давайте возьмем каждый шаг, который мы наметили, и посмотрим, будет ли это возможно с нашим языком кодирования (в данном случае ruby).

  • Просмотрите каждый символ в тексте: мы знаем, что наш текст будет строкой из цифр и букв, но мы не можем перебирать его. Как вы знаете, чтобы перебирать текст, нам нужно преобразовать строку в массив, где каждый символ является элементом.
  • Убедитесь, что буква, заглавная или нет, по-прежнему считается дубликатом: Убедитесь, что каждый символ в нижнем регистре, так что все буквы в нижнем регистре.
  • Запишите, сколько раз использовался каждый символ: Чтобы вести подсчет каждого использованного символа, вы можете использовать хэш счетчика, где каждый ключ представляет собой уникальную букву, а значение - счетчик.
  • Следите за каждым символом, который использовался более одного раза: Используя метод count, вы можете подсчитать, какие символы были в тексте более одного раза.

5. ИСПОЛЬЗУЙТЕ ПСЕВДОКОД ДЛЯ СТРУКТУРЫ И КАРТА НАШЕЙ ЛОГИКИ И МЕТОДОВ

Хотя у нас есть общее представление о том, как решить проблему, а также о необходимых методах и логике, нам все же нужно наметить нашу проблему. Хороший способ сделать это - использовать псевдокод, который мы можем преобразовать в код. Причина в том, чтобы обозначить проблему, не беспокоясь о синтаксисе. Нет общих правил написания псевдокода. Возьмем нашу проблему:

6. ПРЕОБРАЗОВАТЬ ПСЕВДОКОД В КОД

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

7. ОТЛАДКА КОДА НА ПРИМЕРАХ ТЕСТОВ

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

Если вы все сделали правильно, пора праздновать, верно? НЕПРАВИЛЬНЫЙ. Всегда есть время…

8. ИЗМЕНИТЕ РЕШЕНИЕ

Какие?! Мы просто потратили час на решение этой задачи и проделали все эти шаги. Почему мы снова пытаемся решить проблему? Ответ прост: всегда есть возможности для улучшения. Не бывает одного способа решить проблему, и лучше всего искать другой способ решения проблемы, так как позже они могут возникнуть для другой проблемы.

Давайте посмотрим на мою предыдущую задачу:

Я знаю, это довольно неловко. Не извиняюсь, но это было очень рано, когда я программировал. Однако никогда не отчаивайтесь от плохо выглядящего кода. Вы решили проблему! Но всегда есть возможности для улучшения.

Когда вы изначально решаете проблему, вы пишете код, чтобы просто получить ответ. Но по мере того, как вы набираетесь опыта, вы хотите, чтобы этот запутанный код выглядел лучше и проще. Это не только для того, чтобы стать лучшим программистом, но и для того, чтобы показать менеджерам по найму, что код, который вы собираетесь написать для их компании, не вызовет у всех мигрень. Давайте проведем рефакторинг, не так ли?

Посмотрите на это, решение намного более лаконично, чем раньше, и занимает всего четыре строки кода. Итак, теперь, когда у вас все получилось, что делать дальше.

9. ПРАКТИКА

Для программиста практика - это ключ к повседневной жизни, позволяющий не только держать свой разум знакомым с синтаксисом и методами, которые вы изучили, но и сохранять привычку мыслить критически. Отличный ресурс, который я показал ранее, - это codewars.com. Вы не только будете решать сложные проблемы, но и увидите решения других людей и то, как они думают, что делать. Я узнал много новых методов и процессов для решения проблем, о которых никогда бы не подумал, просто тратя, может быть, полчаса каждый день!