Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 2

задача на перестановку кубиков методом поиска в ширину

04.12.2012, 18:33. Показов 1419. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
работающая программа есть,но нужно переделать,чтоб список кубиков вводить самому..
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
domains
    s=symbol
    list=s*
    l2=list*
    l3=l2*
    l4=l3*
predicates
 
nondeterm   tgoal(l2)
nondeterm   delete(list,l2,l2)
nondeterm   member(l2,l3)
nondeterm   conc(l4,l4,l4)
nondeterm   after(l2,l2)
nondeterm   solve(l2,l3)    
nondeterm   in_width(l4,l3)
nondeterm   new_node(l2,l3,l3)
nondeterm   write_list(l3)  
clauses
    tgoal([[a,b,c],[],[]]). tgoal([[],[a,b,c],[]]). tgoal([[],[],[a,b,c]]). 
    after(Stolbs,[Stolb1,[Up1|Stolb2]|Rest]):-
        delete([Up1|Stolb1],Stolbs,Stolbs1), delete(Stolb2,Stolbs1,Rest).
    delete(X,[X|L],L).
    delete(X,[Y|L],[Y|L1]) :- delete(X,L,L1).
    member(X,[X|_]).
    member(X,[_|Tail]):- member(X,Tail).
    conc([],L,L).
    conc([X|L1],L2,[X|L3]) :- conc(L1,L2,L3).
solve(Start,Solution) :- in_width([[Start]],Solution).
in_width([[Node|Path]|_],[Node|Path]) :- tgoal(Node).
in_width([[B|Path]|Paths],Solution) :- findall(S, new_node(B,S,Path),   NewPaths),
        /* NewPaths - ациклические продолжения пути [B|Path] */
    conc(Paths,NewPaths,Paths1),!, in_width(Paths1,Solution);
        in_width(Paths,Solution).  % случай, когда у B нет преемника
new_node(B,S,Path) :- after(B,B1), not(member(B1,[B|Path])), S=[B1,B|Path].
write_list([X|Rest]):-write("\n",X),readchar(_), write_list(Rest).
write_list([]).             
goal
    solve([[c,a,b],[],[]],Solution), write_list(Solution).
пыталась переделать
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
domains
    list=char*
    l2=list*
    l3=l2*
    l4=l3*
database
tgoal(l2)   
predicates
    
nondeterm   delete(list,l2,l2)
determ  member(l2,l3)
determ  conc(l4,l4,l4)
nondeterm   after(l2,l2)
nondeterm   solve(list,l3)  
determ  in_width(l4,l3)
nondeterm   new_node(l2,l3,l3)
determ  write_list(l3)  
convert (string,list)
 
clauses
  convert(S1,[H|T]):- frontchar(S1,H,S2),!,convert(S2,T).
convert(_,[]).
        
    after(Stolbs,[Stolb1,[Up1|Stolb2]|Rest]):-
        delete([Up1|Stolb1],Stolbs,Stolbs1), delete(Stolb2,Stolbs1,Rest).
    delete(X,[X|L],L).
    delete(X,[Y|L],[Y|L1]) :- delete(X,L,L1).
    member(X,[X|_]).
    member(X,[_|Tail]):- member(X,Tail).
    conc([],L,L).
    conc([X|L1],L2,[X|L3]) :- conc(L1,L2,L3).
    
solve(Start,Solution) :-in_width([[Start]],Solution).
in_width([[Node|Path]|_],[Node|Path]) :- tgoal(Node).
in_width([[B|Path]|Paths],Solution) :- findall(S, new_node(B,S,Path),   NewPaths),
        
    conc(Paths,NewPaths,Paths1),!, in_width(Paths1,Solution);
        in_width(Paths,Solution). 
new_node(B,S,Path) :- after(B,B1), not(member(B1,[B|Path])), S=[B1,B|Path].
write_list([X|Rest]):-write("\n",X),readchar(_), write_list(Rest).
write_list([]).             
goal
write("Vvedite nachalnoe znachenie\n"),
readln(Str),convert(Str,Start), 
assert(tgoal([Start,[],[]])),
write("Vvedite konechnoe znachenie\n"),readln(Str2),
convert(Str2,Endl),
solve( Endl,Solution),write_list(Solution),nl.
выдает ошибку E;Test_Goal, pos: 777, 505 Type error: Illegal variable type for this position в 33 строчке..Помогите исправить ошибку,если можете)))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2012, 18:33
Ответы с готовыми решениями:

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

Построить стягивающее дерево неориентированного графа методом поиска в ширину и вывести список рёбер дерева
1: Построить стягивающее дерево неориентированного графа методом поиска в ширину и вывести список рёбер дерева. Граф задан в текстовом...

Перемещение кубиков. Поиск в ширину
Нужно переместить кубики из заданного положения в конечное. a => a b => c c => b Осуществить поиск в ширину. (setq l1 (list...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2012, 18:33
Помогаю со студенческими работами здесь

Алгоритмы поиска кратчайших путей в ширину и двунаправленный в ширину
Реализовать алгоритм поиска кратчайшего пути. Двунаправленный поиск в ширину. Вот есть 2 алгоритма поиска в ширину. ...

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

Задача о рюкзаке методом ПОИСКА ПО ШИРИНЕ python
import time start = time.time() from queue import Queue from queue import LifoQueue from copy import copy class Uzel: def...

Смоделировать работы алгоритмов поиска в ширину и поиска в глубину
Здравствуйте! Требуется помощь, имеется следующий граф, нужно смоделировать на нём работы алгоритмов поиска в ширину и поиска в глубину.

Разработать программы поиска в глубину и поиска в ширину при описании графа с помощью матрицы смежности
Ребят помогите, на носу экзамен. Дали задачу,для получения зачета. Весь мозг себе сломал, не как не знаю как её сделать. Прошу вашей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru