Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизВторничная задачка Найти похожие ветки
← →
Kerk © (2004-12-21 09:36) [0]В языке PROLAN/F, предназначенном для работы со строками символов и
логическими значениями, программа состоит из двух частей. Первая часть
содержит разделенные запятыми определения функций (с логическими либо
строковыми значениями и логическими или строковыми формальными параметрами),
а вторая - запросы значений функций для конктреных параметров - строк символов
(например, "abs") или логических констант (ДА и НЕТ).
В языке есть несколько функций:
ПУСТО?(х) (х - строка, результат - ДА, если х пустая, и НЕТ - если х непуста);
СИМРАВ?(х,у) (х,у - односимвольные строки; результат - ДА, если строки совпадают);
КОНСИМ(х) (х - непустая строка; результат - односимвольная строка, состоящая из последнего символа строки х);
НАЧСТР(х) (х - непустая срока; результат - строка, получающаяся удалением в х последнего символа);
ПРИПКОНСИМ(х,у) (х - строка, у - односимвольная строка; результат - строка, получающаяся приписыванием символа у в конец х);
Определение новой функции записывается так:
<имя функции>(<перечень формальных параметров>)=<условное значение>Здесь <перечень формальных параметров> - разделенные запятыми идентификаторы формальных параметров,
а <условное значение> имеет вид:
(<условие>-<значение>,<условие>-<значение>,..,ИНАЧЕ-<значение>)
При исполнении условное значение равно самому первому из тех <значений>, для которых
записанные перед ними условия истинны, если же все условия ложны - то значению, записанному
после "ИНАЧЕ".
Участвующие в записи <условного значения> <условия> и <значения> могут быть:
а) логическими или строковыми константами,
б) элементами <перечня формальных параметров> текущего определения,
в) обращениями к встроенным либо описанным функциям,
г) некоторыми <условными значениями>.
Такими же могут быть и аргументы функций, используемых в определении.
Заметим, что в данном языке отстутствуют такие объекты, как переменные, оператор
присваивания, цикл и т.п., что делает программирование на нем весьма не очень
скучным занятием.
ПРИМЕРЫ:
Определение логического отрицания:
не(х)=(х-НЕТ,ИНАЧЕ-ДА)
Логическое "и":
и(х,у)=(х-у,ИНАЧЕ-НЕТ)
Логическое "или":
или(х,у)=(х-ДА,у-ДА,ИНАЧЕ-НЕТ)
либо
или(х,у)=(ДА-не(и(не(х),не(у))),ИНАЧЕ-"")
ТРЕБУЕТСЯ дать на описанном языке определения функций с аргументами - строками:
а) СТРРАВ?(х,у) - равна "ДА", если аргументы равны;
б) СТРПРИНАДЛ?(х,у) - равна "ДА", если строка х является подстрокой у (т.е.
некоторая совокупность идущих подряд символов строки у образует строку х);
в) ПЕРЕВОР(х) - строка, получаемая перестановкой символов строки х в обратном порядке;
г) ПОДСТАВИТЬЛЕВ(х,у,z) - строка, получающаяся из строки z заменой самого левого
вхождения в нее подстроки х (если таковые в z есть) на строку у.
===
бан - оружие слабых.
← →
Johnmen © (2004-12-21 09:38) [1]Своё домашнее задание ты должен решить сам.
← →
Kerk © (2004-12-21 09:49) [2]Ой.. давай не будем.. :)
Я по-моему уже достаточно давно на форуме, чтоб народ знал, что я так не поступаю...
← →
Johnmen © (2004-12-21 10:04) [3]>Kerk © (21.12.04 09:49) [2]
>Я по-моему уже достаточно давно на форуме, чтоб народ знал, что
>я так не поступаю...
Юношеский нарциссизм ? :)))
PS Народ м.б. и знает, а я нет.
← →
Kerk © (2004-12-21 10:08) [4]
> Юношеский нарциссизм ? :)))
Ну чего мне сегодня с утра все диагнозы ставят? :)))
← →
Внук © (2004-12-21 10:09) [5]>>Kerk © (21.12.04 10:08) [4]
Хотите поговорить об этом? LOL
← →
TUser © (2004-12-21 10:10) [6]
а) СТРРАВ?(х,у)=
(и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),
СТРРАВ(НАЧСТР(х),НАЧСТР(у))))
в) ПЕРЕВОР(х)=
(КОНСИМВ(x)+ПЕРЕВОР(НАЧСТР(х)))
" я надеюсь конкатенация там разрешена,
" хотя это явно и не оговорено
" если да - то я большой спец по использованию
" рекурсии для переворачивания массивов
> Johnmen © (21.12.04 09:38) [1]
Мне, например, тоже интересно решить в и д функциональными методами.
← →
Kerk © (2004-12-21 10:13) [7]
> TUser © (21.12.04 10:10) [6]
Нет. Конкатенация не разрешена. Разрешено только то, что явно упомянуто. И в пункте А, что у тебя будет, если длины строк разные?
← →
Kerk © (2004-12-21 10:14) [8]В свое время я решил первые три. :)
← →
Johnmen © (2004-12-21 10:15) [9]>Kerk © (21.12.04 10:08) [4]
>Ну чего мне сегодня с утра все диагнозы ставят? :)))
Это всего лишь предположение.
>TUser © (21.12.04 10:10) [6]
>Мне, например, тоже интересно решить в и д функциональными методами.
Так никто не против...:)
← →
Kerk © (2004-12-21 10:16) [10]
> > TUser © (21.12.04 10:10) [6]
К тому же у тебя ответы синтаксически неверно записаны. :)))
← →
MBo © (2004-12-21 12:16) [11]
СТРРАВ(x,y)=(
и(ПУСТО?(x),ПУСТО?(y))=ДА,
или(ПУСТО?(x),ПУСТО?(y))-НЕТ,
ИНАЧЕ
и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРРАВ(НАЧСТР(x),НАЧСТР(y)))
← →
Kerk © (2004-12-21 12:29) [12]
> MBo © (21.12.04 12:16) [11]
Первая самая простая - есть.
Кто дальше? :)
← →
MBo © (2004-12-21 12:41) [13]>Kerk © (21.12.04 12:29) [12]
Сильно напрягают русские имена функций, как оказалось ;)
А так - это работа со стеком, имеющим только Peek, Pop, Push
← →
MBo © (2004-12-21 13:08) [14]пришлось доп. функцию ввести:
СТРПРИНСТРОГ?(х,у)=(
ПУСТО?(x)-ДА,
ПУСТО?(y))=НЕТ,
ИНАЧЕ
и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРПРИНСТРОГ?(НАЧСТР(x),НАЧСТР(y)))
СТРПРИНАДЛ?(х,у)=(
ПУСТО?(x)-ДА,
ПУСТО?(y))=НЕТ,
и(СИМРАВ?(КОНСИМ(х),КОНСИМ(у)),СТРПРИНСТРОГ?(НАЧСТР(x), НАЧСТР(y))-ДА,
ИНАЧЕ
СТРПРИНАДЛ?(x,НАЧСТР(y)))
← →
Kerk © (2004-12-21 14:17) [15]
> MBo © (21.12.04 13:08) [14]
А что какой смысл ты вкладывал в название доп.функции? Что-то никак не соображу. Похоже ты единственный кому это здесь интересно. :(
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.032 c