Я решаю следующую проблему на сайте кодирования. Это не подходит для некоторых краевых случаев на тестах (скрытые тесты), но я не уверен, что это такое. Кто-нибудь видит какие-либо проблемы с этим?Prime Number Generation Puzzle (Edge Cases)
Задача: Пусть A
является строкой всех простых чисел, последовательно сжимаемых вместе (то есть 235711131719...
). С учетом индекса n
, верните строку из 5 цифр, где первая цифра находится в индексе n
в A.
например. foo(0) => 23571
и foo(10) => 19232
Вот мой код:
def gen_primes():
A = {}
i = 2
while True:
if i not in A:
yield i
A[i * i] = [i]
else:
for p in A[i]:
A.setdefault(p + i, []).append(p)
del A[i]
i += 1
def answer(n):
counter = 0
prime_string = ""
for p in gen_primes():
if (counter >= n):
prime_string += str(p)
counter += len(str(p))
if len(prime_string) >= 5:
break
return prime_string[:5]
Выглядит хорошо для меня.Может быть, это медленное явление для краевых случаев, а сайт, который вы используете, работает в «тайм-ауте»? Таким образом, есть специальный сайт для просмотра кода. – Matthias
сделал мой ответ, решив ваш вопрос? – lhk