Araya, они все думают, что изучают студию. Не отделяют код от приложения, и IDE от кода. Особенно доставляют вопросы, как к Android studio подключить БД *facepalm*
nimbus214, ты будешь в некотором состоянии q. Видя в нём "->" переходишь в состояние p1, сдвигаясь влево.
q "->" -> p1 "->" L
p1 X -> p1 1 L
p1 % -> p2 % L
p2 0 -> p2 0 L // "отнимать" будем с конца, так проще, нет смысла ходить в начало. Поэтому будут встречаться нули.
p2 Y -> p3 Y L // начались Y-и. По построению они идут сплошняком до 0 или 1.
p3 0 -> n0 0 R // в делимом не осталось 1
n0 это начало ветки, когда разделилось нацело. Потому что мы только что закончили отнимать очередной делитель, отняли успешно, и больше в делимом ничего не осталось
p3 1 -> b0 1 R // в делимом остались единицы
b0 это "Если в делимом остались единицы, заменяем все Y на 0, встаем на % и начинаем всё это заново."
b0 0 -> b0 0 R
b0 Y -> b0 0 R
b0 % -> s % N // s - твоё стартовое состояние
n0 распиши сам.
Что такое цепное хэширование? Ты хочешь хэш-таблицу и разрешение коллизий методом цепочек, или же какой-то иерархический хэш в связном списке? Сейчас у тебя в коде какой-то бред написан, к хэшам отношения не имеет.