勇闖新世界︰ 《 pyDatalog 》 導引《八中》

人們如何從『程式範例』中學習??程式是否能說話,展現想表達的意義!!

改寫能不能了解更多?

from pyDatalog import pyDatalog, pyEngine
import time

pyDatalog.create_terms('有星, 穿越,求解,X地,Y地,N星門,N1星門,N2星門')
pyDatalog.create_terms('X1,X2,X3,X4,X5,X6,X7,X8,X9')
pyDatalog.create_terms('Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9')
pyDatalog.create_terms('P1星門,P2星門')

# X地在 N1星門 或 N2星門處有一顆星 "*"
有星(X地, N1星門, N2星門) <= (X地[N1星門] == '*')
有星(X地, N1星門, N2星門) <= (X地[N2星門] == '*')

# 合法的穿越法 1 <-> 2, 1 <-> 4, ... 
X處 = (X1,X2,X3,X4,X5,X6,X7,X8,X9) # 簡記
穿越(X處, 1, 2, Y地) <= 有星(X處, 0, 1) & (Y地 == (X2,X1,X3,X4,X5,X6,X7,X8,X9))
穿越(X處, 1, 4, Y地) <= 有星(X處, 0, 3) & (Y地 == (X4,X2,X3,X1,X5,X6,X7,X8,X9))

穿越(X處, 2, 3, Y地) <= 有星(X處, 1, 2) & (Y地 == (X1,X3,X2,X4,X5,X6,X7,X8,X9))
穿越(X處, 2, 5, Y地) <= 有星(X處, 1, 4) & (Y地 == (X1,X5,X3,X4,X2,X6,X7,X8,X9))

穿越(X處, 3, 6, Y地) <= 有星(X處, 2, 5) & (Y地 == (X1,X2,X6,X4,X5,X3,X7,X8,X9))

穿越(X處, 4, 5, Y地) <= 有星(X處, 3, 4) & (Y地 == (X1,X2,X3,X5,X4,X6,X7,X8,X9))
穿越(X處, 4, 7, Y地) <= 有星(X處, 3, 6) & (Y地 == (X1,X2,X3,X7,X5,X6,X4,X8,X9))

穿越(X處, 5, 6, Y地) <= 有星(X處, 4, 5) & (Y地 == (X1,X2,X3,X4,X6,X5,X7,X8,X9))
穿越(X處, 5, 8, Y地) <= 有星(X處, 4, 7) & (Y地 == (X1,X2,X3,X4,X8,X6,X7,X5,X9))

穿越(X處, 6, 9, Y地) <= 有星(X處, 5, 8) & (Y地 == (X1,X2,X3,X4,X5,X9,X7,X8,X6))

穿越(X處, 7, 8, Y地) <= 有星(X處, 6, 7) & (Y地 == (X1,X2,X3,X4,X5,X6,X8,X7,X9))
穿越(X處, 8, 9, Y地) <= 有星(X處, 7, 8) & (Y地 == (X1,X2,X3,X4,X5,X6,X7,X9,X8))

# 求解之法或 X地 到 Y地 直接穿越,
# 或先經由若干 Z處,再由 Z處 往 Y地 直接穿越。
Z處 = (Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9)
(求解[X地, Y地] == N星門) <= 穿越(X地, P1星門, P2星門, Y地) & (N星門 == [(P1星門, P2星門)])
(求解[X地, Y地] == N星門) <= (求解[X地, Z處] == N1星門) & 穿越(Z處, P1星門, P2星門, Y地) & (N星門 == N1星門 + [(P1星門, P2星門)])

start_time = time.time()

print((求解[list('HAAHS*T*G'), list('HASHTAG**')] == N星門) >= N星門)
# prints 5-6,2-5,2-3,3-6,5-6,7-8,5-8,8-9,7-8,
print("Computed in %f seconds" % (time.time() - start_time))

# 執行結果

>>> start_time = time.time()
>>> print((求解[list('HAAHS*T*G'), list('HASHTAG**')] == N星門) >= N星門)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9), (7, 8))
>>> print("Computed in %f seconds" % (time.time() - start_time))
Computed in 96.248452 seconds
>>> 

 

線上可不可試驗未知?

