image

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

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ: 優秀なプログラマを雇う方法, 直感的な操作で3Dモデリングが可能になる『ILoveSketch』, etc... | トップページ | ピックアップ:ジョブスがクヌースに会った時の秘話, 麻生太郎総裁からのメッセージ‐ニコニコ動画(秋), etc... »

2008-10-20

scala で 8-queen 問題

こんなサイトを見つけた

- http://en.literateprograms.org/LiteratePrograms:Welcome
> LiteratePrograms:Welcome - LiteratePrograms

ちょっとした小さなプログラムの問題をいろいろな言語で処理する例が示されている。

scala で 8−クイーンを解く例があったので、試してみた。

$ scala -version
Scala code runner version 2.7.1.final -- Copyright 2002-2008, LAMP/EPFL

$ cat 8queen.scala
// See http://en.literateprograms.org/Eight_queens_puzzle_(Scala)

object EightQueens extends Application {
  def isSafe(queens: List[Int], column: Int, delta: Int): Boolean =
    queens.isEmpty ||
      ((queens.head != column) &&
      (Math.abs(queens.head - column) != delta) &&
      isSafe(queens.tail, column, delta+1))

  def queens(n: Int): List[List[Int]] = {
    def placeQueens(k: Int): List[List[Int]] =
      if (k == 0) List(List())
      else for { queens <- placeQueens(k - 1)
                 column <- (1 to n)
                 if isSafe(queens, column, 1) } yield column :: queens
    placeQueens(n)
  }
  queens(8).foreach(println(_))
}

$ calac 8queen.scala
$ time scala -cp . EightQueens | wc
      92     736    2668

real    0m0.484s
user    0m0.342s
sys    0m0.083s

これで N-queen の swi-prolog, ruby, scala, java での例を入手できたことになる。
速度やメモリ使用量を比較したり、N の増加に対するスケーラビリティを比較したりしてみたい。
また、言語に応じた解法はどれなのかについても調べていきたい。

« ピックアップ: 優秀なプログラマを雇う方法, 直感的な操作で3Dモデリングが可能になる『ILoveSketch』, etc... | トップページ | ピックアップ:ジョブスがクヌースに会った時の秘話, 麻生太郎総裁からのメッセージ‐ニコニコ動画(秋), etc... »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: scala で 8-queen 問題:

« ピックアップ: 優秀なプログラマを雇う方法, 直感的な操作で3Dモデリングが可能になる『ILoveSketch』, etc... | トップページ | ピックアップ:ジョブスがクヌースに会った時の秘話, 麻生太郎総裁からのメッセージ‐ニコニコ動画(秋), etc... »

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 あわせて読みたい

リンク