Форум программистов, компьютерный форум, киберфорум
Наши страницы

Prolog

Войти
Регистрация
Восстановить пароль
 
Alexey_Scherbak
4 / 4 / 1
Регистрация: 13.05.2013
Сообщений: 114
#1

Вывести каждый элемент списка на новой строке - Prolog

14.10.2015, 09:21. Просмотров 661. Ответов 11
Метки нет (Все метки)

Интерпритация - swi-prolog
Prolog
1
2
3
4
5
6
7
8
dogs(["лайка","борзая","дог","болонка"]).
/*
 Разделение на голову и хвост
 [Head|Tail]
*/
print_dogs([]).
print_dogs([X|Y]) :- write(X),nl,
print_dogs([Y]).
Выводит на запрос
?- dogs(X), print_list(X).
[]
..
[]
А должен
?- dogs(X), print_list(X).
лайка
...
болонка
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 09:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести каждый элемент списка на новой строке (Prolog):

Разделить каждый элемент списка на 2 - Prolog
дан список элементы которого натуральные числа. разделить каждый элемент на 2

Умножить каждый элемент заданного списка на 2 - Prolog
Дан список, элементы которого натуральные числа. Умножить каждый элемент на 2. Помогите пожалуйста, совсем ничего не понимаю в прологе.

Скопировать каждый n-ный элемент списка - Prolog
Помогите пожалуйста решить следующую задачу: everyNth(N, List1, List2) копирует первый и, затем, каждый n-ный элемент списка List1 в...

Функция, удаляющая из списка каждый k-ый элемент - Prolog
Помогите пожалуйста. Опишите функцию, удаляющую из списка каждый k-ый элемент.

