Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
esp
Jul 13, 2003
I'm developing a very simple charting library in .Net. There's probably a billion of those already, so I'm only doing it for the fun.

It's all plain c#, supports a bunch of different chart types, and a has a few features like:
- "Understands" equations. Adding new EquationItem("x/pi + tan(cos(x)") adds a new graph.
- Automatic fitting (not having to set a x & y range)
- Automatically picks matching(somewhat) colors if you don't specify how to color stuff. Uses a similar solution to that of http://colorblender.com/

A sample of stuff it can chart (without matched colors..)


Here's a sample of what i used it for today. This image shows some tax-data for ~60 people. X-axis is year of birth(1940->1990) and Y-axis is income for 2006.


The same data colored for gender (each vertical step is $10000).

Adbot
ADBOT LOVES YOU

esp
Jul 13, 2003
Wanted to have an Android app under my belt, so I decided on a Scrabble/Wordfeud helper (one of many, I know).



You enter the letters in your rack and the app finds all possible words. Wildcards and some filtering is supported. The word-cruncher is hosted on Azure, so the app itself is quite small.

I tried a simple search where I loaded all the words into memory (over 300.000 in some languages), but that was way to slow to support multiple simultaneous users.

A Trie structure worked wonderfully, and a search with 7 random letters against 300.000 words tok less than 20 milliseconds. Problem was that the in-memory tree took > 700MBs. The reason for this is that the words BALL, HALL and MALL all get 4 individual nodes (B-A-L-L, H-A-L-L, M-A-L-L). The solution was to tie together equal "tails" so we're left with B/H/M-(A-L-L), where the *ALL-ending is referenced 3 times, cutting the number of nodes in half (from 12 to 6). This resulted in much better memory-usage, and enabled in-memory storage of multiple dictionaries on the server. This structure is called a DAWG (yo). The serialized word-tree is 2MB for 280.000 words (using protobuf-net).

Link to app: Wordwell

esp fucked around with this message at 23:05 on Jan 28, 2012

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply