Рубрики
Без рубрики

HackErrank: круговое ротация массива в Python

Как я решил мою ежедневному рекомендуемую проблему HackeRrank Challenge и небольшую разгламу на проблему специфики. Помечено Python, Python3, программирование, HackeRrank.

Так что я на HackeRrank, и ОСТОРОЖНО, СПОЙЛЕРЫ

https://www.hackerrank.com/challenges/circular-array-rotation/problem?utm_campaign=challenge-recommendation&utm_medium=email&utm_source=24-hour-campaign

Это взяло у меня около пяти минут.

Это не совсем о том, как я решил проблему, хотя я кратко расскажу об этом.

https://stackoverflow.com/questions/2150108/efficient-way-to-shift-a-list-in-python

Я спросил себя/Google “Python Array Shift справа” и напомнил, что коллекции и Дейко существует. Я использовал их раньше. Python имеет так много классных инструментов, о которых я забываю все время. Вы не можете наказать кого-то за то, что не помню каждую вещь.

def circularArrayRotation(a, k, queries):
    from collections import deque 
    items = deque(a) 
    items.rotate(k)
    ret_list = []
    for q in queries:
        #print(items[q])
        ret_list.append(items[q])
    return ret_list

Теперь, что-то интересное, что вы отметите, что я прокомментировал оператор печати в цикле.

Когда я впервые написал функцию, она выглядела так:

def circularArrayRotation(a, k, queries):
    from collections import deque 
    items = deque(a) 
    items.rotate(k)
    ret_list = []
    for q in queries:
        print(items[q])

Теперь это именно то, к которому вызывается описание проблемы.

«Для каждого запроса напечатайте значение элемента при индексе вращающегося массива на новой строке».

Я думал, что сделал это, но тогда ухороженный компилятор Hackerrank Compiler/Tester

Compiler Message
Runtime Error
Error (stderr)
Traceback (most recent call last):
  File "Solution.py", line 42, in 
    fptr.write('\n'.join(map(str, result)))
TypeError: 'NoneType' object is not iterable
Input (stdin)
3 2 3
1 2 3
0
1
2

Итак, я иду «хммм …» и проверил главную:

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    nkq = input().split()

    n = int(nkq[0])

    k = int(nkq[1])

    q = int(nkq[2])

    a = list(map(int, input().rstrip().split()))

    queries = []

    for _ in range(q):
        queries_item = int(input())
        queries.append(queries_item)

    result = circularArrayRotation(a, k, queries)

    fptr.write('\n'.join(map(str, result)))
    fptr.write('\n')

    fptr.close()

Важная часть такова:

result = circularArrayRotation(a, k, queries)

Кажется, они хотели возвращение ценность! Ага! Я тогда понял, что я сделал не так!

Видите, отладки легко: D

Так Я прокомментировал оператор печати и построил список предметов для возврата данных параметров и BAM! 100% на тестах.

Пару ночью назад я пошел от как звание 900 000, чтобы заниматься 600 000 на HackeRrank. Только сейчас я переехал до 544328.

Честно говоря, всю эту дискуссию приносит вещь, которую я буду ярость/блог в ближайшее время, если кто-то не делает этого до меня, но в основном это в основном по поводу философских различий в стиле старых и новостных учреждений.

Давным-давно у нас не было Hyper-Fast Internet, чтобы посмотреть, и разработчики действительно должны были действительно знать все гипер-эффективно или иметь возможность ссылаться на вещи в физических книгах.

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

Это отличается от, скажем, инженерии утилиты Дейко и вращать самостоятельно. Но, HackeRrank не просил меня инженерировать его с нуля. Они просто просят вас решить проблему.

Это изменяет возможность взглянуть на вещи? Вы действительно программисты, если вы полагаетесь на предварительно сделанные инструменты?

Я думаю: после того, как у вас есть возможность создавать инструменты самостоятельно, вы GreenLit, чтобы использовать предварительно сделанные инструменты. Часто проблема для меня – «какие инструменты использовать?», Но до сих пор Python был этим.

И, Ну, технически, гугл тоже.

Оригинал: “https://dev.to/therealdarkmage/hackerrank-circular-array-rotation-in-python-52e2”