2016-01-06 83 views
0

我在prolog中有一些事實。我想定義一個規則,以打印的方式打印所有氨基酸的數據。這裏是鏈接,我有事實和一些我定義自己的規則。但我無法獲得格式化工作,我的意思是我不想使用多個write(),甚至是我無法使用的標籤格式。這是我的一些邏輯,但它不工作。我只想生成一個格式的報告。這裏是鏈接和代碼,我試圖http://swish.swi-prolog.org/p/aminnoo.plprolog中的輸出格式

> 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

'寫'是相當低的水平。你看過SWI的其他輸出格式謂詞嗎?請參閱SWI Prolog [格式化寫入](http://www.swi-prolog.org/pldoc/man?section=format) – lurker

回答

2

format/2是一個謂詞,可讓您以與C函數printf類似的方式格式化輸出。

+0

我試過了,但它沒有工作。例子就足夠了 –

+0

@kshitijsingh給我舉個例子你想要什麼輸出。 – Fatalize

+0

我正在嘗試此操作,但並非如預期的那樣,格式不正確 formatOutput: - 'format('+〜'-t〜78 | +〜n',[]),' format('|〜tAmino Acid 〜t〜78 ||〜tShort Name〜t〜78 ||〜tHydropathy value〜t〜78 ||〜tVolume〜t〜78 ||〜t Chemical Value〜t〜78 |〜n',[]), format ('+〜'-t〜78 | +〜n',[]), format('|〜s〜t〜70 ||〜s〜t〜36 ||〜s〜t〜56 ||〜s 〜t〜80 ||〜n', ['Name','Age','Eye Color','Phone Number'])' –