Po pierwsze, to nie jest praca domowa;). Próbuję stworzyć od zera wyszukiwarkę słów i uderzyłem w barierę, potrzebuję wskazówek.Co to jest skuteczna metoda przechodzenia w pionie 2d w celu programowego znalezienia "pustego" zestawu?
Używam tablicy 2d znaków dla siatki wyszukiwania słów. Czuję się dobrze z umieszczaniem słów w tych tablicach poziomo, ale naprawdę utknąłem na pomysły, jak to zrobić w pionie.
To, co do tej pory, należy po prostu być w stanie skopiować/wkleić go i uruchomić go
import java.util.ArrayList;
import java.util.List;
public class WordGame
{
private static List<String> words = new ArrayList<String>();
private static int longestWordLength = 0;
private static int padSize = 4;
private static char[][] grid = null;
public static void main(String[] args)
{
initialiseWords();
workOutLongestWord();
setupGrid();
printIt();
}
private static void printIt()
{
for (int i = 0; i < grid.length; i++)
{
for (int j = 0; j < grid.length; j++)
{
System.out.print(grid[i][j]);
}
System.out.print("\n");
}
}
private static void setupGrid()
{
grid = new char[longestWordLength + padSize][longestWordLength + padSize];
for (int i = 0; i < grid.length; i++)
{
String w = (i >= words.size()) ? "?" : words.get(i);
for (int j = 0; j < grid.length; j++)
{
grid[i][j] = (j >= w.length()) ? '?' : w.charAt(j);
}
}
}
private static void workOutLongestWord()
{
for (String word : words)
{
if (word.length() > longestWordLength)
{
longestWordLength = word.length();
}
}
}
private static void initialiseWords()
{
words.add("monkey");
words.add("cow");
words.add("elephant");
words.add("kangaroo");
}
}
Który wypisuje coś takiego ...
monkey??????
cow?????????
elephant????
kangaroo????
????????????
????????????
????????????
????????????
????????????
????????????
????????????
????????????
muszę losowo wyłóż je po lewej/prawej stronie, ale mogę to zrobić sam.
Pytanie: Jaki jest skuteczny sposób próbowania umieszczania wyrazów pionowo w tablicy 2d, jak wyżej? Moja początkowa myśl polegała na policzeniu w dół dla wymaganej długości słowa, zerwaniu, jeśli znajdzie się coś innego niż ?
i kontynuowanie tego, dopóki nie znajdę miejsca na słowo. Jednak nie jest to zbyt piękne, gdy uwzględniam nakładanie się słów.
Jakieś wskazówki?