0
我想定義一個函數,它接受一個整數n並返回一個整數n *,使得n和n *在1到n的整數集中,並且函數必須是雙射的。sml中的雙射函數
我嘗試以下
fun bij(n) =
let
val ls = zip(upto (1, n), List.rev(upto (1, n)))
val Tw_2 = fn(a, b) => b
in Tw_2(List.last(ls, n-1)) end;
但不幸的是,它爲我的n的所有值返回1。我真的被困在這裏。 任何人都可以給我一些關於如何實現這個想法嗎?
的bij
行爲必須看起來像
bij(1) = 3
bij(2) = 2
bij(3) = 1
您是否可能想要定義一個函數,該函數需要一個整數n並返回一個函數,該函數需要一個整數m並返回一個整數m *,使得m和m *位於從1到n的相同整數集合中? – qaphla
我不明白,在你的第一個例子中n = 1,n * = 3。那麼n和n *是如何在從1到n的整數集中呢?肯定n *應該是1到n之間的整數。你能不能請elaborare? –
嗯,也許我沒有解釋我真正想要的,大圖像是這樣的:我有一個列表'[2,1,3]',我想要一個函數,將此列表重新排列爲'[1,2, 3]'例如。 – Emma