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

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

ScalaのfoldLeft、foldRightとpythonのreduce,lambda組み合わせは、違うんですかね?畳み込みとはありますが。

2024-05-08 21:25:36 | Scala

混乱しているので、説明はできませんが、分かる人にはわかるかも?

暫くしてから見るとわかることもあります!


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ScalaのfoldLeftとfoldRightを使ってみる。

2024-05-05 21:06:04 | Scala

確かに、pythonでのreduce,lambdaより混乱しないですね。lambda x, y : y, xについては

まだよく分かってないかもしれません。

ScalaのfoldLeftとかは、関数の定義時点で初期値を決めてます。

何か分からないのですが、関数の定義をしないで、pythonのように埋め込むことも不可能でないですか?

第一級オブジェクトなら出来そうに思えますが。

 

コップ本の3版P312,P313に左畳み込みと右畳み込みの定義があります。

左畳み込みだと、リストの一番左に初期値が来て、しかもネストの一番深いとこに置かれます。

右畳み込みだと逆で、リストの一番右に初期値が置かれて、ネストが一番深いところになります。

 

pythonでは初期値が有るか無いかとx, yなのか?y,xなのか?で決まるようですが

定義を見てないので、らしいしか、分かりません。

 

フジは地面を枝でない、ツタが這って広がろうとします。厄介です。

 

コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

暫く振りにintellj IDEAのScala触れてみました!+最近の写真

2024-05-04 20:56:24 | Scala

Scalaは動的な型付けでない(静的)ので、細かく指定はできますが、しなくてもいい場面も有るはずです。

pythonでやっていたprint(f'{ }')と同等の書式が使えれば、嬉しいですね!

IntelliJ IDEAの設定でも、REPLは使えるようになりますが、終了の仕方が:quitでなくて左のメニューの赤の四角です。

warningが出ているので見てみると、いずれも、その通りです!

 

良く分からないのですが、pythonのreduce,lambdaで初期値在るか無いかでも違った動作を

するように見えたのですが、それよりは混乱しないように思えました。

 

白のヤマブキ。ヤマブキ色は時代劇では、越後屋そちもわるよのう、ですね。

我が家のシラネアオイは貧弱ですが、焼石岳にいく途中に見たものは立派でした。

多分ヤマレコを探せば出てくるでしょう。

  

ムラサキサギゴケ

トンビ。昔、三橋美智也が歌ってました。そこから東京が見えるか?

見えないでしょう。

地図上では、栗駒山です。宮城県から見た姿が、馬に見えるとか?

一関では何年か前から、狐に見えるとか?言ってますが

一関で呼んでいる、須川岳、とは関連無いです。

サワオグルマらしい、Googleレンズでみた結果。簡単に調べられると、覚えられませ~ん。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Dr.Bard提示の「Bulls and Cows」いじってみました。その3。Secret.contains?

2023-05-24 14:02:21 | Scala

27行目の意味がハッキリしなかったので、42行目から44行目で書き換えてみました。

Tryは両方で+1されてます。evalとevalNo2の両方。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Dr.Bardから提示された「Bulls and Cows」をいじります。その2。

2023-05-23 23:03:57 | Scala

 8回では正解にたどり着けないので、20回までやれるにしました。慣れも必要そうです。secretは1000以上ですので、答えに苦しんで0123とかやるとエラーになります。本当は、正解にたどり着くのをどうすれば良いのかなあ?自分には無理そうですが…。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Dr.Bardから提示された「Bulls and Cows」をいじります。その1。

2023-05-22 22:48:18 | Scala

先ずは、secretが4桁になっているか確かめます。

 

20行目と21行目は分かりますが、22行目と23行目は分かりづらい。直感的には分かりますが…。疑問も感じます。理解してない?ここの発想が出てきません。(苦)でも、Bulls and Cowsの肝ですし、cametanさん式だとevalの部分ですね。そのまま使います。

