Wordsearch Solver
Removes all letters that do not belong to words for the input.
by briguy37
HTML
<table valign="top">
<tr>
<td valign="top">
<b>Puzzle 1:</b>
<pre id="puzzle1">LLJKCABLFCI
OROLOBOCOIM
GELACSAPRSX
LPSTAHWVTAV
ANRLXLXQRBI
IHPLEDOXAHS
KJYAPHPYNOU
FABMADANZJA
EVISNOHTYPL
AAYLBMESSAC
WEIVBALOGOM</pre>
</td>
<td valign="top">
<b>Words:</b>
<pre>ADA
ALGOL
ASSEMBLY
BASIC
COBOL
DELPHI
FORTRAN
JAVA
LABVIEW
LOGO
PASCAL
PERL
PHP
PYTHON
SMALLTALK
VISUALC</pre>
</td>
<td valign="top">
<b>Solution 1:</b>
<pre id="input1"></pre>
</td>
</tr>
<tr>
<td valign="top">
<b>Puzzle 2:</b>
<pre id="puzzle1">IAUERAWTFOSICPN
DGZPFLOPPYARFLU
RSNOCURSORVZDBM
AMNIUOMRNHEGUIN
OTBNSRMONITORNT
BEYTTSGPJBOLDRT
YRQEAHEHARDWARE
EOGRRNECECLOSEP
KIONTYKTODTOWER
ELCENSUPERPDKNN
ATRTPRYKELPVIEJ
GIEANPOTKSEDUSL
NXCMPASSWORDRUC
TEDITAGVSWJCTOV
CWOYPGYQKNLVXMW</pre>
</td>
<td valign="top">
<b>Words:</b>
<pre>BACKSPACE
BOLD
CLOSE
COMPACTDISC
COPY
CPU
CURSOR
DELETE
DESKTOP
DVD
EDIT
ENTER
EXIT
FLOPPY
FONT
HARDWARE
INTERNET
KEYBOARD
MONITOR
MOUSE
PASSWORD
PASTE
RETURN
SAVE
SOFTWARE
START
TEXT
TOWER
WORDPROCESSING</pre>
</td>
<td valign="top">
<b>Solution 2:</b>
<pre id="input2"></pre>
</td>
</tr>
</table>
CSS
td {
border: 1px solid black;
padding: 5px;
}
JavaScript
function solveWordsearch(input){
var lineBreak = '\n';
var solver = input.split(lineBreak+lineBreak);
var board = solver[1].split(lineBreak);
for(row=-1,output=[]; line=board[++row];){
for(col=-1,output[row]=[]; line[++col];){
for(rowIncrement=-2,output[row][col]=' ';2>++rowIncrement;){
for(colIncrement=-2;2>++colIncrement;){
for(k=0; word=solver[0].split(lineBreak)[k++];){
for(charPosition=-1; wordChar=word[++charPosition];){
var startRowIndex=row-charPosition*rowIncrement-rowIncrement;
var startColIndex=col-charPosition*colIncrement-colIncrement;
for(wordIndex=0;(compareWordChar=word[wordIndex++])&&(compareBoardRow=board[startRowIndex+=rowIncrement])&&(compareBoardChar=compareBoardRow[startColIndex+=colIncrement])&&compareWordChar==compareBoardChar;){
if(wordIndex == word.length){
output[row][col]=wordChar;
}
}
}
}
}
}
}
}
for(i=0;outLine=output[i];){
output[i++]=outLine.join('');
}
return output.join('\n');
}
var input = "ADA\n"+
"ALGOL\n"+
"ASSEMBLY\n"+
"BASIC\n"+
"COBOL\n"+
"DELPHI\n"+
"FORTRAN\n"+
"JAVA\n"+
"LABVIEW\n"+
"LOGO\n"+
"PASCAL\n"+
"PERL\n"+
"PHP\n"+
"PYTHON\n"+
"SMALLTALK\n"+
"VISUALC\n"+
"\n"+
"LLJKCABLFCI\n"+
"OROLOBOCOIM\n"+
"GELACSAPRSX\n"+
"LPSTAHWVTAV\n"+
"ANRLXLXQRBI\n"+
"IHPLEDOXAHS\n"+
"KJYAPHPYNOU\n"+
"FABMADANZJA\n"+
"EVISNOHTYPL\n"+
"AAYLBMESSAC\n"+
"WEIVBALOGOM\n";
document.getElementById('input1').innerHTML=solveWordsearch(input);
var input2 =...