Forth
http://www.fforum.winglion.ru/

преобразование строкового представления угла вида 12°12'12"
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2929
Страница 3 из 5

Автор:  gudleifr [ Вс май 05, 2013 23:14 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

mOleg писал(а):
нет
Боюсь спрашивать почему. Опять скажете, что контекст потому и контекст, что должен быть контекстом, а не чем-то, что контекстом не является...
mOleg писал(а):
Вы бы все-таки описание почитали.
Пытался. Но наша с Вами терминологическая путаница лежит глубже. Ваша лекция для меня: "- Вот какая фича! - А на фига?" Как будто кто-то заставил Вас писать какую-то вещь специально извращенным способом, и Вы смогли эту задачу победить.
mOleg писал(а):
сам сказал, что код будет проще
Это не я сказал, а Ахо, Хопкрофт и Ульман. И привели все необходимые цифры. Там, где я делал что-то подобное, убеждался в том же.

Автор:  mOleg [ Вс май 05, 2013 23:41 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

gudleifr писал(а):
Боюсь спрашивать почему.

Я уже и код приводил.
Смысл сделать проще, гибче, удобнее, а не заумнее.
1. из INTERPRET уходит распознавание чисел (INERPRET становится проще)
2. появляется возможность через словарь выразить что угодно - хоть картинки и звуки, хоть регулярные выражения, хоть файлы или отобразить на словарь ДЛЛ, вобщем, что душе угодно.
3. появляется управляемость процессом трансляции (захочу - только числа будут пониматься, захочу - вообще не будут пониматься).
4. появляется возможность работы с динамически изменяющимися данными
и все это без дальнейших изменений ядра, т.е. - это как написания драйвера для ОС под собственные нужды.

gudleifr писал(а):
Это не я сказал, а Ахо, Хопкрофт и Ульман. И привели все необходимые цифры. Там, где я делал что-то подобное, убеждался в том же.

отмазка не катит - код в студию!

Автор:  gudleifr [ Пн май 06, 2013 00:03 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

mOleg писал(а):
Смысл сделать проще, гибче, удобнее, а не заумнее.
Это я понял. Но в чем ошибка вышеприведенной схемы?
mOleg писал(а):
код в студию!
Зачем изобретать велосипед? Вы не согласны с корифеями? Если уж на то пошло, выдерните из FOBOS распознавалку чисел и сравните со своей реализацией.

Автор:  Wlad [ Пн май 06, 2013 11:22 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

mOleg писал(а):
Зачем изобретать велосипед? Вы не согласны с корифеями? Если уж на то пошло, выдерните из FOBOS распознавалку чисел и сравните со своей реализацией.
Да написали бы уж давно пару-десяток строчек и привели бы сопутствующие описания под каждый из подходов, раз вам всё досконально ясно по плюсам-минусам каждого из принципов и подходов!
А мы б - полюбовались и урок извлекли... :)

Автор:  gudleifr [ Пн май 06, 2013 11:34 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

Wlad писал(а):
раз вам всё досконально ясно по плюсам-минусам каждого из принципов и подходов!
Лучше Ахо и компании объяснить у меня все равно не получиться.
Плюсы и минусы тоже давно ни для кого не тайна: примеры реализаций (если Вас не устраивают мои) можно посмотреть в Pattern Forth. Скорость и мощность "в принципе" можно оценить по программам lex или perl.
Если я напишу, что умножать на бумажке в столбик быстрее, чем просто складывать, вы тоже будете требовать код?

Автор:  dynamic-wind [ Пн май 06, 2013 13:51 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

gudleifr писал(а):
Строчка:
([0-9]+°([0-9]+\')?([0-9]+\")?)|([0-9]+\'([0-9]+\")?)|[0-9]+\"
читается все-таки проще.

А так ещё проще: scanf("%u°%u'%u''", ...

Автор:  gudleifr [ Пн май 06, 2013 13:57 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

dynamic-wind писал(а):
А так ещё проще: scanf...
А я открою большой секрет - кроме форматов и регулярных выражений как бы ничего пока и не придумано... Просто вторые немного мощнее и моя строчка может понимать не только %u°%u'%u'', но и %u°%u', и %u'', и "%u°%u''...

Автор:  Hishnik [ Пн май 06, 2013 15:10 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

dynamic-wind писал(а):
Строчка:
([0-9]+°([0-9]+\')?([0-9]+\")?)|([0-9]+\'([0-9]+\")?)|[0-9]+\"
читается все-таки проще.

А где в этой строчке указано, что в градусе 60 угловых минут, а в минуте 60 угловых секунд?

Автор:  gudleifr [ Пн май 06, 2013 15:16 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

Хищник писал(а):
А где в этой строчке указано, что в градусе 60 угловых минут, а в минуте 60 угловых секунд?
Дело вкуса. Зависит от реализации. Я, так как лентяй, тупо вбиваю код в узлы получившегося автомата. В "стандартных" реализациях, обычно ссылаются на отдельные лексемы, помечая их скобками. Пока автомат не сильно рекурсивен, проблем обычно не возникает.

Автор:  dynamic-wind [ Пн май 06, 2013 15:23 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

RE решит не задачу "преобразовать...", а подзадачу "выделить лексемы: три десятичных целых с такими-то разделителями".

Автор:  Hishnik [ Пн май 06, 2013 15:31 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

gudleifr писал(а):
Я, так как лентяй, тупо вбиваю код в узлы получившегося автомата.

В итоге получается, что работа состоит из двух частей - реализация известного подхода плюс ее адаптация к особенностям решаемой задачи. Про особенности и разговор.

Автор:  mOleg [ Пн май 06, 2013 19:02 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

gudleifr писал(а):
Но в чем ошибка вышеприведенной схемы?

если речь об этом:
gudleifr писал(а):
Я понимаю Ваш вариант так:(термины условные, стековые и управляющие операторы опускаю)ALSO КОНТЕКСТ-REFILLALSO КОНТЕКСТ-WORDALSO КОНТЕКСТ-NUMBERALSO КОНТЕКСТ-FINDСИСТЕМА

то во всем.

контекст - это список словарей в котором производится поиск лексемы, лексемой может быть что угодно, в том числе и числа. Реальный код я уже приводил и повторяться не буду.

gudleifr писал(а):
Зачем изобретать велосипед?

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

gudleifr писал(а):
Вы не согласны с корифеями?

Конечно! корифеев надо читать, думать над написанным, но делать собственные выводы и пользовать собственные решения согласно обстоятельствам.

gudleifr писал(а):
Если уж на то пошло, выдерните из FOBOS распознавалку чисел и сравните со своей реализацией.

уж если на то пошло, приведите сами.

Автор:  mOleg [ Пн май 06, 2013 19:05 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

dynamic-wind писал(а):
RE решит не задачу "преобразовать...", а подзадачу "выделить лексемы: три десятичных целых с такими-то разделителями".

кроме того, он не даст ввести вариации углов: 10' или 1°12"

Автор:  gudleifr [ Пн май 06, 2013 19:40 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

mOleg писал(а):
показать, что ваш велосипед лучше
По просьбам трудящихся:
[url]http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\3.POLESNYE%20ALGORITMY\KONETNYE%20AWTOMATY[/url].

Автор:  mOleg [ Пн май 06, 2013 19:52 ]
Заголовок сообщения:  Re: преобразование строкового представления угла вида 12°12'

gudleifr писал(а):
По просьбам трудящихся:

во-первых, надо писать url=тут ссылка (все в скобках), за скобкой текст подписи, и затем закрывающий тег.
во-вторых, где код? по ссылке стеб вижу, а кода не вижу.
в третьих, конечные автоматы можно реализовывать по-разному, мой вариант по сути так же конечный автомат. Только вы обещали использовать в решении регулярные выражения, т.е. вы должны доказать, что ваш пример:
gudleifr писал(а):
Строчка:([0-9]+°([0-9]+\')?([0-9]+\")?)|([0-9]+\'([0-9]+\")?)|[0-9]+\"читается все-таки проще.

не только проще читается, а еще и правильно работает.

Страница 3 из 5 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/