Чтобы начать это задание, я хотел бы написать алгоритмы для Hopfield Net или Hanoi Tower, и я напишу, только немного позже. Прямо сейчас я бэкэнд-разработчик, стремящийся стать разработчиком полного стека, работающий с Django, React JS и другими технологиями на данный момент. У меня новая работа, и я еще не освоил мир Python / Javascript. Подводя итог, мне нужно поработать над своими навыками программиста.

Помня об этом, я решил потратить последний месяц на отработку навыков программирования на веб-сайте CodeFights. CodeFights - отличный инструмент для обучения и предлагает различные виды практики, такие как:

  • Практика собеседования: упрощает подготовку к собеседованию по техническим вопросам.
  • Корпоративный бот: ваш шанс бросить вызов роботам-программистам, обученным инженерами ведущих технологических компаний.
  • Аркада: представляет собой серию заданий для открытия новых уровней и локаций.
  • Лицом к лицу. Сражение с друзьями и незнакомцами.
  • Турниры. Соревнования по программированию в реальном времени (лучший вариант).

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

  1. Для данного года верните столетие, в котором он находится. Первый век охватывает период с 1 года до 100 года включительно, второй - от 101 года до 200 года включительно и т. Д.
My Result:
def centuryFromYear(year):
    if year % 100 == 0:
        return year/100
    else:
        return int(year/100) + 1

Кажется, это просто? Но немного поднять уровень

2. Для десятичного целого числа n найдите такое целое число k ≥ 2, чтобы представление n в базе k имело максимально возможное количество нулей. Если ответов несколько, выведите самый маленький.

  • Для n = 9 вывод должен быть
    maxZeros(n) = 2.
    9 = 10012 = 1003 = 214...
    Если вы попробуете все другие основы, вы увидите, что максимально возможное количество нулей в этих представлениях равно 2, поэтому ответ k = 2.
Not My Result
def maxZeros(n):
    maxZ = -1
    maxB = -1
    for base in range(2, n+1):
        num = n 
        tot = 0
        while num > 0:
            if num % base == 0:
                tot += 1
            num //= base
        if tot > maxZ:
            maxZ = tot 
            maxB = base
            
    return maxB

Если вы думаете, что эти задачи были легкими, представьте, что у вас есть 10 минут, чтобы решить 3 задачи с той же степенью сложности, и не забудьте о соревновании 4 или 5 других разработчиков.

Сначала вы не выполните 3 задачи, вы прогрессируете постепенно, и когда вы это видите, цель состоит не просто в том, чтобы решить проблемы, а в том, чтобы решить их наилучшим образом. И это когда вы исследуете и проверяете, как ваши оппоненты справляются с задачей, и просматриваете документацию, форумы и т. Д.

Вот и все, присоединяйтесь ко мне на CodeFights!