![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 13:38
|
Новичок на форуме
|
|
Регистрация: 09.04.2019
Сообщений: 2
|
|
Поиск слова в матрице
Всем привет. Помогите решить задачу на поиск слова в матрице. Например, дан массив из слов
[
"альфа",
"гамма",
"омега"
]
а также слово, которое надо найти, например, "мал".
Слово должно читаться в любых направлениях (вверх, вниз, вправо, влево), и не должно изгибаться в процессе чтения.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 13:48
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
noterindas,
что должно быть результатом поиска?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 13:59
|
Новичок на форуме
|
|
Регистрация: 09.04.2019
Сообщений: 2
|
|
true
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 15:34
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Ничего не понял насчет
Сообщение от noterindas
|
Слово должно читаться в любых направлениях (вверх, вниз, вправо, влево), и не должно изгибаться в процессе чтения.
|
<style>
span { font-weight:bold; }
</style>
<div id='cont'></div>
<script>
var arr= ["альфа","гамма","омега"];
var model = "га";
for(var i = 0; i<arr.length;i++) {
var place = arr[i].indexOf(model);
if(place >= 0) {
cont.innerHTML += arr[i].substring(0,place ) + '<span>'
+ arr[i].substring(place ,place + model.length) + '</span>'
+ arr[i].substring(place+model.length ) + '<br>';
}
}
</script>
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 15:48
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
Dilettante_Pro,
массив дополняется "словами" столбцов "аго" и т.д., всего 8 слов получается, если из них хотябы одно содержит или "мал" или "лам" вернуть true.
Последний раз редактировалось рони, 09.04.2019 в 16:17.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 16:13
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
noterindas,
let ar = [
"альфа",
"гамма",
"омега"
];
function fn(ar, str)
{ const a = [...str], b = a.slice(0).reverse().join("");
return ar.some((v,i) => {
if(v.indexOf(str) !== -1 || v.indexOf(b) !== -1) return true;
let idx = v.indexOf(a[0]);
if(idx === -1) return false;
return a.every((s,k) => ar[i + k] && s === ar[i + k][idx]) || a.every((s,k) => ar[i - k] && s === ar[i - k][idx])
})
}
alert(fn(ar, "мал"));
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 16:39
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
рони, может проще проверять - если крайние символы входного значения не равны символам первого и последнего элемента, то продолжаем, и только если есть равенство, то проверяем средний?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 16:55
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
laimas,
вангую образец любой длины
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
09.04.2019, 16:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
вангую образец любой длины
|
Ну тогда да.
|
|
|
|