2014-09-13 93 views
0

我不熟悉Datalog的概念,我正在通過pyDatalog進行探索。我正在試驗單位測量轉換器。因此,舉例來說,如果有米的數量是多少英寸,它應該能夠告訴我一英寸有多少米。這裏是我的代碼到目前爲止:爲什麼在pyDatalog中創建關係似乎給了我錯誤的答案?

from pyDatalog import pyDatalog 
from pyDatalog.pyDatalog import create_terms as cterms 

pyDatalog.create_terms('scale') # the long way of doing it 
cterms('A, B, V') 
scale['meter', 'inch'] = 39.3707787 
scale[A, B] = 1/ scale[B, A]  
print(scale['inch', 'meter'] == V) 

Wny不會正確地將英寸轉換成米嗎?它應該看到一米有39.37英寸,並且應用倒數規則來轉換另一種方式。所以它應該打印出0.0234,但它實際打印出來

V 
---------- 
39.3707787 
+0

也許更好的標籤可以幫助人們找到這個問題。它似乎與邏輯編程沒有關係,但與Python有關。 – 2014-09-13 11:20:19

+2

我不同意。 [link](https://sites.google.com/site/pydatalog/support)上的Support&Community頁面聲明:「請在StackOverflow上使用pyDatalog發佈問題(確保將邏輯編程標籤添加到表格的底部)。「 – blippy 2014-09-13 11:30:31

+0

對不起,我沒有意識到這一點。感謝您的更正。 – 2014-09-13 12:02:51

回答

1

這是一個錯誤。更正現在在changeset b1a5df9完成,並將在下一版本中提供。同時,您可能希望將更改集應用於您的系統。

+0

非常好。謝謝。我可以確認修復是正確的。然後我可以擴展我的程序來說比例['mile','inch'] = 63360.0,並且比例[A,B] =比例[A,C] *比例[C,B]。於是,程序自動能夠推斷出一英里內的米數。井井有條。 Datalog岩石! – blippy 2014-09-13 22:45:04

+0

謝謝。我很高興你喜歡它。 – user474491 2014-09-14 09:47:37

+0

我設法完成了我的單元轉換程序,並寫了一篇關於[博客文章](http://mcturra2000.wordpress.com/2014/09/14/logic-programming-example-unit-conversion-using-datalog/)的文章它。我認爲它應該讓人們開始認識到,如果邏輯編程能夠更容易地執行計算,而不是手動編碼解決方案。 – blippy 2014-09-14 12:23:58

相關問題