Mercurial > repos > icfp2013
annotate tools/parse.scala @ 59:3c8d8fdd32a1 default tip
mike's changes to solver
author | bill |
---|---|
date | Sun, 11 Aug 2013 15:24:22 -0700 |
parents | 5cf8de487ed6 |
children |
rev | line source |
---|---|
1
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
1 // |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
2 // How to run: scala -cp json-smart-1.0.9-1.jar parse.scala |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
3 // |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
4 import net.minidev.json._ |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
5 import scala.collection.JavaConversions._ |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
6 import scala.collection.mutable._ |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
7 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
8 val file = scala.io.Source.fromFile("../data/myproblems.json").mkString |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
9 val json = JSONValue.parse(file).asInstanceOf[JSONArray] |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
10 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
11 var totalProblems = json.size |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
12 var totalSize = 0 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
13 val operatorHash = HashMap[String, Int]() |
2
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
14 val allSizes = HashMap[Int, Int]() |
1
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
15 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
16 for(p <- json) { |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
17 val problem = p.asInstanceOf[JSONObject] |
2
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
18 val size = problem.get("size").asInstanceOf[java.lang.Integer] |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
19 totalSize += size |
1
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
20 val operators = problem.get("operators").asInstanceOf[JSONArray] |
2
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
21 |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
22 allSizes(size) = allSizes.get(size) match { |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
23 case Some(count) => count + 1 |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
24 case None => 1 |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
25 } |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
26 |
1
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
27 for(o <- operators) { |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
28 val operator = o.asInstanceOf[String] |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
29 operatorHash(operator) = operatorHash.get(operator) match { |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
30 case Some(count) => count + 1 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
31 case None => 1 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
32 } |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
33 } |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
34 } |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
35 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
36 println("Total problems: " + totalProblems) |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
37 println("Total size: " + totalSize) |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
38 println("Average size: " + totalSize / totalProblems) |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
39 |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
40 println("Operator Count: ") |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
41 for((key, value) <- operatorHash) { |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
42 println(" " + key + ":" + value) |
cdfc5e2de435
Checking in our problem set and a simple scala parser
Joshua Garnett <josh.garnett@gmail.com>
parents:
diff
changeset
|
43 } |
2
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
44 |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
45 println("Size Count: ") |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
46 for(key <- allSizes.keys.toList.sorted) { |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
47 println(" " + key + ":" + allSizes(key)) |
5cf8de487ed6
Adding sizes analysis
Joshua Garnett <josh.garnett@gmail.com>
parents:
1
diff
changeset
|
48 } |