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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - *найти все возможные комбинации букв внутри строки
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Кварк - уникален... :))
Сообщение Добавлено: Вс янв 27, 2008 01:31
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
читаем правила


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


Quark http://www.msyst.ru/quarkexe.zip
Сообщение Добавлено: Вс янв 27, 2008 01:27
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
просто я обычно коротким условием обрываю код сразу, чтобы не мешался,
не люблю глубокую вложенность структур управления, так что, вот он и второй
"шаблон".....

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

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

читаем правила 8)
Сообщение Добавлено: Сб янв 26, 2008 13:17
  Заголовок сообщения:   Ответить с цитатой
угу. Кварк :))) Просто он как то ближе мне...
Сообщение Добавлено: Сб янв 26, 2008 00:47
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
прошу прощения, для какой системы данное решение? если для СПФ, то не хватает какой-то либы 8(

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

Это же Кварк.
Сообщение Добавлено: Пт янв 25, 2008 11:42
  Заголовок сообщения:   Ответить с цитатой
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. код со всеми правками здесь
Сообщение Добавлено: Пт янв 25, 2008 11:41
  Заголовок сообщения:   Ответить с цитатой
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:25
  Заголовок сообщения:   Ответить с цитатой
вопрос писал(а):
но алгоритм всё равно рекурсивный (конец строки - на самом деле начало)
Другое дело - я бы потребовал доказательство, не отсеиваются ли при этом "законные" строки, т.к. не всё меняется со всем


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

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

вот такой вот регрессионный тест....
Сообщение Добавлено: Пт янв 25, 2008 11:18
  Заголовок сообщения:   Ответить с цитатой
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)

вопрос не принципиальный на самом деле, не счиатйте за замечание, а скорее за примечание ;)
Сообщение Добавлено: Пт янв 25, 2008 04:23
  Заголовок сообщения:   Ответить с цитатой
white_TigR писал(а):
Код:CREATE SYMS 256 ALLOT
CREATE CODE  10 ALLOT
CREATE COUNT 10 ALLOT

прошу прощения, для какой системы данное решение?
если для СПФ, то не хватает какой-то либы 8(
Сообщение Добавлено: Пт янв 25, 2008 03:49
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
mOleg писал(а):garbler
спасибо за участие, но ваш код не полностью соответствует ТЗ 8( надо бы отсеивать уже встреченные комбинации.
а они и отсеиваются, тут как раз всё корректно, на каждом шаге рекурсии
символ каждого вида юзается только один раз. поскольку перестановки получаются
из набора символов всегда все и нет ограничения на порядок их следования
(перестановок), то достаточно просто хранить в хвосте нужные символы,
не обращая внимания на их порядок.

было бы идеально, если бы вы хоть чуть-чуть прокоментировали свой код 8)
(это у меня такое желание несбыточное есть 8)
Сообщение Добавлено: Чт янв 24, 2008 23:55
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
mOleg писал(а):дайте пожалуйста ссылку на код
garbler писал(а):
mOleg писал(а):(если надо, могу разместить у себя).
было-бы неплохо.... если можно.

постоянного сайта у меня нет (безалаберность)

перенес примеры на Прологе и Перле, в сообщении оставил ссылки на них.
Сообщение Добавлено: Чт янв 24, 2008 23:51
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
может, лучше, для таких случаев раздел-(файло/исходнико)помойку на форуме создать?

http://everfall.com/paste/
Сообщение Добавлено: Чт янв 24, 2008 22:21
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
garbler
8) спасибо за участие, но ваш код не полностью соответствует ТЗ 8( надо бы отсеивать уже встреченные комбинации.

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

для того, чтобы ещё лучше увидеть разницу, рекомендую воспользоваться такой
версией (cnotfind)

Код:
: (cnotfind) ( c s2 s1 --> t/f ) 2DROP DROP 1 ;


так мы получим полный перебор без учёта "дублей" символов, входящих в строку

mOleg писал(а):
ничего, если я немного прокоментирую ваш код?

с удовольствием, буду только рад

mOleg писал(а):
например, для такой последовательности: s" 100000001" variants CR .
количество вариантов влезет на один экран ;)

для 80х25 не влезет, ибо 36 комбинаций

p.s.
mOleg писал(а):
дайте пожалуйста ссылку на код

постоянного сайта у меня нет (безалаберность)

mOleg писал(а):
(если надо, могу разместить у себя).

было-бы неплохо.... если можно.

или, может, лучше, для таких случаев раздел-(файло/исходнико)помойку
на форуме создать?
Сообщение Добавлено: Чт янв 24, 2008 21:40
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
думаю, алгоритм будет несколько виднее на прологе/перле, их и прицеплю:

обратите пожалуйтса внимание на правила конкурса пункт 5.
дайте пожалуйста ссылку на код (если надо, могу разместить у себя).
Сообщение Добавлено: Чт янв 24, 2008 21:37

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


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