|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2016, 22:04 | #1 |
Новичок
Джуниор
Регистрация: 05.06.2016
Сообщений: 3
|
Перевод координат символа строки в двумерную матрицу
Доброго времени суток, уважаемые дамы и господамы
Есть следующее задание: "1. Дан двумерный массив, который содержит буквы английского алфавита в нижнем регистре. 2. Метод detectAllWords должен найти все слова из words в массиве crossword. 3. Элемент(startX, startY) должен соответствовать первой букве слова, элемент(endX, endY) - последней. text - это само слово, располагается между начальным и конечным элементами 4. Все слова есть в массиве. 5. Слова могут быть расположены горизонтально, вертикально и по диагонали как в нормальном, так и в обратном порядке." Принцип решения, который я использую - выписать поочередно в строку символы по горизонтали, вертикали и диагонали (справа налево и наоборот), методом .contains() найти в каждой строке искомые слова и записать координаты начала и конца, которые, при успешном нахождении слова будут возвращены. Для этого, я создал отдельно методы для поиска по горизонтали, по вертикали и диагонали. Как уже можно догадаться, с координатами по горизонтали и вертикали проблем нет, а, вот, с чем есть, так это с диагональю. Вот пример матрицы: Код:
Преположим, искомым словом является "ale", расположено оно по диагонали и имеет координаты начала 1, 2 и конца 3, 4. Выписывая строки по диагонали, строка, содержащее это слово, имеет вид "oale", с координатами искомого слова 1 (начало) и 3 (конец). Внимание, вопрос: как мне перевести координаты из одномерных в двумерные в данном случае? Далее приведена часть кода для диагонального поиска: Код:
PPS. Код класса Word: Код:
|
05.06.2016, 22:50 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Если верно разобрался, то примерно так:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
05.06.2016, 23:07 | #3 |
Новичок
Джуниор
Регистрация: 05.06.2016
Сообщений: 3
|
Спасибо большое)
Не совсем)) Матрица crossword делится на столбцы, ряды и диагонали, они, один за одним, проверяются на наличие искомого слова, если слово не найдено, столбцы, ряды и диагонали инвертируются и снова просматриваются. При нахождении слова, выписываются его начальные и конечные координаты в строке, которые переводятся в координаты на двумерной матрице. Вот как, например, выглядит поиск по горизонтали: Код:
Код:
Последний раз редактировалось BDA; 05.06.2016 в 23:26. |
05.06.2016, 23:12 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
caesar_84, нет-нет, я имел ввиду то, как вижу более простое решение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
05.06.2016, 23:14 | #5 |
Новичок
Джуниор
Регистрация: 05.06.2016
Сообщений: 3
|
Ааа, понял. Тоже можно, наверное, надо попробовать))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод координат | tytona | Помощь студентам | 0 | 29.12.2014 20:08 |
Перевод GPS-координат на плоскость | MooNDeaR | Свободное общение | 12 | 10.09.2014 15:36 |
перевод координат | neprogrammist | Общие вопросы Delphi | 2 | 18.05.2010 23:20 |
Перевод координат | ax1d | Общие вопросы Delphi | 1 | 04.11.2009 14:23 |
Перевод строки в матрицу | Chepa | Общие вопросы Delphi | 14 | 28.01.2007 00:13 |