Не сложный алгоритм. Берешь таблицу, и начинаешь слева-направо:
1. Берешь слово;
2. Выбираешь первую попавшуюся свободную клетку (при обходе слева-направо, сверху-вниз, специально для
longclaps. Сначала это угол, потом как пойдет);
3. Выбираешь случайное направление движения из доступных (должна быть хоть одна свободная клетка по этому направлению);
4. Начинаешь записывать слово по буквам, используя обход в глубину (ячейки клетки - вершины графа, ребра образуются между двумя свободными клетками, соединенными под прямым углом), с приоретитом на сохранение направления (никаких поворотов, кроме как при упоре в стенку);
5. Если есть еще слова - бери их и иди в п.1.