LINUX.ORG.RU
ФорумTalks

Пролог


0

3

Кто-нибудь знает джаббер или IRC конференции по прологу? Желательно русские.

Алсо, если есть желающие подсказать по нескольким вопросам, можно создать свою на jabber.ru

★★★★★
Ответ на: комментарий от bik

Пробовал. Один вопрос обсосать на пару страниц уйдет, да и быстродействие форума невелико. Мне все-таки хочется в конференции.

Ну а если попробовать тут: как в swi сделать write с несколькими аргументами? Пример: write(A, B, C, D), где могут быть строки, термы и прочее.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от bik

И все же, лучше напишите мне на джаббер (в профиле). Ну неудобно мне по каждой строчке кода на форуме спрашивать.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от bik
выбрать_путь(X, Y) :-
    минимум(X + 1, Y, X, Y + 1, X - 1, Y, X, Y - 1, X_new, Y_new),
    идти(X_new, Y_new).

минимум(X1, Y1, X2, Y2, X3, Y3, X4, Y4, X_new, Y_new) :-
    расстояние(X1, Y1, R1),
    расстояние(X2, Y2, R2),
    расстояние(X3, Y3, R3),
    расстояние(X4, Y4, R4),
    (R = R1; R = R2; R = R3; R = R4),
    (R =< R1; (были(X1, Y1))),
    (R =< R2; (были(X2, Y2))),
    (R =< R3; (были(X3, Y3))),
    (R =< R4; (были(X4, Y4))),
    (
        (X_new = X1, Y_new = Y1);
        (X_new = X2, Y_new = Y2);
        (X_new = X3, Y_new = Y3);
        (X_new = X4, Y_new = Y4)
    ),
    расстояние(X_new, Y_new, R).

расстояние(X, Y, R) :-
    цель(X_target, Y_target),
    R = X ^ 2 + Y ^ 2 + X_target ^ 2 + Y_target ^ 2.

Задумка в том, что из 4 направлений выбираем то, которое ближе к цели, потом второе по близости, потом остальные. Но он строку X + 1 передает не посчитанным числом, а как «X + 1». Ну и в остальном быдлокоде наверняка есть ошибки, до которых я пока не дошел.

И это малая часть вопросов.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от bik

Я не хочу присваивать переменной, я хочу передать X + 1 как аргумент правилу. Что, обязательно надо записать это в X1, а его уже передавать?

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

ага, передавайте X1. да, это неудобно :)

bik ★★
()
Ответ на: комментарий от bik

Читал. Но там общий синтаксис, а такие специфичные вещи я не нашел. ИМХО удобнее спрашивать по ходу.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

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

bik ★★
()
Ответ на: комментарий от vurdalak

значит нету такой. Заходи тогда на programming@jabber.ru и спамь там

Bad_ptr ★★★★★
()
Ответ на: комментарий от bik

Вопрос следующий. Программа по ходу дела добавляет правила были(X, Y), где X и Y - каждый раз новые числа. Добавляю с помощью assertz. Как удалить все правила «были», а не искать их по каждой координате и удалять по одному?

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Один вопрос обсосать на пару страниц уйдет, да и быстродействие форума невелико.

ФИДОшники смотрят на тебя с укоризной.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Мой нейроинтерфейс со встроенным АМС смотрит на тебя как на биотопливо.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

я, конечно, тоже тот еще специалист в прологе - но я бы, кстати, вашу простыню заменил бы на следующий код:

% Ypath и Xpath - направление 
path(FromX, FromY, ToX, ToY, Xpath, Ypath) :-
	cmp(FromX, ToX, Rx), Xpath is - Rx,
	cmp(FromY, ToY, Ry), Ypath is - Ry.

cmp(A,B,1) :- A > B, !.
cmp(A,B,-1) :- A < B, !.
cmp(_,_,0).

p.s. код не проверял, писал прямо тут

bik ★★
()
Ответ на: комментарий от bik

да, вам нужно же искать еще и менее близкие направления, но я думаю, ход мыслей понятен

bik ★★
()
Ответ на: комментарий от bik

а где, интересно, сейчас такая работа есть, чтобы на прологе писать надо было?

Самому интересно. Должны быть такие. Даже на ЛОРе была такая вакансия, емнип, в СПб.

power
()
Ответ на: комментарий от bik

Так и я могу. А надо сделать так, чтобы он находил координаты в порядке увеличения расстояния. Пока работает, только кривовато. Код я уже местами изменил, кстати.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от power

> Даже на ЛОРе была такая вакансия, емнип, в СПб.

Была, была, я помню это объявление. Они какие-то системы складского учёта пилили.

runtime ★★★★
()

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

runtime ★★★★
()

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

runtime ★★★★
()
Ответ на: комментарий от runtime

Ну, если напомните мне в эту тему ближе к выходным - запилим prolog@conference.jabber.ru

Ну а пока нет смысла без участников.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

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

bik ★★
()
Ответ на: комментарий от runtime

Уже заглянул. Мне там пояснили, что я глупышка и ленюсь читать учебники. Поэтому сейчас я полез в них :)

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от runtime

Нет. Я уже закончил им заниматься, поскольку нужный код написал. Просто у меня по нему диплом.

Язык интересный, но ИМХО только для изучения. Когда я понял принцип работы унификатора, я смогу применять его в обычных функциональных языках. Причем там это будет удобнее.

vurdalak ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.