どうやら大丈夫そうです。10回調べてみました。

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

cametanさんのブログから、「Bulls and Cows」をBardに聞いてみました。Scalaで表示できますか?

2023-05-22 12:00:10 | Scala

cametanさんのブログにあった書き込みはこちらです。

 cametanさんのブログに有ったのは、数字4桁ですので、ちょっとだけ違います。答えるのが面倒なので、secretを表示してます。これをcametanさん式に変えると勉強になるかな?プログラミングではいろんなやり方があるんですね。

 Bardに、初め「Bulls and Cows」 知ってますか?と聞いたら、知ってるというので、Scalaで表示できますか?と聞いたら、表示されたのはHello Worldのコードでした。質問にもコツが必要なんですかね。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1から100までの和に末尾再帰を使ってみました。

2023-05-15 10:53:12 | Scala

末尾再帰と普通の再帰、両方やってみました。

普通の再帰はスタックを消費しますので、実行には注意が必要です。多分。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scalaで階乗計算に末尾再帰を使ってみる。

2023-05-14 22:43:10 | Scala

先ずは、普通にやってみます。1x2x…x10の値です。

 終了は10回目の計算が終わったとき。aとbの初期値はa*bは1にします。bにはnが代入されますし、aにはa*nつまりa*bが代入される。んだろうと思います。結果は普通のやり方と同じだったので、多分良いと思います。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scalaでfib(128)をやって見ました。BigInteger使用します。

2023-05-14 17:03:07 | Scala

 引っかかったのが9行目、a + bとは、書けませんでした。a、bはBigIntegerのインスタンスと言うことでは、a.add(b)と書くのが普通ですが…。警告は@tailrecでした。末尾再帰があるということですかね。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scalaでジャンケンをやってみました。cametanさんが言ってます、REPLを参考にしました。

2023-05-11 09:05:12 | Scala

 whileを抜けるには、break以外でも可能のようです。While( ){ }とDo{ } While( )両方あるようですが、コップ本ではWhileとvar 変数は、付き物なので使わないほうが関数型に近づくと書いてます。VBぽっくないですか?Whileは値を作らないUnitだと書いてます。時々分けの分からない()が表示される時があります。それのことなのかもしれません。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scala例の講習会資料その17。クラスパラメータを持ったtrait。

2023-05-02 20:10:06 | Scala

 

traitではvar namae: StringでOKですが、classではnamae = ""としておかないと駄目みたいです。その他の数値の項目も0や0.0にしておきます。

なかなか手ごわいtraitです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scala例の講習会資料その16。traitの初期化、抽象メンバ。

2023-05-02 09:49:15 | Scala

 

 traitは、クラスパラメータを取れない。例えばclass Point(x : Int, y : Int)はOKだが、trait NoPoint(x : Int, y : Int)はNGとコップ本3版P220に書いてますが、Scala3から変わっているようです。上の例では、trait Playerのnamaeとnenreiがそれです。class Fielder(var namae: String, var nenrei: Int)で、設定されるようです。

 ChatGPTでプログラマの仕事が無くなると言っていますが、本当ですかね?例えば、他人が書いたプログラムは、時として自分が書いても後から見たら、分からないことがショッチュウです。メンテナンスできますかね?それくらい完璧なものが作れるとは、信じがたいのですが…。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scala例の講習会資料その15。traitの初期化。with Pitching with Batting{ }の例。

2023-05-01 16:28:32 | Scala

 val ohtaniのとこだけ前と違います。どうやらtraitが複数あるときは、例のようにwith Pitching with Batting{    }と書いて、{   }の中はそれぞれの変数が使える。初期化も出来るようです。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Scala例の講習会資料その14。traitの初期化。

2023-05-01 10:02:25 | Scala

Battingとpitchingが単独だと初期化が上手く言ったんですが、NitouryuでPitchingとBatting両方をしてすると、初期化が上手くいかなかった。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする