haskell iterate 迭代示例

2021-07-07 04:25:21 字數 1017 閱讀 1793

準備知識

一些系統函式

新增庫 :m + data.char

減去庫 :m - data.char

digittoint ('0...f'--->0---15)

inttodigit 反一下

ord (字元-->ascii碼)

chr (ascii-->字元)

map digittoint "24324aadddf"

[2,4,3,2,4,10,10,13,13,13,15]

例題1 生成從a開始的字母序列

take 3  (iterate (\x-> [inttodigit (digittoint (head x)+1) ] )  ['a'])

["a","b","c"]

2 生成形如[a,b....c]的等差數列

func :: int->int->int->[int]

func a b c = if (b<=a)  then takewhile(>=c) (iterate (+(b-a)) a) else takewhile(<=c) (iterate (+(b-a)) a)

3 整數轉字串  45->"45"

showint1 = map chr.map(+48).reverse.map(`mod` 10).takewhile(/=0).iterate(`div` 10)

或 let showint n= map (inttodigit ) (reverse (map (`mod` 10 ) (takewhile (/=0)  ( iterate ( `div` 10 )  n))))

4 字串轉整數

getint1 n = foldl f 0  (map(+(-48)) (map ord n)) where f x y = x*10+y

或let getint n = last  (scanl (\x y -> x*10+y) 0  (map (digittoint )  (map (head)  (takewhile (/="")  (iterate (drop 1) n)))))

迭帶加深搜尋

poj 2248 addition chains 迭代加深 by admin 瀏覽 56 題意 加法鏈的 定義是第乙個元素是 1,最後乙個是 n,所有元素從小到大排列,並且除了 1之外任意乙個元素都是前面兩個元素的和 那兩個元素可相同 給定 n,求元素最少的加法鏈 思路 做這個題,特意學了下迭代加深...

JavaSe筆記Collection之迭代器

作用 提供了遍歷容器的統一介面 iterator介面 一共有三個方法 迭代器原理 通過容器物件的iterator 方法,獲得容器物件的迭代器物件 iterator it arraylist.iterator 迭代器物件中有乙個游標cursor,游標初始時預設指向要遍歷的第乙個元素前面 it.hasn...

迭帶器與泛型

看下面的例子的時候請使用f11鍵單步執行,檢視執行過程 using system using system.collections using system.collections.generic public class persons ienumerable region ienumerable...