Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт апр 19, 2024 07:02

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Python Challenge
СообщениеДобавлено: Пн мар 19, 2007 20:02 
Ну ладно, я-то с мороза (интернет пол-недели барахлил), но почему я не вижу ваших рук?..

http://my.opera.com/forth/blog/pythonchallenge1


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 25, 2007 15:20 
Не в сети

Зарегистрирован: Вс окт 15, 2006 13:05
Сообщения: 149
Откуда: Украина, Киев
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Идея хорошая, жаль примеров мало :(

Как-то очень неудобно смотрится в FF. В листингах пробелы почему-то убираются и слова отображаются слитно. Графики не отображаются -- не ловит FF расширение svgя :(

Пробовал распечатать -- распчаталась только заглавная страница.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 25, 2007 15:27 
Не в сети

Зарегистрирован: Вс окт 15, 2006 13:05
Сообщения: 149
Откуда: Украина, Киев
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Ок, по задаче 1. Мой вариант.
Код:
( Шифр Цезаря, задачка 1 )

CREATE DecFrom C" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ",
CREATE DecTo   C" +/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ",

: decodeFrom  ( -- addr u ) DecFrom COUNT ;
: AddrFrom2To ( addrFrom -- addrTo ) \ ковертирует адрес символа из строки DecFrom в адрес аналогичного символа из строки DecTo
    DecFrom - \ получил смещение
    DecTo +   \ можно еще оптимизировать, тк участвует две константы: [ DecTo DecFrom - ] +
;

: decodeChar ( addr_char -- ) \ декодировать символ, расположенный по адресу addr_char
  >R decodeFrom R@ 1 SEARCH
  IF   \ Нашли, символ заменяем на другой
    DROP AddrFrom2To
    C@ ( decode_char )
    R> C! 
  ELSE \ Не Нашли, с символом ничего не делаем
    2DROP RDROP
  THEN
;

: decodeStr  ( addr u -- ) \ Декодировать строку согласно шифру Цезаря
   OVER + SWAP ( addr_end addr_beg )
   DO
       I decodeChar
   LOOP
;

\ -------------------- test section ---------------------------
: t1 [CHAR] g SP@ decodeChar  EMIT ;
: t2 S" ABCDEFроодолд" 2DUP decodeStr TYPE ;
\EOF


Фактически задача сводится к более общей -- к задаче перекодирвоания строки путем замены символов из таблицы соответствия. В перле это решается одной командой, а-ля:
Код:
$str =~ tr/ABCD/CDAB/ ;

Когда-то я об этом писал: http://forth-j.narod.ru/day10.htm

Аналогич можно взять за основу слово CKOI>WIN из ~ac\lib\string\CONV.F

Выше представле вариант реализации с сипользованием слова SEARCH, которое содержит в себе циклы поиска и замены. По сравнению, с раннее предложенным решением, это обладает:

- большой наглядносью -- все строки замещения перед глазами;

- универсальностью -- достаточно добавить новые таблицы подстновок и мы получим перекодирование из одной кодировки в другую;

- не уверен, но мне кажется большим быстродействием, т.к внутренний цикл реализован прямо на асме в определении слова SEARCH


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 25, 2007 17:44 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
AlexF писал(а):
Идея хорошая, жаль примеров мало :(

Как-то очень неудобно смотрится в FF. В листингах пробелы почему-то убираются и слова отображаются слитно. Графики не отображаются -- не ловит FF расширение svgя :(

Пробовал распечатать -- распчаталась только заглавная страница.


Это похоже какой-то глюк блога, т.к. я наблюдал такой же эффект под Оперой. Помогло перегрузить страницу.. Сейчас проверил на FF 1.5 - листинги ок.
Глюк с распечаткой в Опере не повторяется, так что это похоже проблема FF (валидация страницы показывает ошибки, но вряд ли атрибут id влиет на макет печати..)
Картинку svgz заменил на svg - хотя бы показывает, но в каком-то невразумительно маленьком окошке... Простой png наверное всё таки лучше будет с точки зрения accessability :)

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 27, 2007 09:50 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
AlexF писал(а):
Идея хорошая, жаль примеров мало :(
.


Есть ресурс http://www.rosettacode.org/wiki/Main_Page
с разными простыми задачами с решением на разных языках.
Форт тоже присутствует:).

P.S. Ссылку привели в comp.lang.forth
Можно и код для SPF поместить на wike.:)
Там еще приведены ссылки на разные интересные страницы примеров
реализации простых задач на разных языках.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн май 04, 2009 15:41 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
По ссылке выше

http://rosettacode.org/wiki/Category:Forth ( имеющиеся решения на Forth )
http://rosettacode.org/wiki/Tasks_not_i ... d_in_Forth ( ещё не включены решения на Forth )

P.S. Factor тоже там присутствует, но заполнение небольшоё:)
Скидать бы решения в один архив. т.к. сделанные решения отображаются
для всех языков.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 17, 2009 15:26 
Ну а вот полегче)))

import string
trans = string.maketrans(string.ascii_lowercase,
string.ascii_lowercase[2:]+string.ascii_lowercase[:2])
str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypcdmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
print str.translate(trans)


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB