OSDN Git Service

Merge remote-tracking branch 'origin/master' into wdoor-stable
authorDaigo Moriwaki <daigo@debian.org>
Sun, 13 Dec 2015 12:25:14 +0000 (21:25 +0900)
committerDaigo Moriwaki <daigo@debian.org>
Sun, 13 Dec 2015 12:25:14 +0000 (21:25 +0900)
Conflicts:
changelog

changelog
shogi_server/time_clock.rb
test/TC_time_clock.rb
utils/histogram.R [new file with mode: 0644]
utils/statistics.rb

index 2142a8a..2e21e18 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,3 +1,24 @@
+2015-11-27  Daigo Moriwaki <daigo at debian dot org>
+
+       * [shogi-server] shogi_server/time_clock.rb:
+         - A time consumed could be -1.
+           * The start time of a move is captured after sending a move to a
+             player of the next turn at the end of the giant lock
+           * The end time of the move is captured at the exact time when the
+             server receives it before the giant lock
+           Therefore, end_time < start_time is possible when a player returns a
+           move instantly.
+           Thanks to Tomoyuki Kaneko for reporting this issue.
+           (Closes: #35795)
+
+2015-02-14  Daigo Moriwaki <daigo at debian dot org>
+
+       * util/statistics.rb:
+         - Updated to investigate floodgate-600-10 games.
+           Consult the result at
+           http://www.sgtpepper.net/hyspro/diary/20150214.html.
+         - Added a companion R script: histogram.R 
+
 2015-02-01  Daigo Moriwaki <daigo at debian dot org>
 
        * [shogi-server]
index 52a747d..06ac229 100644 (file)
@@ -125,11 +125,6 @@ class ChessClockWithLeastZero < ChessClock
     super
   end
 
-  def time_duration(mytime, start_time, end_time)
-    t = end_time - start_time
-    return t.floor
-  end
-
   def to_s
     return "ChessClockWithLeastZero: LeastTimePerMove %d; TotalTime %d; Byoyomi %d" % [@least_time_per_move, @total_time, @byoyomi]
   end
index aa98ae7..215fef4 100644 (file)
@@ -79,6 +79,8 @@ class TestChessClockWithLeastZero < Test::Unit::TestCase
     assert_equal(1, tc.time_duration(1,    100,   101))   # 1
     assert_equal(2, tc.time_duration(100, 100.1, 102.9))  # 2.8
     assert_equal(2, tc.time_duration(100, 100, 102))      # 2
+
+    assert_equal(0, tc.time_duration(100, 100, 99.9))     # -0.1
   end
 
   def test_time_duration_over_thinking_time
diff --git a/utils/histogram.R b/utils/histogram.R
new file mode 100644 (file)
index 0000000..d6a19e9
--- /dev/null
@@ -0,0 +1,53 @@
+args <- commandArgs(TRUE)
+file1<- args[1]
+file2 <- args[2]
+title <- args[3]
+
+print(file)
+
+d1 <- read.csv(file1, header=F)
+d2 <- read.csv(file2, header=F)
+
+sink(file="summary1.txt", split=T)
+summary(d1)
+sink()
+
+con <- file("summary1.txt")
+open(con)
+summary_text <- readLines(con)
+close(con)
+
+sink(file="summary2.txt", split=T)
+summary(d2)
+sink()
+
+con <- file("summary2.txt")
+open(con)
+summary_text <- readLines(con)
+close(con)
+
+
+png(sprintf("%s.png", file1))
+
+library(MASS)
+par(mar = c(4.5, 4.5, 4.5, 5.5))
+
+max <- 60
+
+truehist(d1$V1, xlim=c(0,max), col="#66ff6640", border="#66ff66", axes = FALSE, xlab = "", ylab = "", prob=FALSE)
+axis(side = 1)                                          # x axis
+axis(side = 2, col.axis = "#66ff66", col = "#66ff66")   # left y axis
+mtext("floodgate-900-0", side = 2, line=3)
+
+par(new = TRUE)
+
+truehist(d2$V1, xlim=c(0,max), col="#6699ff40", border="#6699ff", axes = FALSE, xlab = "", ylab = "", prob=FALSE) 
+axis(side = 4, col.axis = "#6699ff", col = "#6699ff")   # right y axis
+mtext("floodgate-600-0", side = 4, line=3)
+
+mtext(title, side=1, line=3)
+
+dev.off()
+q()
+
+
index b931317..c98ee45 100755 (executable)
@@ -112,33 +112,24 @@ $states   = State.new
 
 def do_file(file)
   $OPT_REPEAT -= 1 if $OPT_REPEAT > 0
-  csa = CsaFileReader.new(file)
+  csa = CsaFileReader.new(file, "EUC-JP")
 
-  # See games between 2008/03 to 2009/07
-  return if csa.start_time.nil? ||
-            csa.start_time <  Time.parse("2008/03/01") ||
-            csa.start_time >= Time.parse("2009/08/01")
-
-  # Want to see complete games
+  # Want to see completed games only
   $states.add csa.state
   return unless csa.state == "toryo"
 
-  # Process monthly
+  # 1. Process monthly
   $monthly.add(csa)
 
-  # Process gametime
+  # 2. Process gametime
   duration = (csa.end_time - csa.start_time).to_i
-  if duration > 2200
-    $stderr.puts "Too long game: #{file}"
-    return
-  end
   $gametime.add duration.to_i
 
-  # Process movetime
+  # 3. Process movetime
   values = csa.movetimes
   $movetime.add values
 
-  #Process moves
+  # 4. Process moves
   $moves.add values.size
 
 rescue => ex