Августовский конкурс по функциональному программированию

Aug 11, 2014 01:35

За несколько часов до окончания сабжа я, внезапно, тоже решил принять участие.

Задание в этот раз относительно простое, поэтому наивную реализацию делать было не интересно. Подумал, может собрать классическую макру, которая по шаблонам дерево сравнений строит, но там какой-то дружище-ракетчик уже меня опередил :) Посмотрел остальные решения: в ( Read more... )

code, common lisp, russian post, mail, fsm, lisp, contest, code generation

Leave a comment

swizard August 11 2014, 01:47:40 UTC
Не удержался, поправил вышеобозначенную проблему с производительностью, всё взлетело =)

http://pastebin.com/kuD6VgHg

Теперь при переходе в другое состояние возвращается дополнительно координаты, на которых следует скармливать этому новому состоянию символ. Параллельно все проверки на совпадения координат исчезли из сгенерированного когда, в этой версии он выглядит как-то так:

(DEFUN MAIL-DIGITS (INIT-ROW INIT-COL)
(LABELS ((STATE-0 (CHAR NEXT RESET)
(DECLARE (IGNORABLE NEXT))
(COND
((CHAR= CHAR #\1)
(FUNCALL NEXT #'STATE-1 (+ INIT-ROW 0) (+ INIT-COL 1)))
(T (FUNCALL RESET))))
(STATE-1 (CHAR NEXT RESET)
(DECLARE (IGNORABLE NEXT))
(COND ((CHAR= CHAR #\1 ( ... )

Reply


Leave a comment

Up