image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2009年11月14日 | トップページ | 2009年11月16日 »

2009年11月15日

2009-11-15

scala で 8-queen

書籍中のサンプルコードに コンソール出力を追加してみた。
なるべく scala らしく書こうとしたが、まだまだ...

//  See http://booksites.artima.com/programming_in_scala/examples/html/ch23.html#sec2
package scalaapplication

import scala.collection.mutable.HashMap

object Queen extends Application {

    val MinQueen = 1 // 1
    val MaxQueen = 4 // 8

    for (size <- 1.to(MaxQueen)) {
        def print(sols: List[List[(Int, Int)]]) = {
            Console.println(size.toString + " Queen: " +
                            (if (sols.isEmpty) "no solution"
                             else sols.length + " solution(s)"))
            sols.zipWithIndex.foreach(q =>
                Console.println("No." + (q._2 + 1) + "\n" +
                                Board(size).putQueens(q._1)))
        }
        print(solve(size))
    }
    //--------------------------
    def solve(n: Int): List[List[(Int, Int)]] = {
        def placeQueens(k: Int): List[List[(Int, Int)]] = {
            if (k == 0) List(List())
            else
            for {queens <- placeQueens(k - 1)
                 column <- 1 to n
                 queen = (k, column)
                 if isSafe(queen, queens)
            } yield queen :: queens
        }
        placeQueens(n)
    }
    private def isSafe(queen: (Int, Int), queens: List[(Int, Int)]) = {
        queens forall (q => !inCheck(queen, q))
    }
    private def inCheck(q1: (Int, Int), q2: (Int, Int)) = {
        q1._1 == q2._1 ||  // same row
        q1._2 == q2._2 ||  // same column
        (q1._1 - q2._1).abs == (q1._2 - q2._2).abs // on diagonal
    }
    //--------------------------
    case class Board(size: Int) {
        private val board = new Array[Array[Boolean]](size + 1)
        for (y <- 0.to(size)) {
            board.update(y, new Array[Boolean](size + 1))
        }
        def putQueens(qs: List[(Int, Int)]) = {
            qs.foreach(q =>  board(q._2).update(q._1, true))
            this
        }
        override def toString = {
            var str: String = ""
            for (y <- 1.to(size)) {
                for (x <- 1.to(size)) {
                    str += (if (board(x)(y)) "* " else ". ")
                }
                str += "\n"
            }
            str
        }
    }
}

netbeans 上でrun させると
init:
deps-jar:
compile:
run:
1 Queen: 1 solution(s)
No.1
*

2 Queen: no solution
3 Queen: no solution
4 Queen: 2 solution(s)
No.1
. . * .
* . . .
. . . *
. * . .

No.2
. * . .
. . . *
* . . .
. . * .

構築成功 (合計時間: 0 秒)

となる。

Scala スケーラブルプログラミング

翻訳本の "Scalaスケーラブルプログラミング" をまずは全部を流し読みした。

本家サイトの example code や tuorial を眺めていただけでは得られない事が多くある。

- http://www.pdf-search-engine.com/programming-scala-pdf.html
> Programming Scala .pdf Ebook Download

- http://booksites.artima.com/programming_in_scala/examples/
> Code Examples for Programming in Scala

- http://www.impressjapan.jp/books/2745
> Impress Japan: Scalaスケーラブルプログラミング[コンセプト&コーディング]

じっくりと読み直していこう。
誤字をいくつか見つけたが、今度読むときは 記録して、出版社に報告していこう。

"はじめてのC" や "はじめての Java" レベルの書籍を誰かが書くまでに Scala が認められるようになることを望む。

ピックアップ:日本の科学研究ボロボロ iPS細胞生んだ事業 スパコン 科学未来館など軒並み「予算削減」「廃止」, 日本の映画オタクが選んだ史上最高の映画ベスト100, etc...

- http://mainichi.jp/select/jiken/news/20091115k0000m040043000c.html
> 北海道庁:4700本ソフト違法複製 1億円超支払いへ - 毎日jp(毎日新聞)

- http://www.youtube.com/watch?v=oLb8xlfw5ck
> YouTube - Fastest soccer goal ever scored in 2 seconds: サッカーの試合開始2秒でゴール

- http://d.hatena.ne.jp/ranha/20091115/1258220699
> Go言語は良い言語です - Yet Another Ranha

- http://deztec.jp/design/09/11/14_society.html
> 事業仕分けと無理な注文

- http://hamusoku.com/archives/768639.html
> "日本の科学研究、ボロボロに" iPS細胞生んだ事業、スパコン、科学未来館など、仕分け人が軒並み「予算削減」「廃止」:ハムスター速報

- http://blog.livedoor.jp/insidears/archives/52067734.html
> 東京工芸大学講師でゲームクリエイターの飯田和敏氏がボイコット!   「このクラスではもう授業出来ない」:【2ch】ニュー速VIPブログ(`・ω・´)

- http://sivaprod.exblog.jp/6638645/
> デザイン夜話 : 「貧乏」と「貧乏くさい」は違う。

> ...
>「貧乏」でも夢を持つことはできるけど、「貧乏くさい」は夢の反対側にある。
>「デザインをすること」とは「夢」をカタチにすることだ。
> ...

- http://2r.ldblog.jp/archives/757086.html
> 示談済みだから社名は書けないけどね、今年の初めにiPodをパクられたよ。 - 2のまとめR

- http://www.nicovideo.jp/watch/sm8801055
> 日本の映画オタクが選んだ史上最高の映画ベスト100!‐ニコニコ動画(9)

- http://d.hatena.ne.jp/quadrillepad/20091101/1257049659
> 『この文学がすごい!2010』は出版されない - quadrillepadの日記

- http://trac.macports.org/wiki/snc/snowleopard
> snc/snowleopard – MacPorts

- http://news.cocolog-nifty.com/cs/article/detail/blog-200911131717/1.htm
> マイケル映画 有名人の反応 ココログニュース:@nifty

« 2009年11月14日 | トップページ | 2009年11月16日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク