![]() |
|
|||||||
| Курилка Автомобили, хобби, спорт. И Garik77 с металлоискателем. Коммерция запрещена. |
![]() |
|
|
Опции темы |
|
|
#181 |
|
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 0/0 (0)
Репутация: 757769
|
HappySoftX, проблема в том, что знание не равно интеллект, даже имея примеры кода, нейросеть не придумывает алгоритм решения, а просто использует самый частый вариант
![]() код будет рабочий (не всегда), но обязательно максимально ресурсоёмким и ещё повальное увлечение питоном открыло двери для "нажимателей кнопок" в область разработки и при этом резко снизило качество решений |
|
|
|
|
|
#182 | |
|
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,961
Получил(а) "Спасибо": 2,557
Нарушения: 0/0 (0)
Репутация: 80425
|
Цитата:
Ресурсоемким, возможно. В моем случае речь шла про с++ а не про питон. |
|
|
|
|
|
|
#183 | |
|
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 0/0 (0)
Репутация: 757769
|
Цитата:
и вот на выходе ты получаешь не тот результат, который ожидал попроси написать код для разметки текстовых строк по вхождениям произвольного количества наиболее частотных подстрок в любой последовательности в проверяемую строку пример, строка / метки покупка однушки в москве / квартира москва продажа продажа доли в квартире / продажа куплю часть дома под московой /продажа мо и подобных строк около 100к ну или совсем простая задача необходимо проверить наличие номера телефона, в любом формате написания в текстовой строке |
|
|
|
|
|
|
#184 |
|
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,961
Получил(а) "Спасибо": 2,557
Нарушения: 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
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 0/0 (0)
Репутация: 757769
|
двойка за решение
во-первых, перебирать по символу строку неопределённой длины, когда этих строк больше 100к слишком долго во-вторых, а что насчёт строки: коттеджный посёлок в москве за 830000000 00 руб или срочно куплю комнату в коммуналке звоните (495)789-23-45 |
|
|
|
|
|
#186 |
|
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,961
Получил(а) "Спасибо": 2,557
Нарушения: 0/0 (0)
Репутация: 80425
|
Да и какое решение должно быть? Ну чтобы не перебирать по символу? Мне правда очень интересно.
|
|
|
|
|
|
#187 |
|
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 0/0 (0)
Репутация: 757769
|
HappySoftX, как вариант, сначала исключить строки не содержащие нужного количества цифр (это примерно 3/4, для этого кстати совсем не обязательно перебирать строки посимвольно), затем стоит исключить то что касается денег, различных атикулов, ID, а вот потом можно регулярками разбирать
|
|
|
|
|
|
#188 | |
|
Senior Member
Доцент
Регистрация: 23.06.2020
Сообщений: 490
Сказал(а) спасибо: 1,961
Получил(а) "Спасибо": 2,557
Нарушения: 0/0 (0)
Репутация: 80425
|
Цитата:
Во первых в твоем задании было найти телефон в строке, а не в строках. Так что 90% твоего поста вообще ни о чем. Во вторых у тебя было в любом формате. Регулярки не справятся. Я специально в демо написал между цифрами пробелы, дефисы, скобки. В третьих занимаясь дополнительными проверками ты только увеличиваешь время обработки. Ты как нужное количество цифр собрался считать без посимвольного перебора строки? А потом после того как посчитал и набрал нужное количество заново обрабатывать строку? И да проход посимвольно по строке гораздо быстрее чем регулярки. Код выше обрабатывает строку за один прогон. То есть он работает максимально быстро. |
|
|
|
|
|
|
#189 | |||
|
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 0/0 (0)
Репутация: 757769
|
Цитата:
и про 100к строк на строку выше есть упоминание ты просто не в курсе что такое регулярки Цитата:
Цитата:
могу даже облегчить тебе задачу PHP код:
![]() P.S. и ещё для того что бы получить количество цифр с помощью регулярки совсем не обязательно перебирать символы, можно использовать готовые функции, например, в том же SQL REGEXP_COUNT
|
|||
|
|
|
|
|
#190 |
|
попробуй отними
Профессор
Регистрация: 14.07.2020
Сообщений: 911
Сказал(а) спасибо: 1,129
Получил(а) "Спасибо": 2,182
Нарушения: 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 |