2016-11-09 5 views
-4

私は複数行の文字列multiStrがあるとします。私は最初に一致した行を見つける機能を文字列を検索し、Haskellで、それに番号を追加する

f :: Integer -> String -> String -> String 
f n lineMatcher multiStr = ... 

書くことができますどのように

line 1 
line 2 
x.tally: 10 
line 4 
line 5 

lineMatcherで始まり、末尾の数字にnを追加します。

だから例えば、このケースでは、我々はf 5 "x.tally" multiStr

line 1 
line 2 
x.tally: 15 
line 4 
line 5 
+1

質問には一般的に道路ブロックがどこに配置されているかに関する具体的な試みが含まれていなければならないので、この質問を議論の対象外とすることにしました。 –

+0

@Thomasと@Chad:関数の型シグネチャを作成し、引数に名前を付けて、必要な仕様を例で説明しました。私は質的には、複数行の文字列を別々の行に分割し、それらの行にマッチさせることを考えたが、その後何をすべきか分からなかったと言うこともできます(結局私は '数値を整数として読み取る)。私はあなたの助けに感謝します。 – George

+1

@ ThomasM.DuBuissonこれは問題がそれほど良くなかったのですが、コメントの価値がある問題ですが、私はそれが話題にならないと思っていません。試行せずにコードが多すぎる)。 – duplode

答えて

1

と評価されていることだろう私は、この問題を解決するの楽しみを台無しにしたくないので、私はどのように私は希望にいくつかのアドバイスを与えますこの問題を解決してみてください。

私は、あなたは2つの機能wordsunwords 1知っている願っていますまず第一に[String]Stringを分割するためであり、他方は反対をして - すなわち、単一' 'によって2つの要素を分離する[String]に参加します。まったく同じようなことをする関数linesunlinesについても知っておくべきです。彼らの名前によって推測できることを願っています。

次は、を追加してStringを変換する(ヘルパー)変換関数を構築することです。ヒント:関数showが便利になるかもしれません。

h :: Int -> String -> String 
h n str = let m = read str 
      in ... 

あなたは、さらに前のヘルパー関数で["x.tally:", "15"]["x.tally:", "10"]を変換し、それ自体に他のすべてのリストをマッピングすることができるなら、あなたはほぼ完了していると私はあなたが望む機能を作るために一緒に私のアドバイスのすべてをステッチすることを願って。

関連する問題