Поиск слова в матрице
Всем привет. Помогите решить задачу на поиск слова в матрице. Например, дан массив из слов
[ "альфа", "гамма", "омега" ] а также слово, которое надо найти, например, "мал". Слово должно читаться в любых направлениях (вверх, вниз, вправо, влево), и не должно изгибаться в процессе чтения. |
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, время: 20:14. |