noritsuguの日記

2009-04-17``Algorithms'' (42) Exercise 2.13

(a) 文の意味が良く分かっていない…

マトリックスの要素に番号を付けて定義しろという意味???


(b) あえて list 〜 でなく、array comprehension と書いてあるんだよな?

行列の行・列どちらを先にすべきか忘れてしまったので適当

Prelude> :m Array
Prelude Array> array ((0, 0), (2, 2)) [((i, j), (i * 3 + j + 2)) | i <- [0..2], j <- [0..2]]
array ((0,0),(2,2)) [((0,0),2),((0,1),3),((0,2),4),((1,0),5),((1,1),6),((1,2),7),((2,0),8),((2,1),9),((2,2),10)]

(c)

import Array

transpose a = a // [((0, 1), a ! (1, 0)),
                    ((0, 2), a ! (2, 0)),
                    ((1, 0), a ! (0, 1)),
                    ((1, 2), a ! (2, 1)),
                    ((2, 0), a ! (0, 2)),
                    ((2, 1), a ! (1, 2))]

で、

*Main> let a = array ((0, 0), (2, 2)) [((i, j), (i * 3 + j + 2)) | i <- [0..2], j <- [0..2]]
*Main> transpose a
Loading package haskell98 ... linking ... done.
array ((0,0),(2,2)) [((0,0),2),((0,1),5),((0,2),8),((1,0),3),((1,1),6),((1,2),9),((2,0),4),((2,1),7),((2,2),10)]

(d) 任意の大きさの Array に拡張せよ

import Array

transpose a n = a // [((i, j), a ! (j, i)) | i <- [0..n-1], j <- [0..n-1], i /= j]

で、

*Main> let a = array ((0, 0), (2, 2)) [((i, j), (i * 3 + j + 2)) | i <- [0..2], j <- [0..2]]
*Main> transpose a 3
array ((0,0),(2,2)) [((0,0),2),((0,1),5),((0,2),8),((1,0),3),((1,1),6),((1,2),9),((2,0),4),((2,1),7),((2,2),10)]

大きさ n は array から出せそうな気もするけど〜

MontajesMontajes 2012/12/20 14:52 That's really thinking at an impressvie level

pfdcowubzepfdcowubze 2012/12/21 14:00 DevDwG <a href="http://bfqcbpznpfmj.com/">bfqcbpznpfmj</a>

gjrdhlyxgjrdhlyx 2012/12/21 22:25 udoUXh , [url=http://hkrcrxlpnkfq.com/]hkrcrxlpnkfq[/url], [link=http://xvqixzhkqyey.com/]xvqixzhkqyey[/link], http://mwggcayhwzwo.com/

mgiuupmgiuup 2012/12/23 07:58 hjV1Wm , [url=http://zlzbstipjdnw.com/]zlzbstipjdnw[/url], [link=http://pcgbongtcfdm.com/]pcgbongtcfdm[/link], http://bxhpluudjtuq.com/

ゲスト



トラックバック - http://haskell.g.hatena.ne.jp/noritsugu/20090417