cametan_42さんのブログはSchemeの回答だと思いますが、手続き的な思考(それにどうしてもなってしまいます)で、二重ループで解けるようです。
追記)
再帰でもできそうですので、やってみました。結果は配列に入れてますが、やっぱり配列に保存ですかね。
cametan_42さんのブログはSchemeの回答だと思いますが、手続き的な思考(それにどうしてもなってしまいます)で、二重ループで解けるようです。
追記)
再帰でもできそうですので、やってみました。結果は配列に入れてますが、やっぱり配列に保存ですかね。
いい練習になりますよ。
最初は誰でもそんなもんですよ。
ただ、手続き型言語と関数型言語での「考え方」の大きな違いは、
・手続き型言語 -> 配列系のデータをとにかく要素別にバラバラにして扱おうとする
・関数型言語 -> 配列系のデータを「まとめて」一気に弄ろうとする
って辺りが違うと思いますね。
isamさんが書いたような、i成分、j成分、って分けて考えるのはC言語なんかでもそうですが、発想は手続き型言語のモノです。
今はそれで良いです。徐々に、取り敢えずまずは文法的なモノに慣れていけばいい。
一方、関数型言語だと、例えば「リストの組」であるとか、一気にまとまったデータを「どう処理するか」と言う視点で見る辺りが違います。
例えばパスカルの三角形だと、i成分、j成分、って考えるより「一段」をまとめてどう処理するのか、って言う考え方を好みますね(だからリストを一気に処理する高階関数、なんつー発想が出てくる)。
考えてみると、僕もそうなんだけど、最初にC言語に触った時、「配列」って出てきた時凄く嫌だったんですよ(笑)。「データを纏められる」っつっても付随する部分がメンド臭いし、凄く「難しい」事をやらなアカン感じに追われて、凄く億劫だった。
一方、関数型言語だと「いきなりリスト」を纏めて扱う、とかそういう感じだったんで、ぶったまげたもんです。むしろ、単一の変数使って繰り返し、とか関数型言語だとあんま出てこないですからね(カウンターとか明示的なモノがそんな頻繁に出てこない)。
この2つの形式の大きな違いはこの辺でしょう。「データを分解して扱う」のを吉とするか、「まとまってるデータをそのまま処理するか」、と。
言い換えると、関数型言語で関数型言語の「考え方」に慣れると、「データを分解して見る」のが苦痛になってきますよ。「纏めてフィルタリング出来ないか」って考えるクセを付ける、ってのが関数型言語攻略法の第一歩だと思います。