Возвести в квадрат каждый третий элемент списка - Prolog
Помогите с зачетом! Нужно написать функцию, возводящую в квадрат каждый третий элемент списка. Например: (1 -2 3 -4 -7 4 5) (1 -2 9 -4...

Предикат, умножающий каждый элемент списка на заданное число - Prolog
Определите предикат mnoz, умножающий каждый элемент числового списка на заданное число, например, истинно mnoz (, 2 ,).

11
Aleator
65 / 60 / 3
Регистрация: 04.05.2011
Сообщений: 1,219
14.10.2015, 11:36 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Prolog
1
2
3
4
5
6
7
dogs(['лайка','борзая','дог','болонка']).
 
% Разделение на голову и хвост
% [Head|Tail]
 
print_dogs([]):- !.
print_dogs([X|Y]):- writeln(X), print_dogs(Y).
2
Aleator
65 / 60 / 3
Регистрация: 04.05.2011
Сообщений: 1,219
14.10.2015, 11:39 #3
Тестирование
1
Миниатюры
Вывести каждый элемент списка на новой строке  
arlat
351 / 351 / 65
Регистрация: 07.10.2013
Сообщений: 781
15.10.2015, 13:34 #4
Prolog
1
2
3
4
5
6
7
8
:- set_prolog_flag(double_quotes, string).
 
dogs(["лайка","борзая","дог","болонка"]).
 
print_dogs([]).
print_dogs([X|Y]) :-
    write(X), nl,
    print_dogs(Y).
1
Alexey_Scherbak
4 / 4 / 1
Регистрация: 13.05.2013
Сообщений: 114
17.10.2015, 10:28  [ТС] #5
таак, а что делает :- set_prolog_flag(double_quotes, string).

Добавлено через 2 часа 41 минуту
Понял, по умолчанию в двойных кавычках не обязательно сроки, а
Prolog
1
:- set_prolog_flag(double_quotes, string).
принудительно задаёт значениям, в двойных кавычках тип string.
А почему в других программах не надо было это указывать, всё и так работало?
0
arlat
351 / 351 / 65
Регистрация: 07.10.2013
Сообщений: 781
17.10.2015, 17:41 #6
Цитата Сообщение от Alexey_Scherbak Посмотреть сообщение
А почему в других программах не надо было это указывать, всё и так работало?
И для SWI уже не надо указывать, но раньше, и во многих других реализациях, двойные кавычки указывали на список кодов. Это и сейчас удобно, если работать с DC-грамматиками, например. Predicate current_prolog_flag/2 Ну, такова особенность... Плюс, подчёркнуто, т.к. Aleator преобразовал ваш dogs к списку атомов, может версия Prolog другая.
0
Black Fregat
1434 / 1067 / 246
Регистрация: 31.05.2009
Сообщений: 4,399
18.10.2015, 02:39 #7
Цитата Сообщение от arlat Посмотреть сообщение
может версия Prolog другая
Там вроде совсем недавно по этому вопросу сделали какие-то перестановки, успел уже наступить на эти грабли.. Не просветите ли кратко - что именно поменяли и с какой версии?
0
arlat
351 / 351 / 65
Регистрация: 07.10.2013
Сообщений: 781
18.10.2015, 12:13 #8
Цитата Сообщение от Black Fregat Посмотреть сообщение
что именно поменяли и с какой версии
5 SWI-Prolog extensions В какой-то из стабильных 6.x.x сделали по умолчанию, дабы облегчить переход на 7.x
Цитата Сообщение от Black Fregat Посмотреть сообщение
успел уже наступить на эти грабли
Надо следить... Если предполагается разная обработка, но удобно в коде двойные кавычки, сразу ставлю в начале файла директиву
Prolog
1
:- set_prolog_flag(double_quotes, string).
потом, где надо
Prolog
1
:- set_prolog_flag(double_quotes, codes).
потом возвращаю в string, а что делать... До кучи ещё частенько
Prolog
1
:- style_check(-atom).
чтобы на большую строку, типа SQL-запроса, не ругался, и, не ставить \с для лучшего вида Character Escape Syntax и Predicate style_check/1
2
Alexey_Scherbak
4 / 4 / 1
Регистрация: 13.05.2013
Сообщений: 114
19.10.2015, 06:32  [ТС] #9
У меня получается 7
Bash
1
2
3
4
5
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit [url]http://www.swi-prolog.org[/url] for details.
0
arlat
351 / 351 / 65
Регистрация: 07.10.2013
Сообщений: 781
19.10.2015, 09:33 #10
Цитата Сообщение от Alexey_Scherbak Посмотреть сообщение
У меня получается 7
Да, и, к тому же, стабильная версия. У кого нет специфики, типа использование, как встроенной системы, то можно смело переходить на 7.2.3. Единственное, что надо отслеживать, 32 bits или 64 bits, если распространять... что собственно и для 6.x.x так же.
0
Alexey_Scherbak
4 / 4 / 1
Регистрация: 13.05.2013
Сообщений: 114
19.10.2015, 17:40  [ТС] #11
под встроенной Вы имеете ввиду использование в приложениях на pyton/C++...?
0
arlat
351 / 351 / 65
Регистрация: 07.10.2013
Сообщений: 781
19.10.2015, 17:44 #12
Цитата Сообщение от Alexey_Scherbak Посмотреть сообщение
под встроенной Вы имеете ввиду использование в приложениях на pyton/C++
Да, хотя и в этом случае вряд ли будут проблемы с 7.2.3. Все ведь, как обычно, и хотел бы на новую версию, а нельзя, если промышленная эксплуатация нормально работает и на 6.6.6
0
19.10.2015, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2015, 17:44
Привет! Вот еще темы с ответами:

Сколько раз каждый элемент списка встречается в дереве? - Prolog
на входе дерево, причём любое(не обязательно бинарное!, дерево в виде списка) и список элементов, нужно вывести сколько раз каждый элемент...

Swi prolog Возведите в квадрат каждый третий элемент списка - Prolog
Здравствуйте. Есть задача: "Возведите в квадрат каждый третий элемент списка." Как написать не знаю. Но есть мысли по реализации. ...

Предикат, записывающий каждый третий элемент списка в новый список - Prolog
Здравствуйте. Прошу помочь с написанием придиката, который будет записывать каждый третий элемент в новый список. Пишу в visual prolog 7.5....

Cписок: Предикат: del2(L1, L2). Удаляет из исходного списка L1 каждый второй элемент, результирующий список L2. - Prolog
Помогите решить: Предикат: del2(L1, L2). Удаляет из исходного списка L1 каждый второй элемент, результирующий список L2. Пример: Goal:...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru