定義列表:
nat2::[(Integer, Integer)]
包含所有對由康托爾定理的證明知 關係有序非負整數 的:NAT2 :: [(整數,整數)定義
(x1,y1) < (x2,y2) <=> x1+y1 < x2+y2 v (x1+y1=x2+y2^x1 < x2)
[^ - 意味着替代]
使得:
nat2 = [(0,0),(0,1),(1,0),(0,2),(1,1),(2,0),(0,3),(1,2),(2,1),(3,0),...]
提示:
定義應該適合在一個 線和短於45個 字符。請注意, 相同對角線上的點的座標總和爲 是恆定的。
我做了一些定義,但我不知道這是否是正確的,你可以檢查/維修/給出提示:
nat2::[(Integer,Integer)]
nat2=[(a,b-a)|b<-[0...],a<-[0...b]]
編輯:改爲:
nat2 :: [(Integer,Integer)]
nat2 = [(a,b-a) | b <- [0..], a <- [0..b]]
與結果:
Prelude> :load "nat2.hs"
[1 of 1] Compiling Main (nat2.hs, interpreted)
Ok, modules loaded: Main.
*Main> take 10 nat2
[(0,0),(0,1),(1,0),(0,2),(1,1),(2,0),(0,3),(1,2),(2,1),(3,0)]
該代碼甚至沒有編譯,因此它是不正確的。在詢問我們是否正確之前,請嘗試在ghci中運行您的代碼。 – 2011-05-16 17:15:00
現在它工作,更新問題 – Tom 2011-05-16 17:26:38
爲什麼所有這些downvotes? OP顯示了一個問題,張貼了他所做的並尋求幫助。我看不出投票的理由。順便說一句,你可以通過用四個空格縮進來將代碼格式化爲代碼。你甚至可以嵌套引號和代碼。 (我以前不知道這個;) – fuz 2011-05-16 17:46:58