混乱しているので、説明はできませんが、分かる人にはわかるかも?
暫くしてから見るとわかることもあります!
混乱しているので、説明はできませんが、分かる人にはわかるかも?
暫くしてから見るとわかることもあります!
確かに、pythonでのreduce,lambdaより混乱しないですね。lambda x, y : y, xについては
まだよく分かってないかもしれません。
ScalaのfoldLeftとかは、関数の定義時点で初期値を決めてます。
何か分からないのですが、関数の定義をしないで、pythonのように埋め込むことも不可能でないですか?
第一級オブジェクトなら出来そうに思えますが。
コップ本の3版P312,P313に左畳み込みと右畳み込みの定義があります。
左畳み込みだと、リストの一番左に初期値が来て、しかもネストの一番深いとこに置かれます。
右畳み込みだと逆で、リストの一番右に初期値が置かれて、ネストが一番深いところになります。
pythonでは初期値が有るか無いかとx, yなのか?y,xなのか?で決まるようですが
定義を見てないので、らしいしか、分かりません。
フジは地面を枝でない、ツタが這って広がろうとします。厄介です。
Scalaは動的な型付けでない(静的)ので、細かく指定はできますが、しなくてもいい場面も有るはずです。
pythonでやっていたprint(f'{ }')と同等の書式が使えれば、嬉しいですね!
IntelliJ IDEAの設定でも、REPLは使えるようになりますが、終了の仕方が:quitでなくて左のメニューの赤の四角です。
warningが出ているので見てみると、いずれも、その通りです!
良く分からないのですが、pythonのreduce,lambdaで初期値在るか無いかでも違った動作を
するように見えたのですが、それよりは混乱しないように思えました。
白のヤマブキ。ヤマブキ色は時代劇では、越後屋そちもわるよのう、ですね。
我が家のシラネアオイは貧弱ですが、焼石岳にいく途中に見たものは立派でした。
多分ヤマレコを探せば出てくるでしょう。
ムラサキサギゴケ
トンビ。昔、三橋美智也が歌ってました。そこから東京が見えるか?
見えないでしょう。
地図上では、栗駒山です。宮城県から見た姿が、馬に見えるとか?
一関では何年か前から、狐に見えるとか?言ってますが
一関で呼んでいる、須川岳、とは関連無いです。
サワオグルマらしい、Googleレンズでみた結果。簡単に調べられると、覚えられませ~ん。
27行目の意味がハッキリしなかったので、42行目から44行目で書き換えてみました。
Tryは両方で+1されてます。evalとevalNo2の両方。
8回では正解にたどり着けないので、20回までやれるにしました。慣れも必要そうです。secretは1000以上ですので、答えに苦しんで0123とかやるとエラーになります。本当は、正解にたどり着くのをどうすれば良いのかなあ?自分には無理そうですが…。
先ずは、secretが4桁になっているか確かめます。
20行目と21行目は分かりますが、22行目と23行目は分かりづらい。直感的には分かりますが…。疑問も感じます。理解してない?ここの発想が出てきません。(苦)でも、Bulls and Cowsの肝ですし、cametanさん式だとevalの部分ですね。そのまま使います。
どうやら大丈夫そうです。10回調べてみました。
cametanさんのブログに有ったのは、数字4桁ですので、ちょっとだけ違います。答えるのが面倒なので、secretを表示してます。これをcametanさん式に変えると勉強になるかな?プログラミングではいろんなやり方があるんですね。
Bardに、初め「Bulls and Cows」 知ってますか?と聞いたら、知ってるというので、Scalaで表示できますか?と聞いたら、表示されたのはHello Worldのコードでした。質問にもコツが必要なんですかね。
末尾再帰と普通の再帰、両方やってみました。
普通の再帰はスタックを消費しますので、実行には注意が必要です。多分。
先ずは、普通にやってみます。1x2x…x10の値です。
終了は10回目の計算が終わったとき。aとbの初期値はa*bは1にします。bにはnが代入されますし、aにはa*nつまりa*bが代入される。んだろうと思います。結果は普通のやり方と同じだったので、多分良いと思います。
引っかかったのが9行目、a + bとは、書けませんでした。a、bはBigIntegerのインスタンスと言うことでは、a.add(b)と書くのが普通ですが…。警告は@tailrecでした。末尾再帰があるということですかね。
whileを抜けるには、break以外でも可能のようです。While( ){ }とDo{ } While( )両方あるようですが、コップ本ではWhileとvar 変数は、付き物なので使わないほうが関数型に近づくと書いてます。VBぽっくないですか?Whileは値を作らないUnitだと書いてます。時々分けの分からない()が表示される時があります。それのことなのかもしれません。
traitではvar namae: StringでOKですが、classではnamae = ""としておかないと駄目みたいです。その他の数値の項目も0や0.0にしておきます。
なかなか手ごわいtraitです。
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でプログラマの仕事が無くなると言っていますが、本当ですかね?例えば、他人が書いたプログラムは、時として自分が書いても後から見たら、分からないことがショッチュウです。メンテナンスできますかね?それくらい完璧なものが作れるとは、信じがたいのですが…。
val ohtaniのとこだけ前と違います。どうやらtraitが複数あるときは、例のようにwith Pitching with Batting{ }と書いて、{ }の中はそれぞれの変数が使える。初期化も出来るようです。
Battingとpitchingが単独だと初期化が上手く言ったんですが、NitouryuでPitchingとBatting両方をしてすると、初期化が上手くいかなかった。