Показать сообщение отдельно
Старый 16.12.2014, 20:17   #10
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Смесь: Неочевидное + Оптимизация

Во всяких парсерах для компиляторов активно используется.
моё видение того как оно работает:

есть текст и смайлики ": )", ": (" и "{ : )"
посимвольно читаем текст, есть несколько состояний, входной символ в переменной "с"
1) (начальное состояние)
(с == ":") -> 2
(c == "{") -> 3
иначе подаем на выход c и не меняем состояние
2)
(с== ")"), выдаём смайлик и переходим в 1
(с == "("), выдаём смайлик и переходим в 1
(с== "{") выводим ":" (это не кусок смайлика), переходим в 3
иначе выводим ":" + c и переходим в 1
3)
(с == ":") -> 4
иначе выводим "{" + c и переходим в 1
4)
(с == ")") выводим смайл "{", переходим в 1
(c == "("), выводим "{" + "", переходим в 1
иначе выводим "{:" + c и переходим в 1.

Если всё просто, можно захардкодить вручную, если сложно, то пишут штуку, которая это делает сама.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW

Последний раз редактировалось Igor, 17.12.2014 в 11:53.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Жека (17.12.2014)