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,81 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org/
3
+ # Contributed by Sokolov Yura
4
+
5
+ $last = 42.0
6
+ def gen_random (max,im=139968,ia=3877,ic=29573)
7
+ (max * ($last = ($last * ia + ic) % im)) / im
8
+ end
9
+
10
+ alu =
11
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
12
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
13
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
14
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
15
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
16
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
17
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
18
+
19
+ iub = [
20
+ ["a", 0.27],
21
+ ["c", 0.12],
22
+ ["g", 0.12],
23
+ ["t", 0.27],
24
+
25
+ ["B", 0.02],
26
+ ["D", 0.02],
27
+ ["H", 0.02],
28
+ ["K", 0.02],
29
+ ["M", 0.02],
30
+ ["N", 0.02],
31
+ ["R", 0.02],
32
+ ["S", 0.02],
33
+ ["V", 0.02],
34
+ ["W", 0.02],
35
+ ["Y", 0.02],
36
+ ]
37
+ homosapiens = [
38
+ ["a", 0.3029549426680],
39
+ ["c", 0.1979883004921],
40
+ ["g", 0.1975473066391],
41
+ ["t", 0.3015094502008],
42
+ ]
43
+
44
+ def make_repeat_fasta(id, desc, src, n)
45
+ puts ">#{id} #{desc}"
46
+ v = nil
47
+ width = 60
48
+ l = src.length
49
+ s = src * ((n / l) + 1)
50
+ s.slice!(n, l)
51
+ puts (s.scan(/.{1,#{width}}/).join("\n"))
52
+ end
53
+
54
+ def make_random_fasta(id, desc, table, n)
55
+ puts ">#{id} #{desc}"
56
+ rand, v = nil,nil
57
+ width = 60
58
+ chunk = 1 * width
59
+ prob = 0.0
60
+ table.each{|v| v[1]= (prob += v[1])}
61
+ for i in 1..(n/width)
62
+ puts (1..width).collect{
63
+ rand = gen_random(1.0)
64
+ table.find{|v| v[1]>rand}[0]
65
+ }.join
66
+ end
67
+ if n%width != 0
68
+ puts (1..(n%width)).collect{
69
+ rand = gen_random(1.0)
70
+ table.find{|v| v[1]>rand}[0]
71
+ }.join
72
+ end
73
+ end
74
+
75
+
76
+ n = (ARGV[0] or 27).to_i
77
+
78
+ make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
79
+ make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
80
+ make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
81
+
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: fibo.ruby,v 1.3 2005-04-25 19:01:38 igouy-guest Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+
6
+ def fib(n)
7
+ if n < 2 then
8
+ 1
9
+ else
10
+ fib(n-2) + fib(n-1)
11
+ end
12
+ end
13
+
14
+ N = Integer(ARGV.shift || 1)
15
+ puts fib(N)
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby
2
+ # http://shootout.alioth.debian.org/
3
+ #
4
+ # Contributed by Christopher Williams
5
+ # modified by Daniel South
6
+ # modified by Doug King
7
+
8
+ n = (ARGV[0] || 10000000).to_i
9
+
10
+ partialSum = 0.0
11
+ for i in (1..n)
12
+ partialSum += (1.0 / i)
13
+ end
14
+
15
+ printf("%.9f\n", partialSum)
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: hash.ruby,v 1.1.1.1 2004-05-19 18:09:55 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+ # with help from Aristarkh A Zagorodnikov
6
+
7
+ n = (ARGV.shift || 1).to_i
8
+
9
+ hash = {}
10
+ for i in 1..n
11
+ hash['%x' % i] = 1
12
+ end
13
+
14
+ c = 0
15
+ n.downto 1 do |i|
16
+ c += 1 if hash.has_key? i.to_s
17
+ end
18
+
19
+ puts c
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: hash2.ruby,v 1.2 2004-11-10 06:36:29 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ # Revised by Dave Anderson
6
+
7
+ n = Integer(ARGV.shift || 1)
8
+
9
+ hash1 = {}
10
+ i = 0
11
+ for i in 0 .. 9999
12
+ hash1["foo_" << i.to_s] = i
13
+ end
14
+
15
+ hash2 = Hash.new(0)
16
+ n.times do
17
+ for i in hash1.keys
18
+ hash2[i] += hash1[i]
19
+ end
20
+ end
21
+
22
+ printf "%d %d %d %d\n",
23
+ hash1["foo_1"], hash1["foo_9999"], hash2["foo_1"], hash2["foo_9999"]
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: heapsort.ruby,v 1.5 2005-04-14 15:59:37 igouy-guest Exp $
4
+ #
5
+ # The Great Computer Language Shootout
6
+ # http://shootout.alioth.debian.org/
7
+ #
8
+ # modified by Jabari Zakiya
9
+
10
+ IM = 139968
11
+ IA = 3877
12
+ IC = 29573
13
+
14
+ $last = 42.0
15
+ def gen_random (max) (max * ($last = ($last * IA + IC) % IM)) / IM end
16
+
17
+ def heapsort(n, ra)
18
+ j = i = rra = 0
19
+ l = (n >> 1) + 1
20
+ ir = n - 1
21
+
22
+ while (1) do
23
+ if (l > 1) then
24
+ rra = ra.at(l -= 1)
25
+ else
26
+ rra = ra.at(ir)
27
+ ra[ir] = ra.at(1)
28
+ if ((ir -= 1) == 1) then
29
+ ra[1] = rra
30
+ return
31
+ end
32
+ end
33
+ i = l
34
+ j = l << 1
35
+ while (j <= ir) do
36
+ if ((j < ir) and (ra.at(j) < ra.at(j+1))) then
37
+ j += 1
38
+ end
39
+ if (rra < ra.at(j)) then
40
+ ra[i] = ra.at(j)
41
+ j += (i = j)
42
+ else
43
+ j = ir + 1
44
+ end
45
+ end
46
+ ra[i] = rra
47
+ end
48
+ end
49
+
50
+ N = Integer(ARGV.shift || 1)
51
+ ary = Array.new(N) { gen_random(1.0) }
52
+
53
+ heapsort(N, ary)
54
+
55
+ printf "%.10f\n", ary.last
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: hello.ruby,v 1.1.1.1 2004-05-19 18:10:16 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+
6
+ puts "hello world"
@@ -0,0 +1,44 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org
3
+ #
4
+ # contributed by jose fco. gonzalez
5
+ # modified by Sokolov Yura
6
+
7
+ seq = String.new
8
+
9
+ def frecuency( seq,length )
10
+ n, table = seq.length - length + 1, Hash.new(0)
11
+ f, i = nil, nil
12
+ (0 ... length).each do |f|
13
+ (f ... n).step(length) do |i|
14
+ table[seq[i,length]] += 1
15
+ end
16
+ end
17
+ [n,table]
18
+
19
+ end
20
+
21
+ def sort_by_freq( seq,length )
22
+ n,table = frecuency( seq,length )
23
+ a, b, v = nil, nil, nil
24
+ table.sort{|a,b| b[1] <=> a[1]}.each do |v|
25
+ puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
26
+ end
27
+ puts
28
+ end
29
+
30
+ def find_seq( seq,s )
31
+ n,table = frecuency( seq,s.length )
32
+ puts "#{table[s].to_s}\t#{s.upcase}"
33
+ end
34
+
35
+ line = STDIN.gets while line !~ /^>THREE/
36
+ line = STDIN.gets
37
+ while (line !~ /^>/) & line do
38
+ seq << line.chomp
39
+ line = STDIN.gets
40
+ end
41
+
42
+ [1,2].each {|i| sort_by_freq( seq,i ) }
43
+
44
+ %w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: lists.ruby,v 1.3 2005-06-10 16:59:56 igouy-guest Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+
6
+ NUM = Integer(ARGV.shift || 1)
7
+
8
+ SIZE = 10000
9
+
10
+ def test_lists()
11
+ # create a list of integers (Li1) from 1 to SIZE
12
+ li1 = (1..SIZE).to_a
13
+ # copy the list to li2 (not by individual items)
14
+ li2 = li1.dup
15
+ # remove each individual item from left side of li2 and
16
+ # append to right side of li3 (preserving order)
17
+ li3 = Array.new
18
+ while (not li2.empty?)
19
+ li3.push(li2.shift)
20
+ end
21
+ # li2 must now be empty
22
+ # remove each individual item from right side of li3 and
23
+ # append to right side of li2 (reversing list)
24
+ while (not li3.empty?)
25
+ li2.push(li3.pop)
26
+ end
27
+ # li3 must now be empty
28
+ # reverse li1 in place
29
+ li1.reverse!
30
+ # check that first item is now SIZE
31
+ if li1[0] != SIZE then
32
+ p "not SIZE"
33
+ return(0)
34
+ end
35
+ # compare li1 and li2 for equality
36
+ if li1 != li2 then
37
+ return(0)
38
+ end
39
+ # return the length of the list
40
+ return(li1.length)
41
+ end
42
+
43
+ for iter in 1 .. NUM
44
+ result = test_lists()
45
+ end
46
+ print result, "\n"
@@ -0,0 +1,63 @@
1
+ # The Computer Language Benchmarks Game
2
+ # http://shootout.alioth.debian.org/
3
+ #
4
+ # contributed by Karl von Laudermann
5
+ # modified by Jeremy Echols
6
+ # modified by Detlef Reichl
7
+
8
+ size = ARGV[0].to_i
9
+
10
+ puts "P4\n#{size} #{size}"
11
+
12
+ ITER = 50 # Iterations
13
+ LIMIT_SQUARED = 4.0 # Presquared limit
14
+
15
+ byte_acc = 0
16
+ bit_num = 0
17
+
18
+ count_size = size - 1 # Precomputed size for easy for..in looping
19
+
20
+ # For..in loops are faster than .upto, .downto, .times, etc.
21
+ # That's not true, but left it here
22
+ for y in 0..count_size
23
+ for x in 0..count_size
24
+ zr = 0.0
25
+ zi = 0.0
26
+ cr = (2.0*x/size)-1.5
27
+ ci = (2.0*y/size)-1.0
28
+ escape = false
29
+
30
+ zrzr = zr*zr
31
+ zizi = zi*zi
32
+ ITER.times do
33
+ tr = zrzr - zizi + cr
34
+ ti = 2.0*zr*zi + ci
35
+ zr = tr
36
+ zi = ti
37
+ # preserve recalculation
38
+ zrzr = zr*zr
39
+ zizi = zi*zi
40
+ if zrzr+zizi > LIMIT_SQUARED
41
+ escape = true
42
+ break
43
+ end
44
+ end
45
+
46
+ byte_acc = (byte_acc << 1) | (escape ? 0b0 : 0b1)
47
+ bit_num += 1
48
+
49
+ # Code is very similar for these cases, but using separate blocks
50
+ # ensures we skip the shifting when it's unnecessary, which is most cases.
51
+ if (bit_num == 8)
52
+ print byte_acc.chr
53
+ byte_acc = 0
54
+ bit_num = 0
55
+ elsif (x == count_size)
56
+ byte_acc <<= (8 - bit_num)
57
+ print byte_acc.chr
58
+ byte_acc = 0
59
+ bit_num = 0
60
+ end
61
+ end
62
+ end
63
+
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: matrix.ruby,v 1.2 2005-03-23 06:11:41 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ #
6
+ # Contributed by Christopher Williams
7
+
8
+ n = (ARGV[0] || 60).to_i
9
+ size = 30
10
+
11
+ def mkmatrix(rows, cols)
12
+ count = 0
13
+ Array.new(rows) do |i|
14
+ Array.new(cols) {|j| count +=1 }
15
+ end
16
+ end
17
+
18
+ def mmult(rows, cols, m1, m2)
19
+ m3 = []
20
+ for i in 0 .. (rows - 1)
21
+ row = []
22
+ for j in 0 .. (cols - 1)
23
+ val = 0
24
+ for k in 0 .. (cols - 1)
25
+ val += m1[i][k] * m2[k][j]
26
+ end
27
+ row << val
28
+ end
29
+ m3 << row
30
+ end
31
+ m3
32
+ end
33
+
34
+ m1 = mkmatrix(size, size)
35
+ m2 = mkmatrix(size, size)
36
+ mm = []
37
+ n.times do
38
+ mm = mmult(size, size, m1, m2)
39
+ end
40
+ puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: matrix.ruby-2.ruby,v 1.1 2005-03-23 06:11:41 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ #
6
+ # Contributed by Christopher Williams
7
+
8
+ n = (ARGV[0] || 60).to_i
9
+ size = 30
10
+ require 'matrix'
11
+ n = (ARGV[0] || 600).to_i
12
+ size = 30
13
+
14
+ def mkmatrix(rows,cols)
15
+ count = 0
16
+ the_rows = Array.new(rows) do |i|
17
+ Array.new(cols) {|j| count +=1 }
18
+ end
19
+ Matrix[*the_rows]
20
+ end
21
+
22
+ m1 = mkmatrix(size,size)
23
+ m2 = mkmatrix(size,size)
24
+ mm = []
25
+ n.times do
26
+ mm = m1 * m2
27
+ end
28
+ puts "#{mm[0,0]} #{mm[2,3]} #{mm[3,2]} #{mm[4,4]}"
29
+
30
+