From 0809e8d9f3793919b5adca99dd869f1aabbf2ef8 Mon Sep 17 00:00:00 2001 From: Hiraoka Date: Sat, 28 Nov 2020 20:14:24 +0900 Subject: [PATCH] Fix #820 (playouts "1.5k" is wrongly read as 15000 in SGF) --- src/main/java/featurecat/lizzie/rules/SGFParser.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/featurecat/lizzie/rules/SGFParser.java b/src/main/java/featurecat/lizzie/rules/SGFParser.java index 3cc146e50..b19f0c1a6 100644 --- a/src/main/java/featurecat/lizzie/rules/SGFParser.java +++ b/src/main/java/featurecat/lizzie/rules/SGFParser.java @@ -290,12 +290,12 @@ private static BoardHistoryList parseValue( line1[1] = line1[1].replaceAll(",", "."); // fix a decimal representation localization issue Lizzie.board.getData().winrate = 100 - Double.parseDouble(line1[1]); + String playoutsStr = line1[2]; + int kilo = 1000; + int playoutsUnit = + playoutsStr.endsWith("m") ? kilo * kilo : playoutsStr.endsWith("k") ? kilo : 1; int numPlayouts = - Integer.parseInt( - line1[2] - .replaceAll("k", "000") - .replaceAll("m", "000000") - .replaceAll("[^0-9]", "")); + (int) (Double.parseDouble(playoutsStr.replaceAll("[^0-9.]", "")) * playoutsUnit); Lizzie.board.getData().setPlayouts(numPlayouts); if (numPlayouts > 0 && !line2.isEmpty()) { Lizzie.board.getData().bestMoves = Lizzie.leelaz.parseInfo(line2);