Q03:カードを裏返せ|プログラマ脳を鍛える数学パズル
プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問をやる。今回は、Q03:カードを裏返せ。 だいぶ間が空いてしまった。。
Q: 順番に並んだ1~100までの番号が書かれた100枚のカードが裏返しに置かれている。n番目のカードからn-1枚おきにカードを裏返すのを、2から100までやったとき、最後に裏向きになっているカードの番号を求めろ。
var cards = (1 to 100).map((_, false))
(2 to 100).foreach{ n =>
cards = cards.map{case(num, side) => (num, if(num%n == 0) !side else side)}
}
cards.flatMap{case(num, side) => if(side) None else Some(num)}
だいぶやっつけな感じになってしまった。
Link
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型