新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

パスカルの三角形。

2022-06-16 05:57:50 | C#、VBなど

 パスカルの三角形の出し方については、配列を使っての方法では、答えを出したつもりです。でも、なんか自分の方法は、違うんではと思う書き込みがありました。いつものcametan_42さんの書き込みです。数学的表現に全くついていけないので、馬の耳に念仏、状態の自分です。(笑)

 パスカルの三角形にならって、簡単なものをと思って、やってみたのですが、ハマってしまいました。偶数行で同じ数値が2個並ぶとこで、おかしくなって、試行錯誤しました。その結果がコメントで残してます。

 あとから気づいたのですが、もっと簡単な方法が有ると思いました。一行での出力で、奇数なら無いが、偶数なら上の図のように、最後の行で5,5となっているように、なる。妙にw += 2を入れたのが、間違いだった。まだやってみてませんが。

 そろそれF#に戻らないと、思い出せなくなるので、Tourに戻ろうと思います。


コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VBでの末尾再帰は速いのか?... | トップ | 東北北部も梅雨入り »
最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
組み合わせ (cametan_42)
2022-06-16 14:53:42
>でも、なんか自分の方法は、違うんではと思う書き込みがありました。いつものcametan_42さんの書き込みです。

ここ

https://blog.goo.ne.jp/cametan_42/e/08566d8700eec5d3f753e10485e0950a

で書いてるのは、パスカルの三角形そのものじゃなくって、実際どんな「組み合わせ」があるのか実際に計算しよう、と言う話ですね。
だからisamさんのコードが間違ってる、とかそういう話じゃないです。
ご心配なきよう。

なお、今回のお題のコードはOCamlだと

let triangleSimple n =
 List.tl (List.fold_left
     (fun x y ->
      let lst = List.rev y in
      x @ [y @ (List.tl lst)] @ [y @ lst])
     [[]]
(List.tl (List.fold_left
       (fun x y ->
        x @ [(List.hd (List.rev x)) @ [y]])
       [[]]
       (List.init n (fun x -> x + 1))))

みたいになりますね。
恐らくF#でも似たようなコードになるでしょう。
返信する
ちょっと安心ですが…。 (isam)
2022-06-16 22:49:18
 cametan_42さん、コメント有難うございます。でもお、自分がやっていることは、近視眼的に思えてしまいます。cametan_42さんが書いてることを見ると。
 一つ質問させてください。自分の環境で、Ocamlでも実行してみることはできますが、デバッガとかIDEを全く使用してないんですか?どうもF#以外でそれらしきを見てないんですが。F#だとdotnet fsiで入れるモードだけで書いてるんですか?
 
返信する
IDE (cametan_42)
2022-06-16 23:30:41
> IDEを全く使用してないんですか?

例によってSpacemacs(GNU Emacs)です。
Spacemacsで提供してくれてるツール群があるんで、補完機能とかは色々ありますね。
一方、デバッガは使っていません。

> F#だとdotnet fsiで入れるモードだけで書いてるんですか?

インタプリタはフツーに使ってますよ。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

C#、VBなど」カテゴリの最新記事