Diffstat (limited to 'noncore/games/wordgame/calcdist') (more/less context) (show whitespace changes)
-rwxr-xr-x | noncore/games/wordgame/calcdist | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/noncore/games/wordgame/calcdist b/noncore/games/wordgame/calcdist new file mode 100755 index 0000000..faf31f1 --- a/dev/null +++ b/noncore/games/wordgame/calcdist @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +# Usage: cat dictionaries | grep -v '[^a-z]' | calcdist n score +# +# Given a lot of words, find an appropriate distribution +# into n tiles with tile values proportional to the square root +# of the ratio of score to the tile's frequency. + +$n = shift; +$score = shift; + +while (<>) { + chomp; + for $c ( split "", $_ ) { + $freq{$c}++; + $t++; + } +} + +for $c ( sort { $freq{$a} <=> $freq{$b} } keys %freq ) { + #print "$c: $freq{$c}\n"; + $need = int($freq{$c}*$n/$t+0.5) || 1; + $value = int(sqrt($score/($freq{$c}*$n/$t))+0.5) || 1; + $t -= $freq{$c}; + $n -= $need; + print "$need $c $value\n"; +} |