Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:38

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 24, 2008 23:55 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
garbler писал(а):
mOleg писал(а):garbler
спасибо за участие, но ваш код не полностью соответствует ТЗ 8( надо бы отсеивать уже встреченные комбинации.
а они и отсеиваются, тут как раз всё корректно, на каждом шаге рекурсии
символ каждого вида юзается только один раз. поскольку перестановки получаются
из набора символов всегда все и нет ограничения на порядок их следования
(перестановок), то достаточно просто хранить в хвосте нужные символы,
не обращая внимания на их порядок.

было бы идеально, если бы вы хоть чуть-чуть прокоментировали свой код 8)
(это у меня такое желание несбыточное есть 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 25, 2008 03:49 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
white_TigR писал(а):
Код:CREATE SYMS 256 ALLOT
CREATE CODE  10 ALLOT
CREATE COUNT 10 ALLOT

прошу прощения, для какой системы данное решение?
если для СПФ, то не хватает какой-то либы 8(

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 25, 2008 04:23 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
garbler писал(а):
mOleg писал(а):
ничего, если я немного прокоментирую ваш код?
с удовольствием, буду только рад

garbler писал(а):
DUP 0 = IF 2DROP 0 EXIT THEN


на самом деле по мелочи, просто бросилось в глаза, лучше так:
DUP IFNOT NIP NIP EXIT THEN

либо, если ifnot в системе отсутствует:
DUP IF ELSE NIP NIP EXIT THEN

потому что флаги в форте дважды проявлять не стоит 8)

вопрос не принципиальный на самом деле, не счиатйте за замечание, а скорее за примечание ;)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 25, 2008 11:18 
Не в сети
Аватара пользователя

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
вопрос писал(а):
но алгоритм всё равно рекурсивный (конец строки - на самом деле начало)
Другое дело - я бы потребовал доказательство, не отсеиваются ли при этом "законные" строки, т.к. не всё меняется со всем


с доказательством сложнее, всегда завидовал людям, знающим математику.
проверить можно так: для всех вариантов всех строк, скажем, длиной
до 5-6 символов сгенерировать все перестановки (подменой cnotfind) в setb
и сгенерировать перестановки без дублей исходным алгоритмом в seta

далее:
1) должно выполняться условие первого рода - cat seta | sort | uniq == cat seta | sort
2) должно выполняться условие второго рода - cat seta | sort == cat setb | sort | uniq

вот такой вот регрессионный тест....


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

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
mOleg писал(а):
white_TigR писал(а):
Код:CREATE SYMS 256 ALLOT
CREATE CODE  10 ALLOT
CREATE COUNT 10 ALLOT

прошу прощения, для какой системы данное решение?
если для СПФ, то не хватает какой-то либы 8(


это не для spf, но под ним запускается после пары корректировок

в начало записать это:
Код:
: CLS ; IMMEDIATE
: GOTOXY POSTPONE 2DROP ; IMMEDIATE
: PRINT BEGIN DUP C@ WHILE DUP C@ EMIT 1+ REPEAT DROP ;
: Recurs POSTPONE RECURSE ; IMMEDIATE


а в конец вот это:
Код:
S" aabcaaa" DROP variants . CR


а что это за система - надо тигру спрашивать :-)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 25, 2008 11:41 
Не в сети
Аватара пользователя

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
mOleg писал(а):
garbler писал(а):
DUP 0 = IF 2DROP 0 EXIT THEN


на самом деле по мелочи, просто бросилось в глаза, лучше так:
DUP IFNOT NIP NIP EXIT THEN

либо, если ifnot в системе отсутствует:
DUP IF ELSE NIP NIP EXIT THEN

потому что флаги в форте дважды проявлять не стоит 8)

вопрос не принципиальный на самом деле, не считайте за замечание, а скорее за примечание ;)


ммм.... это не совсем флаг был, скорее длинна строки, поэтому я так "шаблонно"
и написал. да, думаю, замена адекватная, как вариант ещё так можно:

Код:
?DUP IF .... ELSE 0 AND THEN ( или 0 NIP или DROP 0 )


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

если говорить о флагах, то тогда лучше ещё и cnotfind переписать
с применением TRUE и FALSE

Код:
: (cnotfind) ( c s2 s1 --> t/f )
    TRUE -ROT ?DO OVER I C@ = IF FALSE AND LEAVE THEN LOOP NIP
;


p.s. 2all: кстати, очень рекомендую книгу
А.Шень "Программирование. Теоремы и задачи"
изумительная вещь!

p.p.s. код со всеми правками здесь


Последний раз редактировалось garbler Пн янв 28, 2008 14:38, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 25, 2008 11:42 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mOleg писал(а):
прошу прощения, для какой системы данное решение? если для СПФ, то не хватает какой-то либы 8(

garbler писал(а):
а что это за система - надо тигру спрашивать

Это же Кварк.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 00:47 
угу. Кварк :))) Просто он как то ближе мне...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 13:17 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
garbler писал(а):
просто я обычно коротким условием обрываю код сразу, чтобы не мешался,
не люблю глубокую вложенность структур управления, так что, вот он и второй
"шаблон".....

абсолютно правильное решение! 8) я тоже так всегда делаю.

white_TigR писал(а):
угу. Кварк ) Просто он как то ближе мне...

читаем правила 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 27, 2008 01:27 
mOleg писал(а):
читаем правила


Цитата:
7) обязательно указание на форт-систему, для которой написан код; версию системы. В случае уникальности форт-системы обязательна прямая ссылка, по которой она может быть найдена.


Quark http://www.msyst.ru/quarkexe.zip


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 27, 2008 01:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Кварк - уникален... :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

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


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

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


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

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