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

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

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

mOleg писал(а):
во-первых, надо писать...
Не помогает. Не жрет движок сложных ссылок.
mOleg писал(а):
кроме того, он не даст ввести вариации углов: 10' или 1°12"
Это неправда.
mOleg писал(а):
во-вторых, где код? по ссылке стеб вижу, а кода не вижу.
В смысле? Код RECEPTING не опубликован? Слово/формат RECEPTOR тоже? В чем проблема, добавить пару читающих слов (есть у меня в коде FOBOS или можете взять свои)? Да и интуитивно понять псевдокод немного проще, чем тот, что в начале.

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

По продолжающимся просьбам добавил реализацию на Win32Forh.

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

gudleifr писал(а):
По продолжающимся просьбам добавил реализацию на Win32Forh.

прошу таки в данную тему код продублировать, потому как нехорошо ссылки давать.

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

mOleg писал(а):
прошу таки в данную тему код продублировать
Нет. Т.к. данный Форум, по сути, прекратил свою деятельность в области Forth, не считаю нужным искусственно насыщать его материалами, естественно расположенными там, где следует.
(Уже обжегся со своими первыми Forth-статьями).

Желаю и Вам как можно быстрее организовать свой fork-ресурс, иначе все наработки здесь просто пропадут.

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

gudleifr писал(а):
данный Форум, по сути, прекратил свою деятельность в области Forth

Не прекратил.
gudleifr писал(а):
иначе все наработки здесь просто пропадут

Не пропадут.

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

от дублирования хуже не станет. Если форума не станет, буду искать другой ресурс.

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

mOleg писал(а):
...
Извинения. В очередной раз попытался прочесть Ваши статьи (в целях преодоления терминологической пропасти), но не смог. Введя в самом начале крайне неудачные VFM и "транслятор" Вы загнали себя в рамки, из которых невозможно вылезти... Весь мат.аппарат идет лесом...

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

gudleifr писал(а):
По продолжающимся просьбам добавил реализацию на Win32Forh.


регулярные выражения не используются(хотя утверждалось, что как два пальца), видны только сомнительные ссылки, код привести в теме вас ломает.

вобщем, я так понимаю, слив засчитан.

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

mOleg писал(а):
вобщем, я так понимаю, слив засчитан.
Не понял смысла наезда. Вы что-то не поняли? Не нашли исходников? Просто, на что-то обиделись?

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

gudleifr писал(а):
Не понял смысла наезда.

не вижу желания с вашей стороны нормально общаться, увы.
На просьбы предоставить нормальный код отделываетесь отговорками, по ссылке не видно использования регулярных выражений (за что я собственно и зацепился), на просьбу опубликовать ваш код на этом форуме видны только отговорки (оно и понятно, заявленных регулярных выражений в коде не наблюдается).

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

mOleg писал(а):
заявленных регулярных выражений в коде не наблюдается
А он был заявлен? Было заявлено решение, основанное на конечном автомате. Написать код постройки конечного автомата на основе регулярного выражения? Я же не прошу Вас привести код, пишущий Ваши Case-ы...
Вы действительно не понимаете, что нарисовать конечный автомат по регулярному выражению, это элементарное действие?

Или, все-таки, вечер пятницы?

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

Если внимательно посмотреть на строковое представление угла 12°12'12"
то можно заметить, что запись немного напоминает стековые манипуляторы.
А в них символ 0..9 означает положить на стек значение соответствующей ячейки.
По аналогии можно построить следующий алгоритм преобразования строкового
представления угла в секунды. Есть заранее отведенные и заполненные 7 массивов
из 10 ячеек двойной длины. массив единиц секунд заполнен значеничями 0,1,2,,9
следующий массив десятков секунд заполнен 0,10,20,,50(здесь используется
только 6 элементов массива). Массив единиц минут заполнен значениями 0,60,120,,540
массив десятков минут надо заполнить 6 елементов 0,600,1200,,3000.
массив единиц градусов - 0,3600,7200,,32400, массив десятков градусов - 0,36000,72000,,324000
ну и последний массив сотен градусов нужно заполнить 4 элемента 0,360000,720000,1080000
пусть массив единиц секунд будет массив номер 1, а массив сотен градусов - массив номер 7.
сканировать строковое представление угла будем от последнего символа строки к первому.
казалось бы мусорные символы ° ' " у нас будут выполнять полезную функцию -
принудительную установку номера текущего массива. символ " устанавливает текущий
массив в 1 (массив единиц секунд), символ ' устанавливает текущий массив в 3 (массив
единиц градусов), символ ° устанавливает текущий массив в 5 (единицы градусов)
символы 0..9 означают что надо выбрать из текущего массива элемент с индексом 0..9,
просуммировать и увеличить номер текущего массива на еденицу. Всего надо сложить
до 7 чисел. Вот такой получился манипуляторный преобразователь строкового представления угла.
подключить его можно как и у Олега через словарь, или например запускать его
предварительно проверив входную строку на корректность регулярным выражением.

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

Эмм... А если просто посмотреть, то можно увидеть три числа, два из них надо умножить на константы и прибавить третье:
Код:
: gms>s   \ ( a u - n )
  2DUP OVER + SWAP DO
    I C@ 0x30 0x40 WITHIN 0= IF 0x20 I C! THEN
  LOOP
  EVALUATE ROT 3600 * ROT 60 * + +
;

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

Alex писал(а):
Если внимательно посмотреть на строковое представление угла 12°12'12"то можно заметить, что запись немного напоминает стековые манипуляторы.

вообще, было бы интересно увидеть реализацию манипулятора 8)

Alex писал(а):
подключить его можно как и у Олега через словарь, или например запускать егопредварительно проверив входную строку на корректность регулярным выражением

это вторично вобщем-то.
Мне нравится вариант, когда перед числом находится префикс:
Hex 3AE9
Oct 654
или в нашем случае:
Alp 12°12'12"

VoidVolker писал(а):
А если просто посмотреть, то можно увидеть три числа, два из них надо умножить на константы и прибавить третье:

можно, но нужно учесть, что полная запись 12°12'12" часто не нужна, удобно, скажем 12°12" или 12'12" так же как и 12", 12'

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

mOleg писал(а):
можно, но нужно учесть, что полная запись 12°12'12" часто не нужна, удобно, скажем 12°12" или 12'12" так же как и 12", 12'

Код:
ms>s gm>s

Не? А еще можно без всех этих кружочков, апострофов и кавычек просто написать три числа. Вообще, ничего против топика не имею, отвечал на сообщение Alex'а. Я вот к чему: зачем так все усложнять-то?
mOleg писал(а):
Мне нравится вариант, когда перед числом находится префикс: Hex 3AE9 Oct 654

ИМХО, 0x как-то привычнее, а hex - переключение системы счисления.

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