![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Есть файл со следующими данными:
(7800720) - 7843751 (7800750) - 7809551, 7800751 (7800860) - 7800862, 7800861 (7800880) - 7938926, 7938927, 7938928, 7938929, 7800881 (7800890) - 7916898 (7800920) - 7843835, 7843836 (7800950) - 7843841 (7801010) - 7915891 (7801030) - 7860572, 7860645, 7860646 1. Необходимо по эти данным построить массив массивов вида: 1-й элемент: 7800720, 7843751 2-й элемент: 7800750, 7809551, 7800751 3-й элемент: 7800860, 7800862, 7800861 4-й элемент: 7800880, 7938926, 7938927, 7938928, 7938929, 7800881 5-й элемент: 7800890, 7916898 6-й элемент: ... 2. После построения массива, при выполнении программы появляются две переменные: $a и $b Необходимо сделать проверку: если номер $a является одним из элементов массива массивов, то номер $b должен: 1) существовать в той же строке массиве 2) находиться правее чем $a Т.е. если $a = 7800880, а $b = 7938926, то результат положительный если $a = 7800880, а $b = 3, то результат отрицательный если $a = 7800881, а $b = 7938929, то результат отрицательный (потому что $b находится левее). Это сообщение отредактировал(а) Suppir - 20.12.2010, 16:57 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Suppir, что-же у Вас не получается?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Использование массива массивов - обязательное условие?
Все числа, хранящиеся в файле, уникальны? |
|||
|
||||
chorny |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 27.7.2009 Где: Молдавия Репутация: нет Всего: нет |
я бы начал с split / \)\s-\s | ,\s /x
|
|||
|
||||
alezzz |
|
||||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
массив обязательно нужен?
можно так:
но если нужен массив то тогда так:
Это сообщение отредактировал(а) alezzz - 20.12.2010, 19:48 |
||||
|
|||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
alezzz, первый вариант неверный - попробуйте (7800880) - 7938926, 17938927
Это сообщение отредактировал(а) ginnie - 20.12.2010, 19:55 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
1. Нет, не обязательное. Я, вот, думаю, что проще было бы использовать массив строк, а при проверке проходиться по этим строкам регулярным выражением. Правда, строк около 100 тыс, а всего чисел около 300 тыс. 2. Да, все уникальны. |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Suppir, а зачем массив? Проверку нужно делать многократно? Если да, то можно еще попробовать сделать хэш, где числа будут ключем, значением будет массив "номер строки", "позиция в строке". Тогда проверка будет $hash{$a}[0] == $hash{$b}[0] и $hash{$a}[1] < $hash{$b}[1]
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
||||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Я писал про Ваш вариант до исправления. Это сообщение отредактировал(а) ginnie - 20.12.2010, 20:48 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
да, несколько десятков миллионов раз ![]()
Это очень интересный вариант, спасибо! Добавлено через 4 минуты и 52 секунды Пожалуй, на этом варианте и остановлюсь, потому что его легко реализовать и скорость будет высокой (наличие в хеше почти моментально определяется). Это сообщение отредактировал(а) Suppir - 20.12.2010, 21:15 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |