勇闖新世界︰ 《 pyDatalog 》【專題】之約束編程‧五

曾聞小學堂的蟲食算考倒了大專生?想來其實也沒什麼奇怪!學而不思則罔,思其所學整理明辨,自有所得而且記憶長久,否則日遠時遷,早忘之矣!不會算豈不很正常!!舉例來說︰

孤獨的n

在一堆空格的數式中,剛好只有一個數字n。以下是一個「孤獨的六」:

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \begin{matrix}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & \Box & \Box & \Box \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \hline<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \Box & ) & \Box & \Box & \Box & \Box \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & \Box & & \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \hline<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & \Box & \Box &  \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & & \Box & \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \hline<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & & 6 & \Box \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> & & & & \Box & \Box \\<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> \end{matrix}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

這個孤獨的六是1053/9的直式

求解需要個下手處。那個『被除數』的千位首數必是 1 。為什麼呢 ?觀其直式除法之『商』的首數與『除式寫法』未及於『被除數』的千位首數而得知。再者那個『除數』由『商』的尾數乘法知道,只能是『7 * 9 = 63』、『8 * 8 = 64』或『9 * 7 = 63』。添上直式除法首起『兩數相乘是一位數』,可以推知『商』的首數是 1 。否則就成兩位數的了。接著推『二位數 減 一位數 等於 一位數 1 』,此 1 來於其下的直式之寫法。如此可得『被除數』首起『二位數』為 10,而且『除數』是 9 。同理『商』的十位數也必是 1 ,以及 1 □ – 9 = 6 ,所以『被除數』的十位數是 5 。故得解。

『正算反推』雖都依賴『加減乘除』的『性質』,熟悉其一,不通另一,大半因為練習多寡所致。正如《邂逅 W!o ?!》文本中講的『逆問題』

Li Bai

A Quiet Night Thought

In front of my bed, there is bright moonlight.
It appears to be frost on the ground.
I lift my head and gaze at the August Moon,
I lower my head and think of my hometown.

 

Contemplation

Moon twilight approaches, coating the ground through the window,
Resembles a touch of frost,
Moon at the window,
Taking me back to where I am from.

李白

静夜思

床前明月光
疑是地上霜
舉頭望明月
低頭思故鄉

假使將李白的《靜夜思》翻譯成英文,藉由『中英對照』,是否更能『理解』原作之『意境』呢?還是會少了點『』的『味道』??或許這個『利弊得失』就落在︰

『文化』之『盲點』,常顯現在『意義』的『忽略』之中。

『人文』之『偏見』,普遍藏於『字詞』之『情感』之內。

故而同一『內容』的多種『語言文本』,也許可見那『通常之所不見』

Inverse problem

An inverse problem is a general framework that is used to convert observed measurements into information about a physical object or system. For example, if we have measurements of the Earth’s gravity field, then we might ask the question: “given the data that we have available, what can we say about the density distribution of the Earth in that area?” The solution to this problem (i.e., the density distribution that best matches the data) is useful because it generally tells us something about a physical parameter that we cannot directly observe. Thus, inverse problems are some of the most important and well-studied mathematical problems in science and mathematics. Inverse problems arise in many branches of science and mathematics, including computer vision, natural language processing, machine learning, statistics, statistical inference, geophysics, medical imaging (such as computed axial tomography and EEG/ERP), remote sensing, ocean acoustic tomography, nondestructive testing, astronomy, physics and many other fields.

逆問題

逆 問題是一個關於如何將觀測和測量的結果轉換為物體或系統的信息的廣義框架。比如,如果我們有一個關於地球重力場的測量結果,我們就會問:「利用現有的信 息,我們能否得到地球的密度分布?」。這類問題的解(即最符合測量數據的密度分布)通常就可以告訴我們一個無法直接測量的物理量。因此,逆問題是在數學和 物理學中最重要和被研究的最多的問題之一。逆問題廣泛的出現在諸如計算機視覺,自然語言處理,機器學習,統計學,推論統計學,地理,醫學成像(比如X射線 計算機斷層成像和腦電圖/事件相關電位),遙感,海洋聲學層析,無損檢測,航空,物理學中。

 

