Size: a a a

StartAndroid Ru Chat

2020 May 04

G

Galadriel in StartAndroid Ru Chat
Almaz Kh
А как реализовать по кускам сравнение в хэш функции . Вообще мне по итогам нужно количество уникальных значений в файле)
Полиномиальный хеш позволит хешировать всю строку имея куски хоть из 1 символа
источник

СП

Сергей П. in StartAndroid Ru Chat
Galadriel
Ты хочешь в мап закидывать захешированную строку? Но ты её считать не можешь, так как она в память не залазит
Залезет.
Там 100500 строк ограгиченной длины
источник

AK

Almaz Kh in StartAndroid Ru Chat
Galadriel
Ты хочешь в мап закидывать захешированную строку? Но ты её считать не можешь, так как она в память не залазит
Читать по линии и сувать в сет или другую структуру не работает
источник

G

Galadriel in StartAndroid Ru Chat
Сергей П.
Залезет.
Там 100500 строк ограгиченной длины
Нет, неограниченной длины, он же говорил. Весь файл может быть 1 строкой
источник

СП

Сергей П. in StartAndroid Ru Chat
Galadriel
Нет, неограниченной длины, он же говорил. Весь файл может быть 1 строкой
А разделитель строк какой?
источник

G

Galadriel in StartAndroid Ru Chat
Ну наверняка дефолтный '\n'
источник

AK

Almaz Kh in StartAndroid Ru Chat
Перенос строки
источник

СП

Сергей П. in StartAndroid Ru Chat
У нас нет ограничения на вывод промежуточных итогов в файл
источник

AK

Almaz Kh in StartAndroid Ru Chat
После каждого значения новая строка такой весь файл . Тол ко там больше 20 миллионов строк
источник

СП

Сергей П. in StartAndroid Ru Chat
(1), строки бьем в другой файл вместе с ее хэшем. (2)Хэши грузим в память, они влезут. Можно брать короткие, байта по 4, но тогда придется с коллизиями вручную разбираться (3) для каждого хэша считаем повторяемость любвм способом
(4) выводим результаты последовательного чтения промеж.файла  в третий файл в формате "хэш, строка, величина  повторяемости для данного хэша", игнорируя строки с тем хэшем что уже были. Готово.
источник

СП

Сергей П. in StartAndroid Ru Chat
Хорошее задание для джуна, тобко надо учиться такое самому конечно.
Больше фантазит.
источник

AK

Almaz Kh in StartAndroid Ru Chat
Попробую, спасибо .
источник

AK

Almaz Kh in StartAndroid Ru Chat
только не пойму хватит ли памяти диска на другой файл, он же очень толстый сам по себе
источник

СП

Сергей П. in StartAndroid Ru Chat
Если и хэши не влезут - придется их тоже в файлы. Правило простое - не лезет в память-кидаем в файл
источник

СП

Сергей П. in StartAndroid Ru Chat
Almaz Kh
только не пойму хватит ли памяти диска на другой файл, он же очень толстый сам по себе
Если ограничения по размеру диска в задаче нет - то это неважно. Если нет хотя бы столько же места - хотя бы под сжатый файл - задача нереализуема за разумное время, в лоб там будет как бы не O(n^2)
источник

СП

Сергей П. in StartAndroid Ru Chat
Причем обращений к диску
источник

СП

Сергей П. in StartAndroid Ru Chat
Хех. Где бы таких задач пару сотен набрать - пощелкать на досуге
источник

LK

Leonid Kharin in StartAndroid Ru Chat
спасибо
источник

G

Galadriel in StartAndroid Ru Chat
Сергей П.
Если ограничения по размеру диска в задаче нет - то это неважно. Если нет хотя бы столько же места - хотя бы под сжатый файл - задача нереализуема за разумное время, в лоб там будет как бы не O(n^2)
Это неадекватное решение) Все гораздо проще.
Решение: идём по файлу, считываем по символу и считаем для строки полиномиальный хеш(так сможем захешировать имея только кусок), ну и кладём в хешсет. Ответ — размер сета.  И всё, тут писать минут 5-10
источник

G

Galadriel in StartAndroid Ru Chat
Решение за линию
источник