Поиск слова в матрице
Всем привет. Помогите решить задачу на поиск слова в матрице. Например, дан массив из слов
[ "альфа", "гамма", "омега" ] а также слово, которое надо найти, например, "мал". Слово должно читаться в любых направлениях (вверх, вниз, вправо, влево), и не должно изгибаться в процессе чтения. |
noterindas,
что должно быть результатом поиска? |
true
|
Ничего не понял насчет
Цитата:
<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>
|
Dilettante_Pro,
массив дополняется "словами" столбцов "аго" и т.д., всего 8 слов получается, если из них хотябы одно содержит или "мал" или "лам" вернуть true. |
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, "мал"));
|
рони, может проще проверять - если крайние символы входного значения не равны символам первого и последнего элемента, то продолжаем, и только если есть равенство, то проверяем средний?
|
laimas,
вангую образец любой длины |
Цитата:
|
| Часовой пояс GMT +3, время: 14:17. |