Карта сайта

Это автоматически сохраненная страница от 12.10.2019. Оригинал был здесь: http://2ch.hk/b/res/205369623.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Сбт 12 Окт 2019 15:44:30
Двач срочно выручай... Нужно написать на питоне
Двач срочно выручай... Нужно написать на питонеДвач срочно выручай...
Нужно написать на питоне прогу считающую количество уникальных элементов массива. Вроде хуйня и проще простого, но вот незадача необходимо, чтобы она использовала не больше 5мб памяти.
import gc
a = (input() for i in range(int(input())))
u=[]
for s in a:
if s not in u:
u.append(s)
u=tuple(u)
print(len(u))
del(u,a)
gc.collect()
del(gc)
exit(0)
Такой код тратит ровно 5 мб, нужно хотя б 4.99...
Уже перепробовал как можно заметить всё, ничего не могу поделать.
с меня как обычно нихуя



Сбт 12 Окт 2019 15:44:48
Бампибомба

Сбт 12 Окт 2019 15:45:34
я конечно в програмирование ничего не понимаю но можешь убрать пробелы

Сбт 12 Окт 2019 15:45:41
>>205369623 (OP)

Загружай данные в set. И всё.

Сбт 12 Окт 2019 15:45:43
>>205369623 (OP)
Пиши на си

Сбт 12 Окт 2019 15:45:47
Бампакака

Сбт 12 Окт 2019 15:46:14
>>205369678
Это обязательный пунк, что нужен питон

Сбт 12 Окт 2019 15:46:15
[email: sage]

>>205369623 (OP)
Как меня заебали школьники "кодеры" и вкатывальщики в родном /b/.
Как щенят неразанных расплодилось.

Сбт 12 Окт 2019 15:46:45
>>205369676
Set супердохуя жрёт

Сбт 12 Окт 2019 15:48:04
>>205369735

Тогда проверяй уникальность на этапе загрузки.

Сбт 12 Окт 2019 15:50:14
>>205369795
a = set(input() for i in range(int(input())))
print(len(a))
del a
Жрёт 6мб

Сбт 12 Окт 2019 15:51:20
>>205369795
Тогда 2 массива нужно, а это смерть скорее всего

Сбт 12 Окт 2019 15:52:36
Бампислав

Сбт 12 Окт 2019 15:56:34
Бампич

Сбт 12 Окт 2019 15:56:56
>>205369933
a = set()
for i in range(int(input()):
if i not in a:
a.append(i)

in для set о(1). По времени норм. Для list будет o(n).

Сбт 12 Окт 2019 16:02:09
>>205370222
Трипл кста. По времени то всё хорошо, а вот по памяти 6 с копейками вышло, а нужно меньше 5( У меня и мой вариант по времени укладывался но там памяти он ровно 5 занял...

Сбт 12 Окт 2019 16:03:31
Бумпашакалака

Сбт 12 Окт 2019 16:04:02
>>205370443
Ну ты a = [] сделай. Оно не может использовать памяти больше, чем твой вариант.

Как ты смотришь сколько памяти использовано?

Сбт 12 Окт 2019 16:05:03
>>205369623 (OP)
ты идиот или да?

1) память меряется всегда применительно к размеру входных данных. приводишь какие-то 5mb, которые хуй пойми откуда.
2) память считают обычно в пике, а не по окончанию выполнения.
если ты переводишь list в tuple, то нахуя ?

Сбт 12 Окт 2019 16:06:52
>>205370588
Входные данные для теста одинаковые... Ну считают на пике, дальше что? Tuple меньше памяти занимает и я вместо листа записываю tuple, чтобы сэкономить память

Сбт 12 Окт 2019 16:09:48
a = []
for i in range(int(input())):
b=input()
if b not in a:
a.append(b)
print(len(a))
del(a,b)
Например этот вариант с моими, одинаковыми входными данными сжирает 5.03. Если без del(a,b), то 5.01

Сбт 12 Окт 2019 16:10:06
Бампислав

Сбт 12 Окт 2019 16:10:52
памб

Сбт 12 Окт 2019 16:11:09
пмаб

Сбт 12 Окт 2019 16:11:27
Хуямп

Сбт 12 Окт 2019 16:11:55
>>205370803
А сколько данных то?

Сбт 12 Окт 2019 16:12:42
>>205370901
Много... Точное число сказать не могу, но оно фиксированное точно.

Сбт 12 Окт 2019 16:12:44
>>205370803

Где данные-то, чушок?

Сбт 12 Окт 2019 16:14:31
>>205370931
Из тестовой проги института идут в инпут просто.

Сбт 12 Окт 2019 16:17:26
>>205370930

Тип?

Сбт 12 Окт 2019 16:17:41
>>205371152
Строки

Сбт 12 Окт 2019 16:19:03
>>205371165

Длина строк? Наверное, имеет смысл считать хэши и хранить их.

Сбт 12 Окт 2019 16:21:04
>>205371230
Ну примерно как поисковой запрос.

Сбт 12 Окт 2019 16:22:30
>>205370679
u = tuple()
for s in a:
if s not in u:
u = u + (s,)
print(len())

/thread

Сбт 12 Окт 2019 16:22:51
>>205371338

Тогда считай хэши. md5 хватит. Эффектами возможных коллизий можно пренебречь.

Сбт 12 Окт 2019 16:24:40
>>205371442
С хэшами по времени могила(

Сбт 12 Окт 2019 16:26:05
>>205371541

Тогда выкладывай полное условие и тестовые данные. Или иди нахуй

Сбт 12 Окт 2019 16:32:01
Формат ввода
В первой строке указано число
n

5
0
0
0
0
0
— количество запросов, среди которых нужно найти число уникальных. В каждой из
n
последующих строк содержится по одному запросу. Длина каждого запроса не превосходит
1
0
0
0
символов.
Формат вывода
Необходимо вывести одно число — оценку количества уникальных запросов. Оценка не обязана быть целой.

Сбт 12 Окт 2019 16:35:00
Bump

Сбт 12 Окт 2019 16:38:19
>>205371883

Так всё-таки числа? Не строки? Ты уже определись что тебе нужно.
Отрицательные числа возможны?
Если числа в диапазоне [0-500000], то можешь сделать массив нулевой. Каждый бит в нём соответствует возможному числу. Памяти надо 64К. Дальше отмечай встреченные. Как посчитать полученные результат сам додумаешься, надеюсь.

Сбт 12 Окт 2019 16:39:23
>>205372133
Первое инпут - число в котором кол-во эл-тов массива. Дальше уже сами строки

Сбт 12 Окт 2019 16:40:38
>>205371883

Маня, ты не знаешь про pastebin? Нахуй кому надо твой поехавший говнокод читать

Сбт 12 Окт 2019 16:44:42
>>205369623 (OP)
какой тебе ML, маня, ты даже элементарное решить не можешь

Сбт 12 Окт 2019 16:45:40
>>205372462
блять ну реши если умный такой. Все задания решил, а эту хуйню не могу единственную из-за ебанутого ограничения в 5 мб

Сбт 12 Окт 2019 16:51:43
бамп

Сбт 12 Окт 2019 16:57:40
бамп

Сбт 12 Окт 2019 17:00:14
бамп

Сбт 12 Окт 2019 17:23:19
Изи же
Просто сначала отсортируй - подойдёт даже самый простая сортировка пузырьком
А затем сравнивай только соседние элементы

Сбт 12 Окт 2019 17:56:21
len(list(set(data)))
/Thred

Сбт 12 Окт 2019 18:01:28
генераторные выражения используй



← К списку тредов