Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.128.78.41] |
|
Сообщ.
#1
,
|
|
|
:-[ Help!!!
Кто-нибудь представляет как должны выглядеть Фибоначи и Акерман на Прологе???? Поделитесь с глупой девушкой :-/ |
Сообщ.
#2
,
|
|
|
Глупые девушки таких злобных вопросов не задают ;D
|
Сообщ.
#3
,
|
|
|
Откуда такой раритет откопали- ПРОЛОГ. ;D
|
Сообщ.
#4
,
|
|
|
2GrAnd: почему раритет? )) Нам в прошлом году в институте полгода сначала Lisp читали, а другие полгода Prolog
|
Сообщ.
#5
,
|
|
|
Просто довольно специфический, узконаправленный язык. Тем более с ЛИСПОМ встречался довольно часто, а вот с ПРОЛОГМ - пардоньте не видался давно (хотя то же нам его читали) :-/ :-/ :-/
|
Сообщ.
#6
,
|
|
|
Вообще-то, Пролог - самый используемый язык для искусственного интеллекта (но вы наверное это и без меня знали!), а никакой не раритет!!!
А вот, хотите ещё задачку? (хотя, скорее всего не хотите... :( ) S E N D + M O R E ---------- M O N E Y Надо написать програмку, чтобы она подбирала замену буковкам. |
Сообщ.
#7
,
|
|
|
Для самого простого и самого долгого метода достаточно принять метод прямого перебора все цифр для каждой буквы. ;D ;D ;D Для ускорения добавить учет неповторяемости цифр (каждой букве одна цифра). Вопрос в том, что надо - Получить правильное решение, или решить наиболее оптимальным методом. ;D ;D ;D
|
Сообщ.
#8
,
|
|
|
Хе-хе, это всё я и сама знаю. Проблема в том что я не знаю как это выразить на прологе?! :( А вы всё смеётесь....
|
Сообщ.
#9
,
|
|
|
Опять ты о ПРОЛОГЕ.
Организовываешь циклы для каждой буквы от 0 до 9 и подставляешь в данное выражение и проверяешь его правильность. В ПРОЛОГЕ наверное есть же циклы и условные операторы. P.S. А улыбаюсь я всем с кем разговариваю ;D ;D ;D |
Сообщ.
#10
,
|
|
|
Циклы в прологе только рекурсивные... (чтоб их...) И вообще тут всё как-то сложно и не так как везде (или это мне только так кажется) Ну да ладно, как-нибудь осилим
Жалко только такой прекрасный солнечный день проводить за подобной ... :( НО все равно спасибо ;D ;D ;D |
Сообщ.
#11
,
|
|
|
Цитата Натали, 21.05.02, 16:26:55 Эх, Наташа... не ту ты профессию себе выбрала Жалко только такой прекрасный солнечный день проводить за подобной ... |
Сообщ.
#12
,
|
|
|
Если есть адресок в почте - оставь, через пару часов вспомню, что нам давали по ПРОЛОГУ и скину. ;D ;D ;D
|
Сообщ.
#13
,
|
|
|
Да нет, это по началу трудно (надеюсь :-/ ...) А вообще проффесия, она хорошая
Адресс: nataly99999@hotmail.com И спасибо пребольшущее заранее |
Сообщ.
#14
,
|
|
|
Будем думать ;D ;D ;DТолько за пивом сбегаю
|
Сообщ.
#15
,
|
|
|
Кажись так должно быть.
РЕБУС (0,0,0,0,0,0,0,0). РЕБУС (S,E,N,D,M,O,R,Y):-integer(S),S<9,S is S+1, integer(E),E<9,E is E+1, integer(N),N<9,N is N+1, integer(D),D<9,D is D+1, integer(M),M<9,M is M+1, integer(O),O<9,O is O+1, integer(R),R<9,R is R+1, integer(Y),Y<9,Y is Y+1, 1000*(S+M)+100*(E+O)+10*(N+R)+D+E= 10000*M+1000*O+100*N+10*E+Y write(S,E,N,D,M,O,R,Y), РЕБУС(S,E,N,D,M,O,R,Y). Хотя может память мне и изменяет. Ну и геморррой этот ваш ПРОЛОГ ;D ;D ;D |
Сообщ.
#16
,
|
|
|
Быстро ты однако!!! (за пивом... )
Но пока не получается - он говорит "syntax error". Там должен как-то фигурировать функтор select(X,L,L1) где L соответственно список из которого мы выбираем значения для буковок (во всяком лучае по подсказкам нашей SWM) Но в любом случае здорово!!! Идея понятна, будем над ней работать дальше. Глядишь чего-нибудь получится Спасибо |
Сообщ.
#17
,
|
|
|
Пиво то рядом - в холодильнике . А с ПРОЛОГОМ извини чем смог, тем помог. Многое в ПРОЛОГЕ зависит от интерпретатора, а у меня есть только своеобразный эмулятор. ;D ;D ;D Правда видать совсем корявый, если у тебя ругается (у меня не сказал ничего, правда уже битую минуту решает данную задачку). А про инициализацию списков, извини помочь не смогу (давно это было). :
|
Сообщ.
#18
,
|
|
|
Ну вот :)
Ругаться перестал (я там запятую дописала - только это я и умею ). НО все равно все буковки у него равны нулю, видите ли!!! Да-а-а! И Холодильника с пивом у меня тоже нет. ТОлько автоматы с колой, до которых бежать несколько этажей |
Сообщ.
#19
,
|
|
|
Это оказалось намного сложнее чем я думал. :-/
Надо еще подумать. Постараюсь до завтра, что - нибудь придумать. ;D ;D ;D |
Сообщ.
#20
,
|
|
|
Спасибо!
|
Сообщ.
#21
,
|
|
|
??? A ya vot kakuu programku nashla (eto opyat' pro rebus). Obna pravda vse ravno pochemu-to ne rabotaet. Hotya ya ee i tak i syak menyala. Mozet kto-nibud' znaet chto s nei takoe?
Vopros programme zadaetsya sleduushii: sdmm([0,S,E,N,D],[0,M,O,R,E],[M,O,N,E,Y]) A ona na eto vydaet, chto vse peremennye ravny nulu. Kazetsya chto chto-to ne tak c funktorom "summe" (v pervom opredelenii) Pomogite kto-nibud'!!!!!!!!!!! :-[ sdmm(L1,L2,L):- sdmm1(L1,L2,L,0,0,[0,1,2,3,4,5,6,7,8,9],_). sdmm1([],[],[],0,0,D,D). sdmm1([X1|L1],[X2|L2],[X|L],Y1,Y,D1,D):- sdmm1(L1,L2,L,Y1,Y2,D1,D2), summe(X1,X2,Y2,X,Y,D2,D). summe(0,0,Y1,Y1,0,D,D). summe(X1,X2,Y1,X,Y,D1,D):- select(X1,D1,D2), select(X2,D2,D3), select(X,D3,D), S is X1 + X2 + Y1, X is S mod 10, Y is S div 10. |
Сообщ.
#22
,
|
|
|
Не понятно почему используется такое определение
sdmm1(L1,L2,L,0,0,[0,1,2,3,4,5,6,7,8,9],_). И что вообще делает эта программа. Сидел разбирался, но тоько одни баги кругом. ;D ;D ;D Кстати, что за ПРОЛОГ вы используете : |
Сообщ.
#23
,
|
|
|
Это програмка из книжки И.Братко.
sdmm1(L1,L2,L,0,0,[0,1,2,3,4,5,6,7,8,9],_). Первые три переменные - это списки [0,S,E,N,D],[0,M,O,R,E],[M,O,N,E,Y] ну или другие, в зависимости от ребуса. Следующие две переменные это перенос, т.е. остаток от сложения, переносимый на следующий столбик (то что "в уме" Ну и последние две переменных - списки чисел из которых мы берем значения для наших буковок. Первый - до выбора одного из чисел, второй - после (т.к. числа не должны повторяться, мы удаляем уже использованное число из списка) А функция summe по идее должна проводить сложение по столбикам. Но она что-то не хочет этого делать... Почему, никак не могу понять ... А вообще мы используем SWI-Prolog 5.0.6 в Minimal Internet Programming Environment (MVC). Если честно, я другим ничем никогда не пользовалась. И вообще я эти делом только 2 месяц занимаюсь... :-/ По-этому видимо так всё со скрипом... Натали :) |
Сообщ.
#24
,
|
|
|
Ура!!!!! Достал я ваш ПРОЛОГ. Сейчас что-нибудь придумаем. ;D ;D ;D
|
Сообщ.
#25
,
|
|
|
Ну и как он, наш Пролог? ;)
|
Сообщ.
#26
,
|
|
|
Хотелось бы хуже, да некуда!!! И зачем вас такой бодяге учат. ;D ;D ;D
|
Сообщ.
#27
,
|
|
|
Меня вот тоже всё чаще стал мучить этот вопрос!
|
Сообщ.
#28
,
|
|
|
Завтра скину на форум нормальное решение. ;D ;D ;D Уже проверил вроде работает нормально, только некоторые проблемы возникают
|
Сообщ.
#29
,
|
|
|
посмотрел я свои запасы было время нас тоже мучали Прологом.
Списки,деревья, факториалы есть ,а вот фибоначи нету. Жаль ну если нужны Списки,деревья, факториалы - Могу выложить. |
Сообщ.
#30
,
|
|
|
Попробуй так:
Fibonacci V1: fibo_bu(N,F):-fibo_bu1(0,0,1,N,F). fibo_bu1(N,F,_,N,F) fibo_bu1(N1,F1,F2,N,F):- N1<N, N2 is N1+1, F3 is F1+F2, fibo_bu1(N2,F2,F3,N,F). Fibonacci V2: fibo_td(0,0). fibo_td(1,1) fibo_td(N,F):- N>1, N1 is N-1, N2 is N-2, fibo_td(N1,F1), fibo_td(N2,F2), F is F1+F2. Аккерман: ack(0,N,Val) :- Val is N + 1. ack(M,0,Val) :- M > 0, M1 is M-1, ack(M1,1,Val). ack(M,N,Val) :- M > 0, N > 0, M1 is M-1, N1 is N-1, ack(M,N1,Val1), ack(M1,Val1,Val). Пролог рулит Правда интерпретатор свой я похерил, так что сам не проверял уж извиняйте... |
Сообщ.
#31
,
|
|
|
Цитата spirt, 18.05.02, 16:19:32 2GrAnd: почему раритет? )) Нам в прошлом году в институте полгода сначала Lisp читали, а другие полгода Prolog А у меня - всё то же - только в пошлом семестре и этом. :) |
Сообщ.
#32
,
|
|
|
:DPrivet !!!
K state na kakom Prologe ti programiruesg ??? |