Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Alexey_Scherbak
4 / 4 / 0
Регистрация: 13.05.2013
Сообщений: 114
1

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

14.10.2015, 09:21. Просмотров 744. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

11
Aleator
65 / 60 / 5
Регистрация: 04.05.2011
Сообщений: 1,236
14.10.2015, 11:36 2
Лучший ответ Сообщение было отмечено Alexey_Scherbak как решение

Решение

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 / 5
Регистрация: 04.05.2011
Сообщений: 1,236
14.10.2015, 11:39 3
Тестирование
1
Миниатюры
Вывести каждый элемент списка на новой строке  
arlat
364 / 362 / 70
Регистрация: 07.10.2013
Сообщений: 801
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 / 0
Регистрация: 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
364 / 362 / 70
Регистрация: 07.10.2013
Сообщений: 801
17.10.2015, 17:41 6
Цитата Сообщение от Alexey_Scherbak Посмотреть сообщение
А почему в других программах не надо было это указывать, всё и так работало?
И для SWI уже не надо указывать, но раньше, и во многих других реализациях, двойные кавычки указывали на список кодов. Это и сейчас удобно, если работать с DC-грамматиками, например. Predicate current_prolog_flag/2 Ну, такова особенность... Плюс, подчёркнуто, т.к. Aleator преобразовал ваш dogs к списку атомов, может версия Prolog другая.
0
Black Fregat
2523 / 1281 / 349
Регистрация: 31.05.2009
Сообщений: 4,984
18.10.2015, 02:39 7
Цитата Сообщение от arlat Посмотреть сообщение
может версия Prolog другая
Там вроде совсем недавно по этому вопросу сделали какие-то перестановки, успел уже наступить на эти грабли.. Не просветите ли кратко - что именно поменяли и с какой версии?
0
arlat
364 / 362 / 70
Регистрация: 07.10.2013
Сообщений: 801
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 / 0
Регистрация: 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
364 / 362 / 70
Регистрация: 07.10.2013
Сообщений: 801
19.10.2015, 09:33 10
Цитата Сообщение от Alexey_Scherbak Посмотреть сообщение
У меня получается 7
Да, и, к тому же, стабильная версия. У кого нет специфики, типа использование, как встроенной системы, то можно смело переходить на 7.2.3. Единственное, что надо отслеживать, 32 bits или 64 bits, если распространять... что собственно и для 6.x.x так же.
0
Alexey_Scherbak
4 / 4 / 0
Регистрация: 13.05.2013
Сообщений: 114
19.10.2015, 17:40  [ТС] 11
под встроенной Вы имеете ввиду использование в приложениях на pyton/C++...?
0
arlat
364 / 362 / 70
Регистрация: 07.10.2013
Сообщений: 801
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

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

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

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


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

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

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