2016-04-04 20 views
-1

私はハスケルを初めて勉強し、教授に私の学習に役立ついくつかのエクササイズを依頼しました。彼は私に画像操作に関する何かを与えました。ハスケルで文字列を使って複数の画像を作成しました。ハスケル:画像のサイズを取得

pic :: Int -> Pic 
pic 1 = [" #### ", 
     " ## ## ", 
     " #### "] 

イメージサイズを取得したいとします。幅9高さ3インチ(9,3)フォーマット。それを定義

sizePic :: Pic -> (Int, Int)

ように高さが単に長関数を使用しています。 高さ::画像 - > Int 高さ=長さ

幅は私はいくつか問題があります。 幅::ピック - >のInt 幅=

私は単に頭の長さは、(すべての文字列が同じ長さである)

任意のアイデアを示すことにしたいです。

+0

としてご使用のバージョンを書くことができますが、 '最大にしてみてください。マップの長さ」、または画像が有効で大きさが正しいものであることを確かめているなら、 'length。最初に ' – Carsten

+0

@Carsten' max'はバイナリ、 'maximum'はリストを取る – chi

+0

@chi ...ありがとう(self-facepalm) - あなたの愚かな脳にチェックして頼らないと起こる;) – Carsten

答えて

1

これは初心者としてお手伝いをするつもりはないが、

> import Control.Arrow 
> (length &&& (length . head)) s 
(3,9) 

を行うことができるものの味を与えるためにあなたが

type Pic = [String] 

sizePic :: Pic -> (Int, Int) 
sizePic [] = (0,0) 
sizePic (x:xs) = (1+length xs, length x) 
1

ヒント№1:ハスケルの文字列は、Charのリストです。つまり、「画像」の各行は[Char]です。

ヒント№2:幅を取得するには、lengthを最初の(または最後か他のいずれかの)行に適用する必要があります。

+1

私はあなたの意見が好きです。私はそれは答えより建設的だと思いますが、私が示唆したように、私はこれが答えではないと思います。 – MasterMastic

関連する問題