表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

3/3

Scala版も書いてみた

 Scala版も書いてみました。遅延リストでシンプルにする事が出来ています。

 GitHubのリポジトリだと、 https://github.com/kuno-maichi/novels/blob/master/0020_%E4%BD%9C%E4%B8%AD%E3%81%A7%E3%81%AE%E3%83%9C%E3%82%A6%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E3%82%B9%E3%82%B3%E3%82%A2%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%83%86%E3%82%AD%E3%83%88%E3%83%BC%E3%81%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%BF%E3%81%9F/episode_0003.scala

 に書いてあります。


ーーーーーーーーーーーーーーーーーーーー

val Skipped = -1

def lazyListOf(data : List[List[Int]]): LazyList[Int] = data match {

  case Nil => LazyList.empty

  case frame::next => frame.filter{_ != Skipped}.to(LazyList) #::: lazyListOf(next)

}

def makeFrames(scores: LazyList[Int]): LazyList[Int] = scores match {

  case 10 #:: (next@(x#::y#::_)) => (10 + x + y) #:: makeFrames(next)

  case a #:: b #:: (next@(x#::_)) if a + b == 10=> (10 + x) #:: makeFrames(next)

  case a #:: b #:: next => (a + b) #:: makeFrames(next)

}


val datum = List(

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, Skipped),

  List(10, 10, 10)

)


val frames = makeFrames(lazyListOf(datum))

println(frames.take(10).sum)

ーーーーーーーーーーーーーーーーーーーー



思いつく限り色々な言語でやってみようかなと思ったりしています。プログラマーじゃない人には意味不明ですが。

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
[一言] おお。10フレのシステムというのは、ストライクやスペアの場合の先読みを、そのフレーム内で表記するため、と理解できるのか… もともとがそういう思想での構築だったのかもしれないけれど、一般には「…
[一言] なるほど? 10フレの考え方というか、取り扱いが全く違うんだ。 ちょっと考えてみます。
[一言] あれ、9フレストライクで、10フレが3/5で3投目Skippedにすると、ストライクパターンにマッチしなくない?
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