mirror of
				https://github.com/fooflington/wordbubbles.git
				synced 2025-10-31 05:18:32 +00:00 
			
		
		
		
	
		
			
	
	
		
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | <html> | ||
|  | <head><title>Wordbubbles solver</title></head> | ||
|  | <%@ page import="java.util.*" %> | ||
|  | <%@ page import="java.io.*" %> | ||
|  | <%@ page import="uk.org.mafoo.wordbubbles.*" %> | ||
|  | <%@ page errorPage="error.jsp" %> | ||
|  | <% | ||
|  | 
 | ||
|  | // String dict = request.getParameter("dictionary"); | ||
|  | // if(dict != "twl06") throw new Exception("failed to get dictionary"); | ||
|  | String dict = "/usr/share/dict/twl06"; | ||
|  | 
 | ||
|  | uk.org.mafoo.wordbubbles.Lexicon words = uk.org.mafoo.wordbubbles.Lexicon.loadLexiconFromFile(dict); | ||
|  | ArrayList<ArrayList<Character>> grid = new ArrayList<ArrayList<Character>>(); | ||
|  | HashSet<Integer> desired = new HashSet<Integer>(); | ||
|  | boolean desired_active = false; | ||
|  | 
 | ||
|  | if(request.getParameterValues("desired") != null) { | ||
|  | 	desired_active = true; | ||
|  | 	for( String p : request.getParameterValues("desired") )  { | ||
|  | 		desired.add(new Integer(p)); | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | if (request.getParameter("grid").length() > 2048) { throw new Exception("Input too large"); } | ||
|  | 
 | ||
|  | for ( String line : request.getParameter("grid").split("\r\n")) { | ||
|  |   ArrayList<Character> row = new ArrayList<Character>(); | ||
|  |   for ( char c : line.toLowerCase().toCharArray() ) { | ||
|  |     if( (c >= 'a' && c <= 'z') || c == ' ' || c == '.' || c == '_') { | ||
|  | 	    if(c == '.' || c == '_') c = ' '; | ||
|  | 	    row.add(new Character(c)); | ||
|  | 	} else { | ||
|  | 		throw new Exception("invalid char"); | ||
|  | 	} | ||
|  |   } | ||
|  |   grid.add(row); | ||
|  | } | ||
|  | 
 | ||
|  | uk.org.mafoo.wordbubbles.Prison prison = new uk.org.mafoo.wordbubbles.Prison(grid); | ||
|  | ArrayList<LinkedHashSet<Cell>> found = prison.search(words); | ||
|  | HashSet<String> foundwords = new HashSet<String>(); | ||
|  | for ( LinkedHashSet<Cell> w : found ) { | ||
|  | 	String str = ""; | ||
|  | 	for ( Cell letter : w ) { | ||
|  | 		str += letter; | ||
|  | 	}  | ||
|  | 	if(desired_active) { | ||
|  | 		if(desired.contains(new Integer(str.length()))) { foundwords.add(str); } | ||
|  | 	} else { | ||
|  | 		foundwords.add(str); | ||
|  | 	} | ||
|  | } | ||
|  | %> | ||
|  | <body> | ||
|  | <h1>Wordbubble Solver</h1> | ||
|  | <h2>Input</h2> | ||
|  | <table style="font-family: monospace;"> | ||
|  | <% for (ArrayList<Character> row : grid) { %> | ||
|  |   <tr> | ||
|  | <%    for(Character c : row) { %> | ||
|  |     <td><%= c %></td> | ||
|  | <%      } | ||
|  |    } | ||
|  | %> | ||
|  | </table> | ||
|  | 
 | ||
|  | <% if(desired_active) { %> Looking for words of length(s): <%= desired %> <% } %> | ||
|  | <h2>Results</h2> | ||
|  | 
 | ||
|  | <ul style="font-family: monospace;"> | ||
|  | <%  | ||
|  |    List<String> output = new ArrayList<String>(foundwords); | ||
|  |    Collections.sort(output); | ||
|  |    for (String word : output) { %> | ||
|  | <li><%= word %></li> | ||
|  | <% } %> | ||
|  | </ul> | ||
|  | </body> | ||
|  | </html> |