Александр
Пытался сам что то найти но ни как не выходит)
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
Или я языки путаю?
Snusmumriken
table.sort(words, function(a, b) return a > b end)
И что это даст? Ну, то есть если у нас в списке просто цифры встречания, мы получим только то, сколько слов встретилось, но не эти сами слова.
Snusmumriken
А индекс тут при чём?
Snusmumriken
Или ты хочешь отсортировать слова-строки по длине?
Snusmumriken
Нет, table.sort как раз сортирует только значения, индекс тут уже вообще не важен. А ещё, в таблице words отсутствует числовой индекс. Это хеш. Как раз для подсчёта.
fgntfg
Нет, ты сортируешь ассоциативный массив по значениям
Snusmumriken
Нет, я сортирую массив-список : ) Кей-валуй-хеш невозможно сортировать, там нет индекса вообще.
Snusmumriken
Как я тебе эту штуку отсортирую? Порядка тут нет, он определяется хеш-функцией. Добавление ключа может перемешать его нафиг, а вручную выставить позицию не получится.
fgntfg
Ты меня не понимаешь :(
Snusmumriken
Я понимаю, что ты хочешь отсортировать хеш. Но нет, так не получится.
fgntfg
Хе-хе. Можно через shift. Сначала искать максимум, а потом его выкидывать.
Snusmumriken
Можно, но такие извращения, тем более на проде, ни к чему )) А с хешами вот какая история, они не бывают упорядочены. Нужно трансформировать в список.
Snusmumriken
Мы могли изначально выдирать слова в такой же список, но пришлось бы изгаляться с поиском перебором. Хеш быстрее. Это просто маленький трейд памяти на скорость, плюс понятность-интуитивность.
Snusmumriken
Я очень благодарен, чуть позже разберу
Куда устраиваешься хоть? : ) Не боись, работу тырить никто не будет.
Александр
В компанию по разработке антифрод ПО
Александр
Знания в антифрод есть
Александр
А вот навыков программирования нет совсем
Snusmumriken
А вот это зря. Если тебя сразу пошлют писать скрипты - будет жопа.
Snusmumriken
Так-то проганье можно худо-бедно натянуть за пол годика-годик, но только с нормальным стимулом и усердием. Когда параллельно требуют прогальных задач за конкретное фиксированное время - будет сложно.
Snusmumriken
Всё, я - спать, будут вопросы - задашь тут или в личку, вечером отвечу.
vvzvlad
Ну все, маркетологи пришли
Anonymous
Всем привет Парни, вопрос не по тематике канала конечно, но мож кто сталкивался... скажите пожалуйста,как можно найти все копии файла в интернете?
mva
0) стать богом 1) сказать "хочу знать местоположение всех копий этого файла! да будет так!"
Pavel
Всем привет Парни, вопрос не по тематике канала конечно, но мож кто сталкивался... скажите пожалуйста,как можно найти все копии файла в интернете?
Погуглить какую нить уникальную его часть. Название. Или текст оттуда. Если это текст - то можно поискать на всякий проверках на уникальность
Anonymous
.apk файл
Anonymous
Один знакомый программист говорил что можно по размеру
Pavel
.apk файл
По названию. Или по чексумме. Но не уверен что оно вменяемо индексируется
Anonymous
У него со временем беда
Anonymous
mva
если ты не понял саркастического намёка, то переведу: у тебя проблема в постановке вопроса
mva
ВСЕ копии (не будучи богом) ты не найдёшь априори
Highly Likely
ВСЕ копии (не будучи богом) ты не найдёшь априори
Чтобы найти все копии файла нужно всего лишь воспользоваться....
Snusmumriken
Всем привет Парни, вопрос не по тематике канала конечно, но мож кто сталкивался... скажите пожалуйста,как можно найти все копии файла в интернете?
Встречный вопрос: как узнать все сайты в интернете? На самом деле это не так сложно, правда, данные будут слишком актуальными.
mva
Встречный вопрос: как узнать все сайты в интернете? На самом деле это не так сложно, правда, данные будут слишком актуальными.
1) никак: корневые NS, как, впрочем, и TLD'шные (и далее) не отдают зоны рекурсивно (обычно) 2) не все полученные домены - сайты. 3) пока будешь проверять - состаришься :)
Snusmumriken
На тему волшебных "источников" — каких конкретно? Чем они должны быть? Можно поискать: 1. На файлообменниках/открытых FTP. Смотри файлообменники, позволяющие искать внутри себя; 2. На торрентах. Там, правда, поиск уникальный, поэтому нужен ключ, или воспользоваться какой-нибудь искалкой по пирам; 3. Самое очевидное — в гугле. Руками качать каждый файл, проверять пригодность. Интернет — это такая штука, где (кто бы мог подумать), нету централизации. Соответственно, нету волшебного места с индексом каждого файла. Нужно искать конкретные.
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
mva
1) во-первых, обратка на адресе мало того, что может быть не прописана, так там ещё и всё что угодно может быть прописано
Snusmumriken
Ну, это пробъёт все основные маршрутизируемые хосты в сети : )