#
>>> dir(Y地)
['_UserList__cast', '__abstractmethods__', '__add__', '__call__', '__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__dict__', '__div__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rfloordiv__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__unicode__', '__weakref__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry', '_data', '_in', '_not_in', '_pyD_atomized', '_pyD_for', '_pyD_lua', '_pyD_name', '_pyD_negated', '_pyD_precalculations', '_pyD_type', '_pyD_value', '_pyD_variables', '_value', 'append', 'count', 'data', 'extend', 'in_', 'index', 'insert', 'is_variable', 'make_for_prefix', 'not_in_', 'pop', 'remove', 'reverse', 'sort', 'todo', 'v']
>>> 

>>> help(Y地)

>>> print(Y地.__doc__)

 can be constant, list, tuple, variable or predicate name
 ask() creates a query
 

 

逐步驗證有沒有好處?

#
>>> print(穿越(list('HAAHS*T*G'), 7, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'A', 'H', 'S', '*', '*', 'T', 'G')

>>> Y地.data[0]
('H', 'A', 'A', 'H', 'S', '*', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 5, 6, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'A', 'H', '*', 'S', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 2, 5, Y地))
Y地                                           
---------------------------------------------
('H', '*', 'A', 'H', 'A', 'S', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 2, 3, Y地))
Y地                                           
---------------------------------------------
('H', 'A', '*', 'H', 'A', 'S', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 3, 6, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'A', '*', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 5, 6, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', '*', 'A', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 5, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', '*', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 8, 9, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', '*', 'G', '*')

>>> print(穿越(list(Y地.data[0]), 7, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', 'G', '*', '*')
>>> 

 

#
>>> print(穿越(list('HAAHS*T*G'), 5, 6, Y地))
Y地 
---------------------------------------------
('H', 'A', 'A', 'H', '*', 'S', 'T', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 2, 5, Y地))
Y地 
---------------------------------------------
('H', '*', 'A', 'H', 'A', 'S', 'T', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 2, 3, Y地))
Y地 
---------------------------------------------
('H', 'A', '*', 'H', 'A', 'S', 'T', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 3, 6, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'A', '*', 'T', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 5, 6, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', '*', 'A', 'T', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 7, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', '*', 'A', '*', 'T', 'G')

>>> print(穿越(list(Y地.data[0]), 5, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', '*', '*', 'G')

>>> print(穿越(list(Y地.data[0]), 8, 9, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', '*', 'G', '*')

>>> print(穿越(list(Y地.data[0]), 7, 8, Y地))
Y地                                           
---------------------------------------------
('H', 'A', 'S', 'H', 'T', 'A', 'G', '*', '*')
>>> 

 

怎樣追跡計算過程?

#
# 注意 print 述詞攔截 python 語言之 print() 函式
>>> pyDatalog.create_terms('追跡, P啞元, print')

>>> (追跡[X地, Y地] == N星門) <= 穿越(X地, P1星門, P2星門, Y地) & (N星門 == [(P1星門, P2星門)]) & (P啞元 == print("穿越: ", N星門))

追跡[2]==(*,X地,Y地,N星門) <= 穿越(X地,P1星門,P2星門,Y地)&==(N星門

>>> (追跡[X地, Y地] == N星門) <= (求解[X地, Z處] == N1星門) & 穿越(Z處, P1星門, P2星門, Y地) & (N星門 == N1星門 + [(P1星門, P2星門)]) & (P啞元 == print("經由: ", N1星門, "再穿越: ", (P1星門, P2星門)))

追跡[2]==(*,X地,Y地,N星門) <= 求解[2]==(*,X地,'["('f', 'Z1'

# 追跡 ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9), (7, 8)) 解,注意記憶效應。
>>> print((追跡[list('HAAHS*T*G'), list('HAAHS**TG')] == N星門) >= N星門)
經由:  ((7, 8), (3, 6)) 再穿越:  (3, 6)
((7, 8), (3, 6), (3, 6))

>>> print((追跡[list('HAAHS*T*G'), list('HAAH*S*TG')] == N星門) >= N星門)
經由:  ((5, 6),) 再穿越:  (7, 8)
((5, 6), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('H*AHAS*TG')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5)) 再穿越:  (7, 8)
((5, 6), (2, 5), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HA*HAS*TG')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3)) 再穿越:  (7, 8)
((5, 6), (2, 5), (2, 3), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASHA**TG')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3), (3, 6)) 再穿越:  (7, 8)
((5, 6), (2, 5), (2, 3), (3, 6), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASH*A*TG')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3), (3, 6), (5, 6)) 再穿越:  (7, 8)
((5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASHTA**G')] == N星門) >= N星門)
經由:  ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6)) 再穿越:  (5, 8)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASHTAG**')] == N星門) >= N星門)
經由:  ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9)) 再穿越:  (7, 8)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9), (7, 8))

# 追跡 5-6,2-5,2-3,3-6,5-6,7-8,5-8,8-9,7-8, 解,注意計算轉折處。
>>> print((追跡[list('HAAHS*T*G'), list('HAAH*ST*G')] == N星門) >= N星門)
經由:  ((5, 6),) 再穿越:  (5, 8)
((5, 6), (5, 8))

>>> print((追跡[list('HAAHS*T*G'), list('H*AHAST*G')] == N星門) >= N星門)
經由:  ((5, 6),) 再穿越:  (2, 5)
((5, 6), (2, 5))

>>> print((追跡[list('HAAHS*T*G'), list('HA*HAST*G')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5)) 再穿越:  (2, 3)
((5, 6), (2, 5), (2, 3))

>>> print((追跡[list('HAAHS*T*G'), list('HASHA*T*G')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3)) 再穿越:  (3, 6)
((5, 6), (2, 5), (2, 3), (3, 6))

>>> print((追跡[list('HAAHS*T*G'), list('HASH*AT*G')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3), (3, 6)) 再穿越:  (5, 6)
((5, 6), (2, 5), (2, 3), (3, 6), (5, 6))

>>> print((追跡[list('HAAHS*T*G'), list('HASH*A*TG')] == N星門) >= N星門)
經由:  ((5, 6), (2, 5), (2, 3), (3, 6), (5, 6)) 再穿越:  (7, 8)
((5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (7, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASHTA**G')] == N星門) >= N星門)
經由:  ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6)) 再穿越:  (5, 8)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8))

>>> print((追跡[list('HAAHS*T*G'), list('HASHTA*G*')] == N星門) >= N星門)
經由:  ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8)) 再穿越:  (8, 9)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9))

>>> print((追跡[list('HAAHS*T*G'), list('HASHTAG**')] == N星門) >= N星門)
經由:  ((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9)) 再穿越:  (7, 8)
((7, 8), (5, 6), (2, 5), (2, 3), (3, 6), (5, 6), (5, 8), (8, 9), (7, 8))
>>> 

 

意圖與邏輯是不是同意的耶?

上面程式中這個子句有道理嗎

(追跡[X地, Y地] == N星門) <= (求解[X地, Z處] == N1星門) & 穿越(Z處, P1星門, P2星門, Y地) & (N星門 == N1星門 + [(P1星門, P2星門)]) & (P啞元 == print(“經由: “, N1星門, “再穿越: “, (P1星門, P2星門)))

或許應該改作

(追跡[X地, Y地] == N星門) <= (追跡[X地, Z處] == N1星門) & 穿越(Z處, P1星門, P2星門, Y地) & (N星門 == N1星門 + [(P1星門, P2星門)]) & (P啞元 == print(“經由: “, N1星門, “再穿越: “, (P1星門, P2星門)))

print((追跡[list(‘HAAHS*T*G’), list(‘HAAHS**TG’)] == N星門) >= N星門)
經由: ((8, 9),) 再穿越: (8, 9)
經由: ((8, 9),) 再穿越: (6, 9)
經由: ((8, 9),) 再穿越: (5, 6)
經由: ((8, 9),) 再穿越: (3, 6)
經由: ((7, 8),) 再穿越: (7, 8)
經由: ((7, 8),) 再穿越: (6, 9)
經由: ((7, 8),) 再穿越: (5, 6)
經由: ((7, 8),) 再穿越: (4, 7)
經由: ((7, 8),) 再穿越: (3, 6)
經由: ((6, 9),) 再穿越: (8, 9)
經由: ((6, 9),) 再穿越: (7, 8)
經由: ((6, 9),) 再穿越: (6, 9)
經由: ((6, 9),) 再穿越: (5, 8)
經由: ((5, 8),) 再穿越: (6, 9)
經由: ((5, 8),) 再穿越: (5, 8)
經由: ((5, 8),) 再穿越: (5, 6)
經由: ((5, 8),) 再穿越: (4, 5)
經由: ((5, 8),) 再穿越: (3, 6)
經由: ((5, 8),) 再穿越: (2, 5)
經由: ((5, 6),) 再穿越: (8, 9)
經由: ((5, 6),) 再穿越: (7, 8)
經由: ((5, 6),) 再穿越: (5, 8)
經由: ((5, 6),) 再穿越: (5, 6)
經由: ((5, 6),) 再穿越: (4, 5)
經由: ((5, 6),) 再穿越: (2, 5)
經由: ((3, 6),) 再穿越: (8, 9)
經由: ((3, 6),) 再穿越: (7, 8)
經由: ((3, 6),) 再穿越: (5, 8)
經由: ((3, 6),) 再穿越: (3, 6)
經由: ((3, 6),) 再穿越: (2, 3)
經由: ((8, 9), (8, 9)) 再穿越: (5, 6)
經由: ((8, 9), (8, 9)) 再穿越: (3, 6)
經由: ((8, 9), (8, 9)) 再穿越: (6, 9)
經由: ((8, 9), (8, 9)) 再穿越: (7, 8)
經由: ((8, 9), (8, 9)) 再穿越: (8, 9)
經由: ((8, 9), (8, 9)) 再穿越: (5, 8)
經由: ((8, 9), (5, 6)) 再穿越: (8, 9)
經由: ((8, 9), (5, 6)) 再穿越: (6, 9)
經由: ((8, 9), (5, 6)) 再穿越: (5, 8)
經由: ((8, 9), (5, 6)) 再穿越: (5, 6)
經由: ((8, 9), (5, 6)) 再穿越: (4, 5)
經由: ((8, 9), (5, 6)) 再穿越: (2, 5)
經由: ((8, 9), (3, 6)) 再穿越: (8, 9)
經由: ((8, 9), (3, 6)) 再穿越: (6, 9)
經由: ((8, 9), (3, 6)) 再穿越: (3, 6)
經由: ((8, 9), (3, 6)) 再穿越: (2, 3)
經由: ((8, 9), (8, 9)) 再穿越: (7, 8)
經由: ((7, 8), (5, 6)) 再穿越: (7, 8)
經由: ((7, 8), (5, 6)) 再穿越: (5, 8)
經由: ((7, 8), (5, 6)) 再穿越: (5, 6)
經由: ((7, 8), (5, 6)) 再穿越: (4, 7)
經由: ((7, 8), (5, 6)) 再穿越: (4, 5)
經由: ((7, 8), (5, 6)) 再穿越: (2, 5)
經由: ((7, 8), (3, 6)) 再穿越: (7, 8)
經由: ((7, 8), (3, 6)) 再穿越: (4, 7)
經由: ((7, 8), (3, 6)) 再穿越: (3, 6)
經由: ((7, 8), (3, 6)) 再穿越: (2, 3)
經由: ((7, 8), (6, 9)) 再穿越: (8, 9)
經由: ((7, 8), (6, 9)) 再穿越: (7, 8)
經由: ((7, 8), (6, 9)) 再穿越: (6, 9)
經由: ((7, 8), (6, 9)) 再穿越: (4, 7)
經由: ((7, 8), (4, 7)) 再穿越: (6, 9)
經由: ((7, 8), (4, 7)) 再穿越: (5, 6)
經由: ((7, 8), (4, 7)) 再穿越: (4, 7)
經由: ((7, 8), (4, 7)) 再穿越: (4, 5)
經由: ((7, 8), (4, 7)) 再穿越: (3, 6)
經由: ((7, 8), (4, 7)) 再穿越: (1, 4)
經由: ((7, 8), (6, 9)) 再穿越: (6, 9)
經由: ((7, 8), (5, 6)) 再穿越: (5, 6)
經由: ((7, 8), (4, 7)) 再穿越: (4, 7)
經由: ((7, 8), (3, 6)) 再穿越: (3, 6)
經由: ((6, 9), (5, 8)) 再穿越: (8, 9)
經由: ((6, 9), (5, 8)) 再穿越: (6, 9)
經由: ((6, 9), (5, 8)) 再穿越: (5, 8)
經由: ((6, 9), (5, 8)) 再穿越: (5, 6)
經由: ((6, 9), (5, 8)) 再穿越: (4, 5)
經由: ((6, 9), (5, 8)) 再穿越: (2, 5)
經由: ((5, 8), (4, 5)) 再穿越: (4, 5)
經由: ((5, 8), (4, 5)) 再穿越: (4, 7)
經由: ((5, 8), (4, 5)) 再穿越: (3, 6)
經由: ((5, 8), (4, 5)) 再穿越: (1, 4)
經由: ((5, 8), (4, 5)) 再穿越: (6, 9)
經由: ((5, 8), (4, 5)) 再穿越: (5, 6)
經由: ((5, 8), (3, 6)) 再穿越: (5, 8)
經由: ((5, 8), (3, 6)) 再穿越: (5, 6)
經由: ((5, 8), (3, 6)) 再穿越: (4, 5)
經由: ((5, 8), (3, 6)) 再穿越: (3, 6)
經由: ((5, 8), (3, 6)) 再穿越: (2, 5)
經由: ((5, 8), (3, 6)) 再穿越: (2, 3)
經由: ((5, 8), (2, 5)) 再穿越: (6, 9)
經由: ((5, 8), (2, 5)) 再穿越: (5, 6)
經由: ((5, 8), (2, 5)) 再穿越: (3, 6)
經由: ((5, 8), (2, 5)) 再穿越: (2, 5)
經由: ((5, 8), (2, 5)) 再穿越: (2, 3)
經由: ((5, 8), (2, 5)) 再穿越: (1, 2)
經由: ((5, 6), (4, 5)) 再穿越: (8, 9)
經由: ((5, 6), (4, 5)) 再穿越: (7, 8)
經由: ((5, 6), (4, 5)) 再穿越: (5, 8)
經由: ((5, 6), (4, 5)) 再穿越: (4, 7)
經由: ((5, 6), (4, 5)) 再穿越: (4, 5)
經由: ((5, 6), (4, 5)) 再穿越: (1, 4)
經由: ((5, 6), (2, 5)) 再穿越: (8, 9)
經由: ((5, 6), (2, 5)) 再穿越: (7, 8)
經由: ((5, 6), (2, 5)) 再穿越: (5, 8)
經由: ((5, 6), (2, 5)) 再穿越: (2, 5)
經由: ((5, 6), (2, 5)) 再穿越: (2, 3)
經由: ((5, 6), (2, 5)) 再穿越: (1, 2)
經由: ((3, 6), (2, 3)) 再穿越: (8, 9)
經由: ((3, 6), (2, 3)) 再穿越: (7, 8)
經由: ((3, 6), (2, 3)) 再穿越: (5, 8)
經由: ((3, 6), (2, 3)) 再穿越: (2, 5)
經由: ((3, 6), (2, 3)) 再穿越: (2, 3)
經由: ((3, 6), (2, 3)) 再穿越: (1, 2)
經由: ((8, 9), (8, 9)) 再穿越: (5, 6)
經由: ((8, 9), (8, 9)) 再穿越: (3, 6)
經由: ((8, 9), (8, 9)) 再穿越: (6, 9)
經由: ((8, 9), (8, 9)) 再穿越: (7, 8)
經由: ((8, 9), (8, 9)) 再穿越: (8, 9)
經由: ((8, 9), (8, 9)) 再穿越: (5, 8)
經由: ((8, 9), (6, 9)) 再穿越: (8, 9)
經由: ((8, 9), (6, 9)) 再穿越: (5, 6)
經由: ((8, 9), (6, 9)) 再穿越: (3, 6)
經由: ((8, 9), (6, 9)) 再穿越: (6, 9)
經由: ((8, 9), (5, 6)) 再穿越: (5, 6)
經由: ((8, 9), (5, 6)) 再穿越: (5, 8)
經由: ((8, 9), (5, 6)) 再穿越: (4, 5)
經由: ((8, 9), (5, 6)) 再穿越: (6, 9)
經由: ((8, 9), (5, 6)) 再穿越: (8, 9)
經由: ((8, 9), (5, 6)) 再穿越: (2, 5)
經由: ((8, 9), (3, 6)) 再穿越: (6, 9)
經由: ((8, 9), (3, 6)) 再穿越: (8, 9)
經由: ((8, 9), (3, 6)) 再穿越: (2, 3)
經由: ((8, 9), (3, 6)) 再穿越: (3, 6)
((8, 9), (8, 9), (7, 8))

 

如是走過了一番,算不算是學會了一種『方法學』

吃著魚釣魚,有何不可

的呢??!!