annotate tools/parse.scala @ 55:85242b96adcc

Update myproblems.json
author Mike Pavone <pavone@retrodev.com>
date Sun, 11 Aug 2013 14:08:13 -0700
parents 5cf8de487ed6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }