2016-01-06 2 views
0

У меня есть некоторые факты в прологе. Я хочу определить правило, которое будет печатать данные обо всех аминокислотах форматным способом. вот ссылка, что у меня есть факты и некоторые правила, которые я определил сам. но я не могу получить работу по форматированию, я имею в виду, что я не хочу использовать несколько write() и даже форматирование вкладок, которые я не могу приступить к работе. вот моя логика, но она не работает. Я просто хочу создать отчет типа формата. Вот ссылка и код, который я пытался http://swish.swi-prolog.org/p/aminnoo.plформатирование вывода в прологе

> aminoname(_,H,ShortName), 
>  
>  write(H), 
>  write(ShortName),nl, /* write(ShortName), 
>  
>  %display [Hydropathy value] 
>  %format:aminoclass('Ala','Hydropathy','hydrophobic'). 
>  aminoclass(ShortName,'Hydropathy',HydropathyValue), 
>  write(HydropathyValue), 
> 
>  %display [Volume] 
>  %format:aminoclass('Ala','Volume','very small'). 
>  aminoclass(ShortName,'Volume',VolumeValue), 
>  write(VolumeValue), 
> 
>  %display [chemical value 
>  %format:aminoclass('Ala','Chemical','aliphatic'). 
>  aminoclass(ShortName,'Chemical',ChemicalValue), write(ChemicalValue),nl, 
>  listAminoAcidProperties(T).*/ 
>  listAminoAcidProperties(T). 

я хочу его в этом формате

+-----------------------------------------------------------------+ 
| name   | age | color  | something  | 
------------------------------------------------------------------- 
| xyz   |  56 | hgchc  |  var   | 
------------------------------------------------------------------- 

Я использую этот код:

format('+~`-t~78|+ ~n', []), 
format('|~tTable Title~t~78||~n', []), 
format('+~`-t~78|+ ~n', []). 

format('| ~s~t~28|| ~s~t~36|| ~s~t~56|| ~s~t~80||~n', 

          ['Name', 'Age', 'Eye Colour', 'Phone Number']). 

но это выходной сигнал, как указано выше

+0

'write' довольно низкий уровень. Вы посмотрели на другие предикаты форматирования вывода SWI? См. SWI Prolog [Отформатированная запись] (http://www.swi-prolog.org/pldoc/man?section=format) – lurker

ответ

2

format/2 - предикат, который позволяет вам форматировать вывод аналогично функции printf C.

+0

Я попробовал, но его не работает. Пример будет достаточно –

+0

@kshitijsingh хорошо дайте мне пример какой продукции вы хотите. – Fatalize

+0

Я пытаюсь это сделать, но это не так, как ожидалось, не правильно отформатировано formatOutput: - 'format ('+ ~' -t ~ 78 | + ~ n', []), ' format ('| ~ tAmino Acid ~ t ~ 78 || ~ tShort Name ~ t ~ 78 || ~ Значение гидропатии ~ t ~ 78 || ~ tVolume ~ t ~ 78 || ~ tХимическое значение ~ t ~ 78 | ~ n ', []), формат ('+ ~ '-t ~ 78 | + ~ n', []), формат ('| ~ s ~ t ~ 70 || ~ s ~ t ~ 36 || ~ s ~ t ~ 56 || ~ s ~ t ~ 80 || ~ n ', [' Имя ',' Возраст ',' Цвет глаз ',' Номер телефона ']). ' –

Смежные вопросы