Проблема с динамическим массивом HackerRank - Ошибка выполнения в коде - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь решить эту проблему Dynamic Array на HackerRank. Это мой код:

#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'dynamicArray' function below.
#
# The function is expected to return an INTEGER_ARRAY.
# The function accepts following parameters:
#  1. INTEGER n
#  2. 2D_INTEGER_ARRAY queries
#

def dynamicArray(n, queries):
    lastAnswer = 0
    a = []
    array_result = []
    for k in range(n):
        a.append([])

    for i in queries:
        x = i[1]
        y = i[2]
        if i[0] == 1:
            seq = ((x ^ lastAnswer) % n)
            a[seq].append(y)
        elif i[0] == 2:
            seq = ((x ^ lastAnswer) % n)
            lastAnswer = a[seq][y]
            array_result.append(lastAnswer)
    return array_result

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

    first_multiple_input = input().rstrip().split()

    n = int(first_multiple_input[0])
    q = int(first_multiple_input[1])

    queries = [] # 1 0 5, 1 1 7, 1 0 3, ...

    for _ in range(q):
        queries.append(list(map(int, input().rstrip().split())))

    result = dynamicArray(n, queries)

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

    fptr.close()

Я получаю ошибку во время выполнения:

Трассировка (последний последний вызов):

Файл "Solution.py", строка 50, в

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

TypeError: объект' NoneType 'не может быть повторен

Может ли кто-нибудь помочь мне с этим, я не могу найти решение.

Это ввод:

2 5

10 5

1 1 7

1 0 3

2 1 0

2 1 1

Спасибо.

Обновление: похоже, этот ввод работает сейчас, благодаря @cireo, но код не работает для других тестовых случаев. В чем проблема с этим кодом?

1 Ответ

1 голос
/ 12 октября 2019

Ответ на ваш вопрос лежит в шаблоне, предоставленном hackerrank.

# The function is expected to return an INTEGER_ARRAY.

Вы также можете видеть, что result = dynamicArray(n, queries), как ожидается, вернет список целых чисел из map(str, result), который выдает исключение.

В вашем коде вы делаете print(lastAnswer), но вы, вероятно, хотите вместо него

+ ret = []
    ...
-     print(lastAnswer)
+     ret.append(lastAnswer)
+ return ret

.

Поскольку вы ничего не возвращаете,функция возвращает None по умолчанию, который нельзя повторить с помощью map.

...