chrislo-sourceclassifier 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. data/Manifest +325 -0
  2. data/README.textile +51 -0
  3. data/Rakefile +64 -0
  4. data/examples/example.rb +22 -0
  5. data/lib/sourceclassifier.rb +22 -0
  6. data/lib/trainer.rb +51 -0
  7. data/sourceclassifier.gemspec +35 -0
  8. data/sources/gcc/ackermann.gcc-2.gcc +93 -0
  9. data/sources/gcc/ackermann.gcc-3.gcc +20 -0
  10. data/sources/gcc/ary.gcc +40 -0
  11. data/sources/gcc/binarytrees.gcc +136 -0
  12. data/sources/gcc/binarytrees.gcc-2.gcc +140 -0
  13. data/sources/gcc/binarytrees.gcc-3.gcc +134 -0
  14. data/sources/gcc/chameneos.gcc +117 -0
  15. data/sources/gcc/chameneos.gcc-2.gcc +134 -0
  16. data/sources/gcc/chameneos.gcc-3.gcc +120 -0
  17. data/sources/gcc/chameneosredux.gcc +306 -0
  18. data/sources/gcc/echo.gcc +144 -0
  19. data/sources/gcc/except.gcc +52 -0
  20. data/sources/gcc/fannkuch.gcc +105 -0
  21. data/sources/gcc/fannkuch.gcc-2.gcc +94 -0
  22. data/sources/gcc/fasta.gcc +158 -0
  23. data/sources/gcc/fasta.gcc-2.gcc +132 -0
  24. data/sources/gcc/fasta.gcc-3.gcc +145 -0
  25. data/sources/gcc/fasta.gcc-4.gcc +141 -0
  26. data/sources/gcc/fibo.gcc +20 -0
  27. data/sources/gcc/harmonic.gcc +22 -0
  28. data/sources/gcc/hash.gcc +31 -0
  29. data/sources/gcc/hash2.gcc +38 -0
  30. data/sources/gcc/heapsort.gcc +72 -0
  31. data/sources/gcc/hello.gcc-2.gcc +12 -0
  32. data/sources/gcc/hello.gcc-3.gcc +20 -0
  33. data/sources/gcc/knucleotide.gcc +173 -0
  34. data/sources/gcc/knucleotide.gcc-2.gcc +168 -0
  35. data/sources/gcc/lists.gcc +226 -0
  36. data/sources/gcc/magicsquares.gcc +378 -0
  37. data/sources/gcc/mandelbrot.gcc +84 -0
  38. data/sources/gcc/mandelbrot.gcc-2.gcc +63 -0
  39. data/sources/gcc/mandelbrot.gcc-3.gcc +91 -0
  40. data/sources/gcc/mandelbrot.gcc-4.gcc +78 -0
  41. data/sources/gcc/matrix.gcc +66 -0
  42. data/sources/gcc/message.gcc-2.gcc +72 -0
  43. data/sources/gcc/message.gcc-3.gcc +64 -0
  44. data/sources/gcc/methcall.gcc +89 -0
  45. data/sources/gcc/moments.gcc +120 -0
  46. data/sources/gcc/nbody.gcc +142 -0
  47. data/sources/gcc/nbody.gcc-2.gcc +143 -0
  48. data/sources/gcc/nbody.gcc-3.gcc +142 -0
  49. data/sources/gcc/nestedloop.gcc +25 -0
  50. data/sources/gcc/nsieve.gcc +35 -0
  51. data/sources/gcc/nsievebits.gcc-2.gcc +37 -0
  52. data/sources/gcc/nsievebits.gcc-3.gcc +53 -0
  53. data/sources/gcc/objinst.gcc +95 -0
  54. data/sources/gcc/partialsums.gcc +86 -0
  55. data/sources/gcc/partialsums.gcc-3.gcc +81 -0
  56. data/sources/gcc/partialsums.gcc-4.gcc +68 -0
  57. data/sources/gcc/pidigits.gcc +105 -0
  58. data/sources/gcc/primes.gcc +75 -0
  59. data/sources/gcc/prodcons.gcc +86 -0
  60. data/sources/gcc/random.gcc +29 -0
  61. data/sources/gcc/raytracer.gcc +125 -0
  62. data/sources/gcc/raytracer.gcc-2.gcc +181 -0
  63. data/sources/gcc/recursive.gcc +68 -0
  64. data/sources/gcc/recursive.gcc-2.gcc +55 -0
  65. data/sources/gcc/regexdna.gcc-2.gcc +126 -0
  66. data/sources/gcc/regexmatch.gcc +136 -0
  67. data/sources/gcc/revcomp.gcc +85 -0
  68. data/sources/gcc/revcomp.gcc-2.gcc +88 -0
  69. data/sources/gcc/revcomp.gcc-4.gcc +71 -0
  70. data/sources/gcc/reversefile.gcc +103 -0
  71. data/sources/gcc/reversefile.gcc-2.gcc +56 -0
  72. data/sources/gcc/sieve.gcc +34 -0
  73. data/sources/gcc/spectralnorm.gcc +54 -0
  74. data/sources/gcc/spellcheck.gcc +72 -0
  75. data/sources/gcc/spellcheck.gcc-2.gcc +61 -0
  76. data/sources/gcc/strcat.gcc +38 -0
  77. data/sources/gcc/sumcol.gcc-2.gcc +98 -0
  78. data/sources/gcc/sumcol.gcc-3.gcc +22 -0
  79. data/sources/gcc/sumcol.gcc-4.gcc +18 -0
  80. data/sources/gcc/sumcol.gcc-5.gcc +32 -0
  81. data/sources/gcc/takfp.gcc +23 -0
  82. data/sources/gcc/tcp-stream.gcc +122 -0
  83. data/sources/gcc/tcpecho.gcc +122 -0
  84. data/sources/gcc/tcpecho.gcc-2.gcc +136 -0
  85. data/sources/gcc/tcprequest.gcc +122 -0
  86. data/sources/gcc/threadring.gcc +73 -0
  87. data/sources/gcc/wc.gcc +52 -0
  88. data/sources/gcc/wc.gcc-2.gcc +40 -0
  89. data/sources/gcc/wc.gcc-3.gcc +46 -0
  90. data/sources/gcc/wordfreq.gcc-2.gcc +85 -0
  91. data/sources/perl/ackermann.perl +28 -0
  92. data/sources/perl/ackermann.perl-2.perl +25 -0
  93. data/sources/perl/ackermann.perl-3.perl +20 -0
  94. data/sources/perl/ackermann.perl-4.perl +18 -0
  95. data/sources/perl/ary.perl +25 -0
  96. data/sources/perl/ary.perl-2.perl +23 -0
  97. data/sources/perl/binarytrees.perl +66 -0
  98. data/sources/perl/binarytrees.perl-2.perl +71 -0
  99. data/sources/perl/chameneos.perl +67 -0
  100. data/sources/perl/echo.perl +81 -0
  101. data/sources/perl/except.perl +73 -0
  102. data/sources/perl/fannkuch.perl +44 -0
  103. data/sources/perl/fannkuch.perl-2.perl +38 -0
  104. data/sources/perl/fasta.perl +112 -0
  105. data/sources/perl/fasta.perl-2.perl +135 -0
  106. data/sources/perl/fasta.perl-4.perl +122 -0
  107. data/sources/perl/fibo.perl +15 -0
  108. data/sources/perl/fibo.perl-2.perl +0 -0
  109. data/sources/perl/fibo.perl-3.perl +0 -0
  110. data/sources/perl/harmonic.perl +7 -0
  111. data/sources/perl/hash.perl +23 -0
  112. data/sources/perl/hash.perl-2.perl +17 -0
  113. data/sources/perl/hash.perl-3.perl +24 -0
  114. data/sources/perl/hash2.perl +16 -0
  115. data/sources/perl/heapsort.perl +65 -0
  116. data/sources/perl/heapsort.perl-2.perl +0 -0
  117. data/sources/perl/hello.perl +5 -0
  118. data/sources/perl/knucleotide.perl-2.perl +30 -0
  119. data/sources/perl/lists.perl +48 -0
  120. data/sources/perl/mandelbrot.perl-2.perl +32 -0
  121. data/sources/perl/matrix.perl +59 -0
  122. data/sources/perl/matrix.perl-2.perl +0 -0
  123. data/sources/perl/matrix.perl-3.perl +0 -0
  124. data/sources/perl/message.perl +27 -0
  125. data/sources/perl/methcall.perl +66 -0
  126. data/sources/perl/moments.perl +44 -0
  127. data/sources/perl/nbody.perl +108 -0
  128. data/sources/perl/nestedloop.perl +28 -0
  129. data/sources/perl/nsieve.perl-2.perl +41 -0
  130. data/sources/perl/nsieve.perl-4.perl +43 -0
  131. data/sources/perl/nsievebits.perl +37 -0
  132. data/sources/perl/objinst.perl +73 -0
  133. data/sources/perl/partialsums.perl-3.perl +31 -0
  134. data/sources/perl/pidigits.perl +52 -0
  135. data/sources/perl/pidigits.perl-2.perl +47 -0
  136. data/sources/perl/process.perl +50 -0
  137. data/sources/perl/prodcons.perl +47 -0
  138. data/sources/perl/random.perl-4.perl +17 -0
  139. data/sources/perl/recursive.perl-2.perl +57 -0
  140. data/sources/perl/regexdna.perl +48 -0
  141. data/sources/perl/regexdna.perl-2.perl +43 -0
  142. data/sources/perl/regexdna.perl-3.perl +50 -0
  143. data/sources/perl/regexdna.perl-4.perl +49 -0
  144. data/sources/perl/regexdna.perl-5.perl +42 -0
  145. data/sources/perl/regexdna.perl-6.perl +43 -0
  146. data/sources/perl/regexmatch.perl +35 -0
  147. data/sources/perl/revcomp.perl-2.perl +34 -0
  148. data/sources/perl/reversefile.perl +8 -0
  149. data/sources/perl/reversefile.perl-2.perl +0 -0
  150. data/sources/perl/reversefile.perl-3.perl +0 -0
  151. data/sources/perl/sieve.perl +23 -0
  152. data/sources/perl/spectralnorm.perl-2.perl +54 -0
  153. data/sources/perl/spellcheck.perl +24 -0
  154. data/sources/perl/strcat.perl +13 -0
  155. data/sources/perl/strcat.perl-2.perl +0 -0
  156. data/sources/perl/sumcol.perl +8 -0
  157. data/sources/perl/takfp.perl +23 -0
  158. data/sources/perl/takfp.perl-3.perl +20 -0
  159. data/sources/perl/tcpecho.perl +61 -0
  160. data/sources/perl/tcprequest.perl +61 -0
  161. data/sources/perl/tcpstream.perl +61 -0
  162. data/sources/perl/threadring.perl +55 -0
  163. data/sources/perl/threadring.perl-2.perl +43 -0
  164. data/sources/perl/wc.perl +20 -0
  165. data/sources/perl/wc.perl-2.perl +14 -0
  166. data/sources/perl/wordfreq.perl +22 -0
  167. data/sources/perl/wordfreq.perl-3.perl +0 -0
  168. data/sources/perl/wordfreq.perl3.perl +0 -0
  169. data/sources/python/ackermann.python +21 -0
  170. data/sources/python/ary.python +19 -0
  171. data/sources/python/binarytrees.python +39 -0
  172. data/sources/python/binarytrees.python-3.python +44 -0
  173. data/sources/python/chameneos.python-6.python +73 -0
  174. data/sources/python/chameneosredux.python +126 -0
  175. data/sources/python/chameneosredux.python-2.python +122 -0
  176. data/sources/python/dispatch.python +176 -0
  177. data/sources/python/dispatch.python-2.python +136 -0
  178. data/sources/python/echo.python +64 -0
  179. data/sources/python/except.python +62 -0
  180. data/sources/python/fannkuch.python +50 -0
  181. data/sources/python/fannkuch.python-2.python +54 -0
  182. data/sources/python/fasta.python-2.python +79 -0
  183. data/sources/python/fibo.python +17 -0
  184. data/sources/python/fibo.python-2.python +0 -0
  185. data/sources/python/fibo.python-3.python +0 -0
  186. data/sources/python/harmonic.python-2.python +9 -0
  187. data/sources/python/hash.python +21 -0
  188. data/sources/python/hash.python-2.python +0 -0
  189. data/sources/python/hash2.python +30 -0
  190. data/sources/python/heapsort.python-3.python +66 -0
  191. data/sources/python/hello.python +5 -0
  192. data/sources/python/implicitode.python +231 -0
  193. data/sources/python/knucleotide.python +55 -0
  194. data/sources/python/lists.python +44 -0
  195. data/sources/python/magicsquares.python +145 -0
  196. data/sources/python/mandelbrot.python +44 -0
  197. data/sources/python/mandelbrot.python-2.python +35 -0
  198. data/sources/python/mandelbrot.python-3.python +46 -0
  199. data/sources/python/matrix.python +34 -0
  200. data/sources/python/matrix.python-2.python +23 -0
  201. data/sources/python/message.python +24 -0
  202. data/sources/python/message.python-2.python +20 -0
  203. data/sources/python/message.python-3.python +19 -0
  204. data/sources/python/meteor.python +210 -0
  205. data/sources/python/meteor.python-2.python +192 -0
  206. data/sources/python/methcall.python +51 -0
  207. data/sources/python/moments.python +65 -0
  208. data/sources/python/nbody.python +123 -0
  209. data/sources/python/nbody.python-2.python +120 -0
  210. data/sources/python/nestedloop.python +24 -0
  211. data/sources/python/nsieve.python +27 -0
  212. data/sources/python/nsieve.python-2.python +23 -0
  213. data/sources/python/nsieve.python-4.python +25 -0
  214. data/sources/python/nsievebits.python +27 -0
  215. data/sources/python/nsievebits.python-2.python +43 -0
  216. data/sources/python/objinst.python +53 -0
  217. data/sources/python/partialsums.python +37 -0
  218. data/sources/python/partialsums.python-2.python +35 -0
  219. data/sources/python/partialsums.python-3.python +48 -0
  220. data/sources/python/pidigits.python +38 -0
  221. data/sources/python/pidigits.python-3.python +63 -0
  222. data/sources/python/pidigits.python-4.python +24 -0
  223. data/sources/python/process.python +51 -0
  224. data/sources/python/process.python-2.python +133 -0
  225. data/sources/python/prodcons.python +51 -0
  226. data/sources/python/prodcons.python-2.python +0 -0
  227. data/sources/python/random.python +27 -0
  228. data/sources/python/raytracer.python +203 -0
  229. data/sources/python/recursive.python +35 -0
  230. data/sources/python/regexdna.python +39 -0
  231. data/sources/python/regexdna.python-2.python +34 -0
  232. data/sources/python/regexmatch.python +36 -0
  233. data/sources/python/revcomp.python-3.python +31 -0
  234. data/sources/python/reversefile.python +13 -0
  235. data/sources/python/reversefile.python-2.python +0 -0
  236. data/sources/python/reversefile.python-3.python +0 -0
  237. data/sources/python/sieve.python +50 -0
  238. data/sources/python/spectralnorm.python-2.python +36 -0
  239. data/sources/python/spellcheck.python +17 -0
  240. data/sources/python/strcat.python +35 -0
  241. data/sources/python/strcat.python-2.python +0 -0
  242. data/sources/python/sumcol.python-2.python +0 -0
  243. data/sources/python/sumcol.python-3.python +0 -0
  244. data/sources/python/takfp.python +19 -0
  245. data/sources/python/tcpecho.python +67 -0
  246. data/sources/python/tcprequest.python +67 -0
  247. data/sources/python/tcpstream.python +67 -0
  248. data/sources/python/threadring.python +47 -0
  249. data/sources/python/threadring.python-2.python +40 -0
  250. data/sources/python/threadring.python-3.python +34 -0
  251. data/sources/python/wc.python-2.python +19 -0
  252. data/sources/python/wordfreq.python +43 -0
  253. data/sources/python/wordfreq.python-2.python +0 -0
  254. data/sources/python/wordfreq.python-3.python +28 -0
  255. data/sources/python/wordfreq.python-4.python +38 -0
  256. data/sources/python/wordfreq.python-5.python +39 -0
  257. data/sources/ruby/ackermann.ruby +17 -0
  258. data/sources/ruby/ackermann.ruby-5.ruby +153 -0
  259. data/sources/ruby/ary.ruby +22 -0
  260. data/sources/ruby/binarytrees.ruby-2.ruby +55 -0
  261. data/sources/ruby/chameneos.ruby-2.ruby +71 -0
  262. data/sources/ruby/dispatch.ruby +114 -0
  263. data/sources/ruby/echo.ruby +41 -0
  264. data/sources/ruby/except.ruby +61 -0
  265. data/sources/ruby/except.ruby-2.ruby +61 -0
  266. data/sources/ruby/fannkuch.ruby +42 -0
  267. data/sources/ruby/fasta.ruby +81 -0
  268. data/sources/ruby/fibo.ruby +15 -0
  269. data/sources/ruby/harmonic.ruby-2.ruby +15 -0
  270. data/sources/ruby/hash.ruby +19 -0
  271. data/sources/ruby/hash2.ruby +23 -0
  272. data/sources/ruby/heapsort.ruby +55 -0
  273. data/sources/ruby/hello.ruby +6 -0
  274. data/sources/ruby/knucleotide.ruby-2.ruby +44 -0
  275. data/sources/ruby/lists.ruby +46 -0
  276. data/sources/ruby/mandelbrot.ruby-3.ruby +63 -0
  277. data/sources/ruby/matrix.ruby +40 -0
  278. data/sources/ruby/matrix.ruby-2.ruby +30 -0
  279. data/sources/ruby/message.ruby +29 -0
  280. data/sources/ruby/message.ruby-2.ruby +24 -0
  281. data/sources/ruby/meteor.ruby +386 -0
  282. data/sources/ruby/meteor.ruby-2.ruby +561 -0
  283. data/sources/ruby/methcall.ruby +58 -0
  284. data/sources/ruby/methcall.ruby-2.ruby +54 -0
  285. data/sources/ruby/moments.ruby +64 -0
  286. data/sources/ruby/nbody.ruby-2.ruby +145 -0
  287. data/sources/ruby/nestedloop.ruby +22 -0
  288. data/sources/ruby/nsieve.ruby +36 -0
  289. data/sources/ruby/nsieve.ruby-2.ruby +25 -0
  290. data/sources/ruby/nsievebits.ruby-2.ruby +42 -0
  291. data/sources/ruby/objinst.ruby +58 -0
  292. data/sources/ruby/partialsums.ruby +39 -0
  293. data/sources/ruby/pidigits.ruby +92 -0
  294. data/sources/ruby/pidigits.ruby-2.ruby +109 -0
  295. data/sources/ruby/prodcons.ruby +41 -0
  296. data/sources/ruby/random.ruby +17 -0
  297. data/sources/ruby/recursive.ruby-2.ruby +53 -0
  298. data/sources/ruby/regexdna.ruby +32 -0
  299. data/sources/ruby/regexdna.ruby-2.ruby +38 -0
  300. data/sources/ruby/regexmatch.ruby +33 -0
  301. data/sources/ruby/revcomp.ruby +28 -0
  302. data/sources/ruby/reversefile.ruby +7 -0
  303. data/sources/ruby/sieve.ruby +30 -0
  304. data/sources/ruby/spectralnorm.ruby +48 -0
  305. data/sources/ruby/spellcheck.ruby +18 -0
  306. data/sources/ruby/spellcheck.ruby-2.ruby +0 -0
  307. data/sources/ruby/strcat.ruby +12 -0
  308. data/sources/ruby/strcat.ruby-2.ruby +12 -0
  309. data/sources/ruby/sumcol.ruby +12 -0
  310. data/sources/ruby/sumcol.ruby-2.ruby +5 -0
  311. data/sources/ruby/takfp.ruby +15 -0
  312. data/sources/ruby/tcpecho.ruby +45 -0
  313. data/sources/ruby/tcprequest.ruby +45 -0
  314. data/sources/ruby/tcpstream.ruby +45 -0
  315. data/sources/ruby/threadring.ruby +61 -0
  316. data/sources/ruby/threadring.ruby-2.ruby +33 -0
  317. data/sources/ruby/wc.ruby +15 -0
  318. data/sources/ruby/wordfreq.ruby +17 -0
  319. data/sources/ruby/wordfreq.ruby2.ruby +0 -0
  320. data/test/fixtures/sources/gcc/ackermann.gcc-2.gcc +93 -0
  321. data/test/fixtures/sources/python/ackermann.python +21 -0
  322. data/test/fixtures/sources/ruby/ackermann.ruby +17 -0
  323. data/test/test_source_classifier.rb +40 -0
  324. data/test/test_trainer.rb +34 -0
  325. data/trainer.bin +1193 -0
  326. metadata +393 -0
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: methcall.ruby,v 1.1.1.1 2004-05-19 18:10:41 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+ # with help from Aristarkh Zagorodnikov
6
+
7
+ class Toggle
8
+ def initialize(start_state)
9
+ @bool = start_state
10
+ end
11
+
12
+ def value
13
+ @bool
14
+ end
15
+
16
+ def activate
17
+ @bool = !@bool
18
+ self
19
+ end
20
+ end
21
+
22
+ class NthToggle < Toggle
23
+ def initialize(start_state, max_counter)
24
+ super start_state
25
+ @count_max = max_counter
26
+ @counter = 0
27
+ end
28
+
29
+ def activate
30
+ @counter += 1
31
+ if @counter >= @count_max
32
+ @bool = !@bool
33
+ @counter = 0
34
+ end
35
+ self
36
+ end
37
+ end
38
+
39
+ def main()
40
+ n = Integer(ARGV.shift || 1)
41
+
42
+ val = 1
43
+ toggle = Toggle.new(val)
44
+ n.times do
45
+ val = toggle.activate().value()
46
+ end
47
+ if val then puts "true" else puts "false" end
48
+
49
+ val = 1
50
+ ntoggle = NthToggle.new(val, 3)
51
+ n.times do
52
+ val = ntoggle.activate().value()
53
+ end
54
+ if val then puts "true" else puts "false" end
55
+ end
56
+
57
+ main()
58
+
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/tclsh
2
+ # $Id: methcall.ruby-2.ruby,v 1.1 2005-04-16 15:11:10 igouy-guest Exp $
3
+
4
+ # The Great Computer Language Shootout
5
+ # http://shootout.alioth.debian.org/
6
+ #
7
+ # Contributed by Hemang Lavana
8
+ # This program is based on object.tcl
9
+
10
+ package require Itcl
11
+
12
+ ::itcl::class Toggle {
13
+ variable _state
14
+ constructor {start_state} {set _state $start_state}
15
+ public method value {} { return [expr {$_state ? true : false}]}
16
+ public method activate {} {
17
+ set _state [expr {!$_state}]
18
+ return $this
19
+ }
20
+ }
21
+
22
+ ::itcl::class NthToggle {
23
+ inherit Toggle
24
+ variable _counter
25
+ variable _count_max
26
+
27
+ constructor {start_state max_counter} {Toggle::constructor $start_state} {
28
+ set _counter 0
29
+ set _count_max $max_counter
30
+ }
31
+ method activate {} {
32
+ incr _counter 1
33
+ if {$_counter >= $_count_max} {
34
+ set _state [expr {!$_state}]
35
+ set _counter 0
36
+ }
37
+ return $this
38
+ }
39
+ }
40
+
41
+ proc main {n} {
42
+ Toggle toggle TRUE
43
+ for {set i 0} {$i<$n} {incr i} {
44
+ set value [[toggle activate] value]
45
+ }
46
+ puts $value
47
+
48
+ NthToggle ntoggle TRUE 3
49
+ for {set i 0} {$i<$n} {incr i} {
50
+ set value [[ntoggle activate] value]
51
+ }
52
+ puts $value
53
+ }
54
+ main [lindex $argv 0]
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: moments.ruby,v 1.2 2005-06-10 00:57:22 igouy-guest Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+
6
+ # throw away unused parameter sent by benchmark framework
7
+ ARGV.shift()
8
+
9
+ def main ()
10
+ sum = 0.0
11
+ nums = []
12
+ num = nil
13
+
14
+ for line in STDIN.readlines()
15
+ num = Float(line)
16
+ nums << num
17
+ sum += num
18
+ end
19
+
20
+ n = nums.length()
21
+ mean = sum/n;
22
+ deviation = 0.0
23
+ average_deviation = 0.0
24
+ standard_deviation = 0.0
25
+ variance = 0.0
26
+ skew = 0.0
27
+ kurtosis = 0.0
28
+
29
+ for num in nums
30
+ deviation = num - mean
31
+ average_deviation += deviation.abs()
32
+ variance += deviation**2;
33
+ skew += deviation**3;
34
+ kurtosis += deviation**4
35
+ end
36
+ average_deviation /= n
37
+ variance /= (n - 1)
38
+ standard_deviation = Math.sqrt(variance)
39
+
40
+ if (variance > 0.0)
41
+ skew /= (n * variance * standard_deviation)
42
+ kurtosis = kurtosis/(n * variance * variance) - 3.0
43
+ end
44
+
45
+ nums.sort()
46
+ mid = n / 2
47
+
48
+ if (n % 2) == 0
49
+ median = (nums.at(mid) + nums.at(mid-1))/2
50
+ else
51
+ median = nums.at(mid)
52
+ end
53
+
54
+ printf("n: %d\n", n)
55
+ printf("median: %f\n", median)
56
+ printf("mean: %f\n", mean)
57
+ printf("average_deviation: %f\n", average_deviation)
58
+ printf("standard_deviation: %f\n", standard_deviation)
59
+ printf("variance: %f\n", variance)
60
+ printf("skew: %f\n", skew)
61
+ printf("kurtosis: %f\n", kurtosis)
62
+ end
63
+
64
+ main()
@@ -0,0 +1,145 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org
3
+ #
4
+ # Optimized for Ruby by Jesse Millikan
5
+ # From version ported by Michael Neumann from the C gcc version,
6
+ # which was written by Christoph Bauer.
7
+
8
+ SOLAR_MASS = 4 * Math::PI**2
9
+ DAYS_PER_YEAR = 365.24
10
+
11
+ class Planet
12
+ attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
13
+
14
+ def initialize(x, y, z, vx, vy, vz, mass)
15
+ @x, @y, @z = x, y, z
16
+ @vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
17
+ @mass = mass * SOLAR_MASS
18
+ end
19
+
20
+ def move_from_i(bodies, nbodies, dt, i)
21
+ while i < nbodies
22
+ b2 = bodies[i]
23
+ dx = @x - b2.x
24
+ dy = @y - b2.y
25
+ dz = @z - b2.z
26
+
27
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
28
+ mag = dt / (distance * distance * distance)
29
+ b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
30
+
31
+ @vx -= dx * b2_mass_mag
32
+ @vy -= dy * b2_mass_mag
33
+ @vz -= dz * b2_mass_mag
34
+ b2.vx += dx * b_mass_mag
35
+ b2.vy += dy * b_mass_mag
36
+ b2.vz += dz * b_mass_mag
37
+ i += 1
38
+ end
39
+
40
+ @x += dt * @vx
41
+ @y += dt * @vy
42
+ @z += dt * @vz
43
+ end
44
+ end
45
+
46
+ def energy(bodies)
47
+ e = 0.0
48
+ nbodies = bodies.size
49
+
50
+ for i in 0 ... nbodies
51
+ b = bodies[i]
52
+ e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
53
+ for j in (i + 1) ... nbodies
54
+ b2 = bodies[j]
55
+ dx = b.x - b2.x
56
+ dy = b.y - b2.y
57
+ dz = b.z - b2.z
58
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
59
+ e -= (b.mass * b2.mass) / distance
60
+ end
61
+ end
62
+ e
63
+ end
64
+
65
+ def offset_momentum(bodies)
66
+ px, py, pz = 0.0, 0.0, 0.0
67
+
68
+ for b in bodies
69
+ m = b.mass
70
+ px += b.vx * m
71
+ py += b.vy * m
72
+ pz += b.vz * m
73
+ end
74
+
75
+ b = bodies[0]
76
+ b.vx = - px / SOLAR_MASS
77
+ b.vy = - py / SOLAR_MASS
78
+ b.vz = - pz / SOLAR_MASS
79
+ end
80
+
81
+ BODIES = [
82
+ # sun
83
+ Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
84
+
85
+ # jupiter
86
+ Planet.new(
87
+ 4.84143144246472090e+00,
88
+ -1.16032004402742839e+00,
89
+ -1.03622044471123109e-01,
90
+ 1.66007664274403694e-03,
91
+ 7.69901118419740425e-03,
92
+ -6.90460016972063023e-05,
93
+ 9.54791938424326609e-04),
94
+
95
+ # saturn
96
+ Planet.new(
97
+ 8.34336671824457987e+00,
98
+ 4.12479856412430479e+00,
99
+ -4.03523417114321381e-01,
100
+ -2.76742510726862411e-03,
101
+ 4.99852801234917238e-03,
102
+ 2.30417297573763929e-05,
103
+ 2.85885980666130812e-04),
104
+
105
+ # uranus
106
+ Planet.new(
107
+ 1.28943695621391310e+01,
108
+ -1.51111514016986312e+01,
109
+ -2.23307578892655734e-01,
110
+ 2.96460137564761618e-03,
111
+ 2.37847173959480950e-03,
112
+ -2.96589568540237556e-05,
113
+ 4.36624404335156298e-05),
114
+
115
+ # neptune
116
+ Planet.new(
117
+ 1.53796971148509165e+01,
118
+ -2.59193146099879641e+01,
119
+ 1.79258772950371181e-01,
120
+ 2.68067772490389322e-03,
121
+ 1.62824170038242295e-03,
122
+ -9.51592254519715870e-05,
123
+ 5.15138902046611451e-05)
124
+ ]
125
+
126
+
127
+ n = Integer(ARGV[0])
128
+
129
+ offset_momentum(BODIES)
130
+
131
+ puts "%.9f" % energy(BODIES)
132
+
133
+ nbodies = BODIES.size
134
+ dt = 0.01
135
+
136
+ n.times do
137
+ i = 0
138
+ while i < nbodies
139
+ b = BODIES[i]
140
+ b.move_from_i(BODIES, nbodies, dt, i + 1)
141
+ i += 1
142
+ end
143
+ end
144
+
145
+ puts "%.9f" % energy(BODIES)
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: nestedloop.ruby,v 1.1.1.1 2004-05-19 18:10:57 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+ # from Avi Bryant
6
+
7
+ n = Integer(ARGV.shift || 1)
8
+ x = 0
9
+ n.times do
10
+ n.times do
11
+ n.times do
12
+ n.times do
13
+ n.times do
14
+ n.times do
15
+ x += 1
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ puts x
@@ -0,0 +1,36 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org/
3
+ #
4
+ # contributed by Glenn Parker, March 2005
5
+ # modified by Evan Phoenix, Sept 2006
6
+
7
+ def sieve(m)
8
+ flags = Flags.dup[0,m]
9
+ count = 0
10
+ pmax = m - 1
11
+ p = 2
12
+ while p <= pmax
13
+ unless flags[p].zero?
14
+ count += 1
15
+ mult = p
16
+ while mult <= pmax
17
+ flags[mult] = 0
18
+ mult += p
19
+ end
20
+ end
21
+ p += 1
22
+ end
23
+ count
24
+ end
25
+
26
+ n = (ARGV[0] || 2).to_i
27
+
28
+ Flags = "\x1" * ( 2 ** n * 10_000)
29
+
30
+ n.downto(n-2) do |exponent|
31
+ break if exponent < 0
32
+ m = (1 << exponent) * 10_000
33
+ # m = (2 ** exponent) * 10_000
34
+ count = sieve(m)
35
+ printf "Primes up to %8d %8d\n", m, count
36
+ end
@@ -0,0 +1,25 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org/
3
+ # contributed by Pavel Valodzka
4
+
5
+ def nsieve(m)
6
+ is_prime = Array.new(m, true)
7
+ count = 0
8
+ 2.upto(m){|i|
9
+ if is_prime[i]
10
+ (2 * i).step(m, i){|v|
11
+ is_prime[v] = false
12
+ }
13
+ count += 1
14
+ end
15
+ }
16
+ return count
17
+ end
18
+
19
+ n = (ARGV[0] || 2).to_i
20
+ n = 2 if (n < 2)
21
+
22
+ 3.times {|t|
23
+ m = (1<<n-t)*10000
24
+ printf("Primes up to %8d%9d\n", m, nsieve(m))
25
+ }
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # The Great Computer Language Shootout
4
+ # http://shootout.alioth.debian.org/
5
+ #
6
+ # nsieve-bits in Ruby
7
+ # Contributed by Glenn Parker, March 2005
8
+
9
+ CharExponent = 3
10
+ BitsPerChar = 1 << CharExponent
11
+ LowMask = BitsPerChar - 1
12
+
13
+ def sieve(m)
14
+ items = "\xFF" * ((m / BitsPerChar) + 1)
15
+ masks = ""
16
+ BitsPerChar.times do |b|
17
+ masks << (1 << b).chr
18
+ end
19
+
20
+ count = 0
21
+ pmax = m - 1
22
+ 2.step(pmax, 1) do |p|
23
+ if items[p >> CharExponent][p & LowMask] == 1
24
+ count += 1
25
+ p.step(pmax, p) do |mult|
26
+ a = mult >> CharExponent
27
+ b = mult & LowMask
28
+ items[a] -= masks[b] if items[a][b] != 0
29
+ end
30
+ end
31
+ end
32
+ count
33
+ end
34
+
35
+ n = (ARGV[0] || 2).to_i
36
+ n.step(n - 2, -1) do |exponent|
37
+ break if exponent < 0
38
+ m = 2 ** exponent * 10_000
39
+ count = sieve(m)
40
+ printf "Primes up to %8d %8d\n", m, count
41
+ end
42
+