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

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

石取りゲーム。cametan_42さんのブログから。

2023-02-07 10:46:17 | Scala

 cametan_42さんのブログに石取りゲームのjavaの回答があります。javaと聞くと、Scala で出来るんでない?と思ってしまいます。置き換えることだけ考えます。コードの内容については、チョット自分には思いつかない感じです。

 cametan_42さんのブログにやり方が詳しく有るので、それで良いのですが、自分はIDEが無いと駄目なのでintellij IDEAを使ってみます。実行はMainに変えてます。普通にやるとそうなります。Env.javaは全くその通りです。上のjavaのコードをScalaのプロジェクトへ貼るわけですが、今回は多少手こずりました。やった結果がしたです。

 なんとかコンパイルは通ったのですが、下の実行時のエラーが出ます。Scalaは基本breakは使わないようにとのことですが、javaみたいに使っているとこがまずいのかもしれません。式が複雑で、意味もわかりませんしね。(笑)入力の有効性をチェックしているのですかね。breakしないときは、this多分。でもthis.xやthis.numやthis.ternあるんでそれをまとめて返している。breakの時は返さないんですか?

ここで一旦ギブアップ。

 

 

 

 


コメント (4)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« フラッシュ暗算ですか?昔日... | トップ | 石取りゲーム、cametan_42さ... »
最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
石取りゲーム (cametan_42)
2023-02-07 13:55:47
> Scalaは基本breakは使わないようにとのことですが

うん。
関数型言語だったらbreakはまず使わないでしょうね。
Lispにもbreakとかないし。

> 入力の有効性をチェックしているのですかね。

そのとおりです。

> breakしないときは、this多分

そうですね。
break消しちゃって、最後のthisも消しちゃって、そこでthisを返しちゃえばいいのかな。
返信する
石取りゲーム (cametan_42)
2023-02-07 14:05:49
ああ、思い出した。
自分で書いたコードでも何考えて書いたんだか忘れちまう(笑)。

つまり、そこでbreak使った理由は、構文的には

while (true)
 if (何とか) {
  return this;
 } else {
  return this;
}

ってなるトコをreturn thisって二回書きたくなかったから、ですね。
そうすると、

while (true) {
 if (何とか) {
  break;
 }
 return this;
}

にしちまえば、return this一個だけで済む、とか言うそういうしょーもない理由です。
だからロジック的には前者のようにやれば良いんじゃないかしらん。
返信する
コメント有難うございました。 (isam)
2023-02-08 21:13:34
なかなか奥が深いです。もっとよく見れば、力がつくのでしょうが、動くか動かないか?だけやっているので、駄目なんでしょう。前のことは忘れているし。
返信する
「動くか動かないか?だけやっている」のは大事。 (cametan_42)
2023-02-08 21:58:02
> 動くか動かないか?だけやっている

いや、それでいいと思いますよ。
と言うかそれは結構重要な観点だ。
ある言語で書かれたプログラムを別の言語に移植してみて「動くか動かないか?だけやっている」、つまり調べる、ってのはその「別の言語」の理解を深めます。
大体、「移植作業」で学ぶ事って意外と多いです。
返信する

コメントを投稿

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

Scala」カテゴリの最新記事