一般所以難解之故。所謂『去除盲點』,就是『能見己所未見』之功夫。

近日偶讀楊惠后女士早年於《數學傳播》 32 卷 4 期, pp. 51-55 發表的一篇文章︰「五餅二魚」 一一談數學教學分享。略引如下︰

對一般學生而言, 若能在枯燥乏味的數學課中穿插一些有趣的、 別緻的、 與課程內容相關的益智活動, 她們會顯得很有討論的熱忱。 下面有三種文字遊戲, 我會分別安插在不同的課程內容中進行:

(a) 日本有不少學者精通漢文, 他們把中國古代詩詞中的名言佳句與「蟲食算」 結合起來, 製作了一些風格優異的小品。 遊戲規則是每題中不同的國字代表不同的阿拉伯數字, 請找出滿足這些聯立方程組的解。
1.
年年 × 歲歲 = 花相似
歲歲 ÷ 年年 = 人 ÷ 不同

2.
床前 = 明月 + 光
疑是 = 地上 × 霜

3.
舉頭 × 望 = 明月
低頭 × 思 = 故鄉

讀後頗有感觸,姑且用

床前 = 明月 + 光
疑是 = 地上 × 霜

為題,表述以 pyDatalog 求解想法,權充『約束編程』之總結。

 

pi@raspberrypi ~ $ python3
Python 3.2.3 (default, Mar  1 2013, 11:53:50) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyDatalog import pyDatalog
>>> pyDatalog.create_terms('B, F, E, M, L, sol')
>>> pyDatalog.create_terms('月光')

>>> 月光(M,L) <= (M.in_(range(10))) & (L.in_(range(10))) & (M != L) & ( M + L >= 10)
月光(M,L) <= _pyD_in(M,'['0', '1', '2', '3', '4', '5

>>> 月光(M,L).data
[(2, 8), (7, 9), (8, 3), (6, 7), (8, 2), (7, 4), (8, 5), (7, 5), (9, 2), (6, 5), (8, 4), (7, 6), (9, 3), (6, 4), (8, 7), (8, 6), (4, 9), (9, 1), (8, 9), (9, 6), (3, 7), (9, 7), (4, 7), (5, 8), (7, 3), (9, 4), (1, 9), (4, 6), (6, 9), (9, 5), (6, 8), (2, 9), (5, 6), (4, 8), (5, 7), (3, 8), (9, 8), (3, 9), (5, 9), (7, 8)]

>>> def mod(a,b):
...     return a % b 
... 

>>> pyDatalog.create_terms('月光前, mod')

>>> 月光前(M, L, F) <= 月光(M,L) & (F.in_(range(10))) & (F != M) & (F != L) & (F == (mod(M+L, 10)))
月光前(M,L,F) <= 月光(M,L)&_pyD_in(F,'['0', '1', '2', '
>>> len(月光前(M, L, F).data)
40
>>> 月光前(M, L, F).data
[(5, 6, 1), (8, 9, 7), (7, 6, 3), (9, 4, 3), (8, 4, 2), (7, 5, 2), (4, 9, 3), (3, 8, 1), (2, 8, 0), (6, 5, 1), (4, 6, 0), (9, 8, 7), (7, 8, 5), (9, 3, 2), (3, 7, 0), (7, 9, 6), (9, 1, 0), (8, 3, 1), (9, 5, 4), (6, 9, 5), (7, 4, 1), (6, 4, 0), (7, 3, 0), (1, 9, 0), (8, 7, 5), (5, 7, 2), (5, 8, 3), (9, 2, 1), (8, 2, 0), (4, 7, 1), (8, 6, 4), (6, 8, 4), (5, 9, 4), (9, 6, 5), (3, 9, 2), (4, 8, 2), (8, 5, 3), (9, 7, 6), (2, 9, 1), (6, 7, 3)]

>>> pyDatalog.create_terms('月光前床明')

>>> 月光前床明(M,L,F,B,E) <= 月光前(M, L, F) & (E.in_(range(10))) & (E != M) & (E != L) & (E != F) &  (B.in_(range(10))) & (B != M) & (B != L) & (B != F) & (B != E) & (B == (E +1))
月光前床明(M,L,F,B,E) <= 月光前(M,L,F)&_pyD_in(E,'['0', '1

>>> len(月光前床明(M,L,F,B,E).data)
168
>>> 月光前床明(M,L,F,B,E).data
[(9, 6, 5, 3, 2), (5, 7, 2, 9, 8), (8, 2, 0, 5, 4), (6, 9, 5, 1, 0), (9, 8, 7, 1, 0), (6, 8, 4, 1, 0), (5, 9, 4, 2, 1), (9, 7, 6, 3, 2), (6, 7, 3, 1, 0), (3, 9, 2, 8, 7), (7, 6, 3, 1, 0), (7, 9, 6, 2, 1), (9, 5, 4, 8, 7), (3, 9, 2, 6, 5), (6, 9, 5, 8, 7), (9, 4, 3, 6, 5), (8, 2, 0, 4, 3), (6, 8, 4, 2, 1), (8, 7, 5, 4, 3), (4, 9, 3, 6, 5), (4, 9, 3, 8, 7), (9, 6, 5, 8, 7), (3, 9, 2, 7, 6), (8, 5, 3, 2, 1), (9, 6, 5, 4, 3), (5, 9, 4, 8, 7), (8, 2, 0, 6, 5), (8, 9, 7, 3, 2), (7, 3, 0, 5, 4), (6, 5, 1, 3, 2), (2, 8, 0, 6, 5), (7, 4, 1, 3, 2), (7, 6, 3, 2, 1), (1, 9, 0, 4, 3), (7, 9, 6, 3, 2), (7, 5, 2, 9, 8), (6, 9, 5, 4, 3), (9, 8, 7, 4, 3), (4, 6, 0, 3, 2), (8, 9, 7, 5, 4), (9, 8, 7, 2, 1), (6, 7, 3, 9, 8), (1, 9, 0, 7, 6), (5, 7, 2, 4, 3), (8, 4, 2, 7, 6), (3, 7, 0, 6, 5), (3, 8, 1, 7, 6), (5, 7, 2, 1, 0), (9, 5, 4, 2, 1), (2, 8, 0, 7, 6), (3, 9, 2, 5, 4), (7, 6, 3, 9, 8), (7, 8, 5, 4, 3), (9, 4, 3, 7, 6), (7, 4, 1, 9, 8), (8, 4, 2, 6, 5), (6, 4, 0, 2, 1), (5, 6, 1, 4, 3), (4, 6, 0, 8, 7), (1, 9, 0, 8, 7), (8, 9, 7, 6, 5), (1, 9, 0, 5, 4), (8, 5, 3, 7, 6), (3, 7, 0, 5, 4), (7, 4, 1, 6, 5), (9, 1, 0, 3, 2), (8, 3, 1, 5, 4), (9, 5, 4, 3, 2), (6, 4, 0, 9, 8), (1, 9, 0, 6, 5), (7, 3, 0, 2, 1), (3, 8, 1, 5, 4), (9, 3, 2, 6, 5), (7, 3, 0, 6, 5), (8, 3, 1, 7, 6), (5, 8, 3, 7, 6), (8, 2, 0, 7, 6), (4, 7, 1, 3, 2), (5, 6, 1, 3, 2), (3, 7, 0, 2, 1), (6, 8, 4, 3, 2), (6, 9, 5, 3, 2), (9, 7, 6, 4, 3), (9, 8, 7, 3, 2), (7, 3, 0, 9, 8), (8, 3, 1, 6, 5), (9, 7, 6, 1, 0), (4, 9, 3, 1, 0), (8, 9, 7, 1, 0), (8, 6, 4, 1, 0), (2, 9, 1, 4, 3), (8, 7, 5, 1, 0), (3, 8, 1, 6, 5), (9, 3, 2, 7, 6), (9, 8, 7, 5, 4), (2, 9, 1, 8, 7), (6, 7, 3, 5, 4), (2, 8, 0, 5, 4), (7, 6, 3, 5, 4), (5, 9, 4, 3, 2), (9, 2, 1, 7, 6), (9, 3, 2, 8, 7), (9, 6, 5, 1, 0), (9, 3, 2, 5, 4), (9, 7, 6, 5, 4), (4, 7, 1, 6, 5), (7, 9, 6, 4, 3), (4, 9, 3, 2, 1), (8, 9, 7, 4, 3), (7, 9, 6, 1, 0), (8, 6, 4, 2, 1), (8, 7, 5, 2, 1), (4, 6, 0, 9, 8), (7, 8, 5, 3, 2), (9, 8, 7, 6, 5), (8, 4, 2, 1, 0), (9, 1, 0, 8, 7), (2, 8, 0, 4, 3), (9, 2, 1, 8, 7), (9, 6, 5, 2, 1), (7, 8, 5, 1, 0), (6, 5, 1, 9, 8), (9, 2, 1, 5, 4), (9, 1, 0, 6, 5), (9, 4, 3, 1, 0), (7, 9, 6, 5, 4), (4, 8, 2, 7, 6), (2, 9, 1, 5, 4), (2, 9, 1, 7, 6), (9, 3, 2, 1, 0), (4, 6, 0, 2, 1), (6, 9, 5, 2, 1), (4, 8, 2, 6, 5), (5, 8, 3, 1, 0), (9, 1, 0, 4, 3), (9, 2, 1, 4, 3), (3, 9, 2, 1, 0), (9, 4, 3, 8, 7), (4, 8, 2, 1, 0), (9, 5, 4, 1, 0), (6, 4, 0, 3, 2), (8, 9, 7, 2, 1), (4, 7, 1, 9, 8), (6, 4, 0, 8, 7), (9, 2, 1, 6, 5), (5, 6, 1, 8, 7), (9, 1, 0, 7, 6), (9, 4, 3, 2, 1), (9, 5, 4, 7, 6), (2, 9, 1, 6, 5), (6, 5, 1, 4, 3), (4, 9, 3, 7, 6), (9, 1, 0, 5, 4), (9, 7, 6, 2, 1), (5, 9, 4, 1, 0), (7, 8, 5, 2, 1), (8, 6, 4, 3, 2), (7, 5, 2, 4, 3), (8, 7, 5, 3, 2), (6, 7, 3, 2, 1), (7, 5, 2, 1, 0), (6, 5, 1, 8, 7), (5, 8, 3, 2, 1), (5, 6, 1, 9, 8), (5, 9, 4, 7, 6), (1, 9, 0, 3, 2), (8, 5, 3, 1, 0), (3, 7, 0, 9, 8)]

>>> pyDatalog.create_terms('疑是地上霜, S, I, G, U, Z')

>>> pyDatalog.create_terms('地上霜')

>>> 地上霜(G, U, Z) <=  (G.in_(range(10))) &  (U.in_(range(10))) &  (Z.in_(range(10))) & (G != U) & (G != Z) & (U !=Z) & (((10*G +U)*Z) < 100)
地上霜(G,U,Z) <= _pyD_in(G,'['0', '1', '2', '3', '4',

>>> len(地上霜(G, U, Z).data)
279

>>> 疑是地上霜(S,I,G,U,Z) <= 地上霜(G, U, Z) & (S.in_(range(10))) & (S != G) & (S != U) & (S != Z) & (I.in_(range(10))) & (I != G) & (I != U) & (I != Z) & (I != S) & (I == (10*G*Z + U*Z - 10*S)) 
疑是地上霜(S,I,G,U,Z) <= 地上霜(G,U,Z)&_pyD_in(S,'['0', '1

>>> len(疑是地上霜(S,I,G,U,Z).data)
63
>>> 疑是地上霜(S,I,G,U,Z).data
[(2, 7, 0, 9, 3), (1, 6, 0, 8, 2), (7, 8, 3, 9, 2), (5, 6, 0, 7, 8), (1, 8, 0, 6, 3), (1, 2, 0, 3, 4), (2, 1, 0, 3, 7), (5, 7, 1, 9, 3), (1, 8, 0, 2, 9), (2, 7, 0, 3, 9), (7, 6, 1, 9, 4), (3, 6, 1, 8, 2), (9, 0, 1, 8, 5), (8, 6, 4, 3, 2), (2, 4, 0, 8, 3), (9, 8, 1, 4, 7), (5, 4, 0, 6, 9), (5, 4, 1, 8, 3), (3, 2, 0, 4, 8), (1, 8, 0, 3, 6), (3, 6, 0, 4, 9), (2, 8, 0, 4, 7), (9, 0, 1, 5, 6), (5, 4, 0, 9, 6), (3, 4, 1, 7, 2), (6, 8, 1, 7, 4), (5, 2, 1, 3, 4), (7, 8, 2, 6, 3), (3, 6, 0, 9, 4), (3, 2, 0, 8, 4), (8, 4, 1, 2, 7), (8, 1, 2, 7, 3), (2, 4, 0, 3, 8), (7, 2, 1, 8, 4), (7, 8, 1, 3, 6), (9, 0, 4, 5, 2), (9, 6, 4, 8, 2), (7, 6, 3, 8, 2), (1, 8, 0, 9, 2), (1, 4, 0, 7, 2), (6, 3, 0, 7, 9), (3, 0, 1, 5, 2), (7, 2, 0, 8, 9), (2, 1, 0, 7, 3), (1, 2, 0, 4, 3), (4, 2, 0, 6, 7), (6, 0, 1, 2, 5), (4, 2, 0, 7, 6), (7, 0, 1, 4, 5), (7, 2, 0, 9, 8), (2, 8, 0, 7, 4), (6, 0, 1, 5, 4), (8, 7, 2, 9, 3), (8, 0, 1, 6, 5), (9, 6, 1, 2, 8), (6, 3, 0, 9, 7), (1, 6, 0, 2, 8), (4, 8, 1, 6, 3), (5, 6, 0, 8, 7), (1, 4, 0, 2, 7), (7, 0, 3, 5, 2), (6, 8, 3, 4, 2), (3, 8, 1, 9, 2)]

>>> sol(M,L,F,B,E,S,I,G,U,Z) <= 月光前床明(M,L,F,B,E) & 疑是地上霜(S,I,G,U,Z) & (S != M) & (S != L) & (S != F) & (S != B) & (S != E) & (I != M) & (I != L) & (I != F) & (I != B) & (I != E) & (G != M) & (G != L) & (G != F) & (G != B) & (G != E) & (U != M) & (U != L) & (U != F) & (U != B) & (U != E) & (Z != M) & (Z != L) & (Z != F) & (Z != B) & (Z != E)
sol(M,L,F,B,E,S,I,G,U,Z) <= 月光前床明(M,L,F,B,E)&疑是地上霜

>>> print(sol(M,L,F,B,E,S,I,G,U,Z))
M | L | F | B | E | S | I | G | U | Z
--|---|---|---|---|---|---|---|---|--
7 | 6 | 3 | 5 | 4 | 1 | 8 | 0 | 9 | 2
9 | 6 | 5 | 8 | 7 | 1 | 2 | 0 | 3 | 4
9 | 4 | 3 | 2 | 1 | 5 | 6 | 0 | 7 | 8
8 | 9 | 7 | 6 | 5 | 1 | 2 | 0 | 3 | 4
1 | 9 | 0 | 5 | 4 | 7 | 8 | 2 | 6 | 3
6 | 9 | 5 | 8 | 7 | 1 | 2 | 0 | 4 | 3
8 | 7 | 5 | 2 | 1 | 3 | 6 | 0 | 9 | 4
6 | 9 | 5 | 8 | 7 | 1 | 2 | 0 | 3 | 4
6 | 5 | 1 | 4 | 3 | 7 | 2 | 0 | 8 | 9
9 | 5 | 4 | 1 | 0 | 7 | 6 | 3 | 8 | 2
2 | 9 | 1 | 4 | 3 | 5 | 6 | 0 | 8 | 7
4 | 9 | 3 | 2 | 1 | 5 | 6 | 0 | 7 | 8
9 | 1 | 0 | 5 | 4 | 7 | 8 | 2 | 6 | 3
4 | 9 | 3 | 2 | 1 | 5 | 6 | 0 | 8 | 7
8 | 9 | 7 | 3 | 2 | 6 | 0 | 1 | 5 | 4
7 | 6 | 3 | 5 | 4 | 1 | 8 | 0 | 2 | 9
3 | 9 | 2 | 8 | 7 | 6 | 0 | 1 | 5 | 4
9 | 8 | 7 | 6 | 5 | 1 | 2 | 0 | 3 | 4
3 | 7 | 0 | 5 | 4 | 9 | 6 | 1 | 2 | 8
4 | 9 | 3 | 8 | 7 | 6 | 0 | 1 | 2 | 5
9 | 4 | 3 | 8 | 7 | 6 | 0 | 1 | 2 | 5
9 | 5 | 4 | 1 | 0 | 7 | 8 | 2 | 6 | 3
8 | 9 | 7 | 6 | 5 | 1 | 2 | 0 | 4 | 3
6 | 5 | 1 | 4 | 3 | 7 | 2 | 0 | 9 | 8
9 | 8 | 7 | 6 | 5 | 1 | 2 | 0 | 4 | 3
8 | 7 | 5 | 2 | 1 | 3 | 6 | 0 | 4 | 9
6 | 7 | 3 | 5 | 4 | 1 | 8 | 0 | 2 | 9
9 | 2 | 1 | 4 | 3 | 5 | 6 | 0 | 7 | 8
9 | 8 | 7 | 4 | 3 | 6 | 0 | 1 | 2 | 5
8 | 9 | 7 | 4 | 3 | 6 | 0 | 1 | 2 | 5
7 | 8 | 5 | 2 | 1 | 3 | 6 | 0 | 9 | 4
9 | 4 | 3 | 2 | 1 | 5 | 6 | 0 | 8 | 7
9 | 6 | 5 | 8 | 7 | 1 | 2 | 0 | 4 | 3
9 | 8 | 7 | 3 | 2 | 6 | 0 | 1 | 5 | 4
5 | 6 | 1 | 4 | 3 | 7 | 2 | 0 | 9 | 8
1 | 9 | 0 | 5 | 4 | 7 | 6 | 3 | 8 | 2
5 | 9 | 4 | 1 | 0 | 7 | 6 | 3 | 8 | 2
5 | 6 | 1 | 4 | 3 | 7 | 2 | 0 | 8 | 9
5 | 9 | 4 | 1 | 0 | 7 | 8 | 2 | 6 | 3
7 | 8 | 5 | 2 | 1 | 3 | 6 | 0 | 4 | 9
2 | 9 | 1 | 4 | 3 | 5 | 6 | 0 | 7 | 8
9 | 1 | 0 | 5 | 4 | 7 | 6 | 3 | 8 | 2
9 | 3 | 2 | 8 | 7 | 6 | 0 | 1 | 5 | 4
3 | 8 | 1 | 7 | 6 | 9 | 0 | 4 | 5 | 2
7 | 3 | 0 | 5 | 4 | 9 | 6 | 1 | 2 | 8
8 | 3 | 1 | 7 | 6 | 9 | 0 | 4 | 5 | 2
6 | 7 | 3 | 5 | 4 | 1 | 8 | 0 | 9 | 2
9 | 2 | 1 | 4 | 3 | 5 | 6 | 0 | 8 | 7
>>>