![]() |
|
Курилка Автомобили, хобби, спорт. И Garik77 с металлоискателем. Коммерция запрещена. |
![]() |
|
Опции темы |
![]() |
#181 |
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]()
HappySoftX, проблема в том, что знание не равно интеллект, даже имея примеры кода, нейросеть не придумывает алгоритм решения, а просто использует самый частый вариант
![]() код будет рабочий (не всегда), но обязательно максимально ресурсоёмким и ещё повальное увлечение питоном открыло двери для "нажимателей кнопок" в область разработки и при этом резко снизило качество решений |
![]() |
![]() |
![]() |
#182 | |
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,926
Получил(а) "Спасибо": 2,516
Нарушения: 0/0 (0)
Репутация: 80425
|
![]() Цитата:
Ресурсоемким, возможно. В моем случае речь шла про с++ а не про питон. |
|
![]() |
![]() |
![]() |
#183 | |
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]() Цитата:
и вот на выходе ты получаешь не тот результат, который ожидал попроси написать код для разметки текстовых строк по вхождениям произвольного количества наиболее частотных подстрок в любой последовательности в проверяемую строку пример, строка / метки покупка однушки в москве / квартира москва продажа продажа доли в квартире / продажа куплю часть дома под московой /продажа мо и подобных строк около 100к ну или совсем простая задача необходимо проверить наличие номера телефона, в любом формате написания в текстовой строке |
|
![]() |
![]() |
![]() |
#184 |
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,926
Получил(а) "Спасибо": 2,516
Нарушения: 0/0 (0)
Репутация: 80425
|
![]()
burunduk, ты просто ужасно формулируешь задание.
![]() Код:
String FindPhone(String Text) { // Преобразуем VCL String в std::string для удобства работы std::string text = AnsiString(Text).c_str(); // Строка для хранения текущих цифр std::string digits; // Проходим по каждому символу строки for (char c : text) { if (isdigit(c)) { // Если символ является цифрой, добавляем его в строку digits digits.push_back(c); } else if (c == '(' || c == ')' || c == '-' || c == ' ') { // Пропускаем символы скобок, тире и пробелы continue; } else { // Если символ не является цифрой и длина строки digits равна 11 if (digits.size() == 11 && digits[0] == '8') { // Возвращаем найденный номер телефона как строку типа String return String(digits.c_str()); } // Очищаем строку digits для поиска следующего потенциального номера digits.clear(); } } // Проверка на случай, если номер телефона находится в конце строки if (digits.size() == 11 && digits[0] == '8') { return String(digits.c_str()); } // Если строка не содержит номер телефона, возвращаем пустую строку return ""; } При отправке строки = "бла 870132 бла бла 8( 701)-233-23 - 34 бла бла 8282-132" возвращает 87012332334 можно конечно придраться к коду и говорить про +7 но я сам задал ему такие условия, найти число 11 знаков начинающееся с 8. В зависимости от конкретных требований всегда можно изменить. Как по мне справился на отлично со второй попытки. Первая была регулярные выражения. |
![]() |
![]() |
![]() |
#185 |
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]()
двойка за решение
во-первых, перебирать по символу строку неопределённой длины, когда этих строк больше 100к слишком долго во-вторых, а что насчёт строки: коттеджный посёлок в москве за 830000000 00 руб или срочно куплю комнату в коммуналке звоните (495)789-23-45 |
![]() |
![]() |
![]() |
#186 |
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,926
Получил(а) "Спасибо": 2,516
Нарушения: 0/0 (0)
Репутация: 80425
|
![]()
Да и какое решение должно быть? Ну чтобы не перебирать по символу? Мне правда очень интересно.
|
![]() |
![]() |
![]() |
#187 |
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]()
HappySoftX, как вариант, сначала исключить строки не содержащие нужного количества цифр (это примерно 3/4, для этого кстати совсем не обязательно перебирать строки посимвольно), затем стоит исключить то что касается денег, различных атикулов, ID, а вот потом можно регулярками разбирать
|
![]() |
![]() |
![]() |
#188 | |
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,926
Получил(а) "Спасибо": 2,516
Нарушения: 0/0 (0)
Репутация: 80425
|
![]() Цитата:
Во первых в твоем задании было найти телефон в строке, а не в строках. Так что 90% твоего поста вообще ни о чем. Во вторых у тебя было в любом формате. Регулярки не справятся. Я специально в демо написал между цифрами пробелы, дефисы, скобки. В третьих занимаясь дополнительными проверками ты только увеличиваешь время обработки. Ты как нужное количество цифр собрался считать без посимвольного перебора строки? А потом после того как посчитал и набрал нужное количество заново обрабатывать строку? И да проход посимвольно по строке гораздо быстрее чем регулярки. Код выше обрабатывает строку за один прогон. То есть он работает максимально быстро. |
|
![]() |
![]() |
![]() |
#189 | |||
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]() Цитата:
и про 100к строк на строку выше есть упоминание ты просто не в курсе что такое регулярки Цитата:
Цитата:
могу даже облегчить тебе задачу PHP код:
![]() P.S. и ещё для того что бы получить количество цифр с помощью регулярки совсем не обязательно перебирать символы, можно использовать готовые функции, например, в том же SQL REGEXP_COUNT ![]() |
|||
![]() |
![]() |
![]() |
#190 |
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 905
Сказал(а) спасибо: 1,099
Получил(а) "Спасибо": 2,159
Нарушения: 0/0 (0)
Репутация: 757769
|
![]() |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отзывы: литературный конкурс "Первый 2024-ый, святочный"" | valergapeev | Курилка | 113 | 02.02.2024 20:50 |
Литературный конкурс "Первый 2024-ый, святочный"" | valergapeev | Курилка | 11 | 23.01.2024 21:42 |
Мегафон, тарифы "зеленый" и "звони легко", безлимит от 60 рублей в месяц | dobroset | Биржа услуг | 16 | 19.03.2023 23:49 |
Ну и зачем сделали все подразделы "Не про работу" только для активных пользователей? | Кокетыч | О форуме | 113 | 23.07.2020 17:28 |