Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Задачка на массивы массивов |
Автор: Suppir 20.12.2010, 16:56 |
Есть файл со следующими данными: (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 находится левее). |
Автор: ginnie 20.12.2010, 17:37 |
Suppir, что-же у Вас не получается? |
Автор: Jimy 20.12.2010, 17:56 |
Использование массива массивов - обязательное условие? Все числа, хранящиеся в файле, уникальны? |
Автор: chorny 20.12.2010, 18:08 |
я бы начал с split / \)\s-\s | ,\s /x |
Автор: alezzz 20.12.2010, 19:42 | ||||
массив обязательно нужен? можно так:
но если нужен массив то тогда так:
|
Автор: ginnie 20.12.2010, 19:52 |
alezzz, первый вариант неверный - попробуйте (7800880) - 7938926, 17938927 |
Автор: ginnie 20.12.2010, 20:28 |
Suppir, а зачем массив? Проверку нужно делать многократно? Если да, то можно еще попробовать сделать хэш, где числа будут ключем, значением будет массив "номер строки", "позиция в строке". Тогда проверка будет $hash{$a}[0] == $hash{$b}[0] и $hash{$a}[1] < $hash{$b}[1] |
Автор: alezzz 20.12.2010, 20:44 | ||
Попробовал. В какой комбинации не верно (что в $a и $b) ? |
Автор: ginnie 20.12.2010, 20:46 | ||
Я писал про Ваш вариант до исправления. |
Автор: Suppir 20.12.2010, 21:15 | ||
да, несколько десятков миллионов раз ![]()
Это очень интересный вариант, спасибо! Добавлено через 4 минуты и 52 секунды Пожалуй, на этом варианте и остановлюсь, потому что его легко реализовать и скорость будет высокой (наличие в хеше почти моментально определяется). |