Александр
Пытался сам что то найти но ни как не выходит)
Snusmumriken
Ну дай задачку, ответ будет в двух формах: подсказки или сразу ответ.
Snusmumriken
Ща запостю
Snusmumriken
"На вход - текст txt - используйте для примера http://lib.ru/PROZA/ASTAFIEW/r_life.txt. На выходе - топ 100 встречаемых слов Код реализовать на языке Lua"
Snusmumriken
Два вопроса:
1. Используются ли сторонние библиотеки (вроде utf8)?
2. Если нет — учитывается ли регистр?
Snusmumriken
Потому что задачка, на самом деле, на простейшие регулярные выражения и парсинг.
Anonymous
Ну вроде можно простым подсчётом если кейс сенситив делать
Snusmumriken
Вот именно. Удаляем все знаки препинания, запиливаем табличку, загоняем в неё ключами слова, а значениями — количество вхождений.
Александр
Сторонние библиотеки не не использовать
Александр
Регистр не учитывается
fgntfg
Я такую в awk решу.
Валентин
а я в 1с
Валентин
но надо на луа товарищу
Александр
Нужно именно в lua
Snusmumriken
Нужно именно в lua
Самое тупое решение в лоб.
https://pastebin.com/nN47xr5k
Но лучше бы ты писал сам. Ссылка продержится две недели, потом код удалится.
Snusmumriken
Вывод в консоль соответствующий. Если ты на линуксе, пишешь в файл, или работаешь в 1251-кодировке - удалишь первую строку, там переключение вендовой кодовой страницы через chcp 65001, чтобы русский текст выводился.
Snusmumriken
Если тебе нужно чтение текста из файла — сделаешь сам, это просто и есть в учебнике Programming in Lua, и принципиально не отличается, например, от C.
Вывод в файл — аналогично.
Александр
Я очень благодарен, чуть позже разберу
Snusmumriken
Но основная часть — регулярные выражения, тебе бы подтянуть. Это такая штука, которая одновременно является универсальной и работает во всех языках, а во вторых оно реально нужно, особенно при парсинге текстов.
Snusmumriken
А ещё, кстати, это задание неплохо заставляет тебя понять что такое unicode, и с чем его едят. Не забудь сохранить сам скрипт в кодировке utf8, или в той в которой тебе дан файл.
Кстати, при скачке, тот файл сохраняется вообще в win1251, так что внимательно, иначе не будет работать ловеркейс.
fgntfg
local list = {}
for word, count in pairs(words) do
ist[#list + 1] = {word, count}
end
fgntfg
Зачем?
fgntfg
for i = 100, #list do
list[i] = nil
end
fgntfg
И это
Snusmumriken
Ну, надо подсчитать сто самых распространённых слов.
Snusmumriken
Проще всего — запихнуть в список и отсортировать.
fgntfg
Можно сразу сортировать
Snusmumriken
Как? : )
Lucky
зипнуть?
Snusmumriken
Ну я тут и зипнул фактически {слово, кол-во}.
Lucky
и утощить словарь?
fgntfg
table.sort(words, function(a, b) return a > b end)
fgntfg
А еще есть map и reduce
fgntfg
Кажется
fgntfg
Или я языки путаю?
fgntfg
Snusmumriken
А индекс тут при чём?
Snusmumriken
Или ты хочешь отсортировать слова-строки по длине?
Snusmumriken
Нет, table.sort как раз сортирует только значения, индекс тут уже вообще не важен.
А ещё, в таблице words отсутствует числовой индекс. Это хеш. Как раз для подсчёта.
fgntfg
Нет, ты сортируешь ассоциативный массив по значениям
Snusmumriken
Нет, я сортирую массив-список : )
Кей-валуй-хеш невозможно сортировать, там нет индекса вообще.
Snusmumriken
Как я тебе эту штуку отсортирую? Порядка тут нет, он определяется хеш-функцией. Добавление ключа может перемешать его нафиг, а вручную выставить позицию не получится.
fgntfg
Ты меня не понимаешь :(
Snusmumriken
Я понимаю, что ты хочешь отсортировать хеш. Но нет, так не получится.
fgntfg
Хе-хе. Можно через shift. Сначала искать максимум, а потом его выкидывать.
Snusmumriken
Можно, но такие извращения, тем более на проде, ни к чему ))
А с хешами вот какая история, они не бывают упорядочены. Нужно трансформировать в список.
Snusmumriken
Мы могли изначально выдирать слова в такой же список, но пришлось бы изгаляться с поиском перебором. Хеш быстрее. Это просто маленький трейд памяти на скорость, плюс понятность-интуитивность.
Александр
В компанию по разработке антифрод ПО
Александр
Знания в антифрод есть
Александр
А вот навыков программирования нет совсем
Snusmumriken
А вот это зря. Если тебя сразу пошлют писать скрипты - будет жопа.
Snusmumriken
Так-то проганье можно худо-бедно натянуть за пол годика-годик, но только с нормальным стимулом и усердием. Когда параллельно требуют прогальных задач за конкретное фиксированное время - будет сложно.
Snusmumriken
Всё, я - спать, будут вопросы - задашь тут или в личку, вечером отвечу.
vvzvlad
Ну все, маркетологи пришли
Anonymous
Всем привет
Парни, вопрос не по тематике канала конечно, но мож кто сталкивался... скажите пожалуйста,как можно найти все копии файла в интернете?
mva
0) стать богом
1) сказать "хочу знать местоположение всех копий этого файла! да будет так!"
Pavel
Anonymous
.apk файл
Anonymous
Один знакомый программист говорил что можно по размеру
Pavel
Pavel
.apk файл
По названию. Или по чексумме. Но не уверен что оно вменяемо индексируется
Anonymous
У него со временем беда
Anonymous
mva
если ты не понял саркастического намёка, то переведу: у тебя проблема в постановке вопроса
mva
ВСЕ копии (не будучи богом) ты не найдёшь априори
Snusmumriken
Snusmumriken
На тему волшебных "источников" — каких конкретно? Чем они должны быть? Можно поискать:
1. На файлообменниках/открытых FTP. Смотри файлообменники, позволяющие искать внутри себя;
2. На торрентах. Там, правда, поиск уникальный, поэтому нужен ключ, или воспользоваться какой-нибудь искалкой по пирам;
3. Самое очевидное — в гугле. Руками качать каждый файл, проверять пригодность.
Интернет — это такая штука, где (кто бы мог подумать), нету централизации. Соответственно, нету волшебного места с индексом каждого файла. Нужно искать конкретные.
Snusmumriken
mva
ШТО
mva
что значит "пробиваем"?
// могу ещё раз повторить про то, что ОБЫЧНО NS'ы не отдают рекурсивно зону. Так что по IP ты хрен узнаешь все сайты не нём
mva
(если только админ NS'ов не дебил)
Snusmumriken
Ты типа такой берёшь и проверяешь каждый ipv4:
for i = 1, 255 do
for j = 1, 255 do
for k = 1, 255 do
for l = 1, 255 do
local ip = (%d.%d.%d.%d):format(i, j, k, l)
local h = socket.dns.tohost(ip)
if h then print(h) end
end
end
end
end
mva
niet
c
mva
1) во-первых, обратка на адресе мало того, что может быть не прописана, так там ещё и всё что угодно может быть прописано
Snusmumriken
Ну, это пробъёт все основные маршрутизируемые хосты в сети : )