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,38 @@
1
+ # The Computer Language Benchmarks Game
2
+ # http://shootout.alioth.debian.org/
3
+ #
4
+ # contributed by Steve Fisher
5
+
6
+ dirty_seq = $stdin.readlines.join
7
+ seq = dirty_seq.gsub( /(?:^>.*)?\n/, "" )
8
+
9
+ def count( rx, str )
10
+ total = 0
11
+ rx.split( '|' ).each{|s|
12
+ x = s.sub(/\[.*\]/, " ").size
13
+ total += (str.size - str.gsub(/#{s}/i, "").size)/x }
14
+ total
15
+ end
16
+
17
+ puts [
18
+ 'agggtaaa|tttaccct',
19
+ '[cgt]gggtaaa|tttaccc[acg]',
20
+ 'a[act]ggtaaa|tttacc[agt]t',
21
+ 'ag[act]gtaaa|tttac[agt]ct',
22
+ 'agg[act]taaa|ttta[agt]cct',
23
+ 'aggg[acg]aaa|ttt[cgt]ccct',
24
+ 'agggt[cgt]aa|tt[acg]accct',
25
+ 'agggta[cgt]a|t[acg]taccct',
26
+ 'agggtaa[cgt]|[acg]ttaccct'
27
+ ].map{|s| "#{ s } #{ count( s, seq ) }" }
28
+
29
+ puts
30
+ puts dirty_seq.size, seq.size
31
+
32
+ puts(
33
+ {
34
+ 'B' => '(c|g|t)', 'D' => '(a|g|t)', 'H' => '(a|c|t)', 'K' => '(g|t)',
35
+ 'M' => '(a|c)', 'N' => '(a|c|g|t)', 'R' => '(a|g)', 'S' => '(c|t)',
36
+ 'V' => '(a|c|g)', 'W' => '(a|t)', 'Y' => '(c|t)'
37
+ }.inject(seq){|s,ary| s.gsub( *ary ) }.size )
38
+
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: regexmatch.ruby,v 1.2 2005-05-17 05:20:31 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ # modified by: Jon-Carlos Rivera
6
+
7
+ re = Regexp.new(
8
+ '(?:^|[^\d\(])' + # must be preceeded by non-digit
9
+ '(?:\((\d\d\d)\)|(\d\d\d))' + # match 1 or 2: area code is 3 digits
10
+ '[ ]' + # area code followed by one space
11
+ '(\d\d\d)' + # match 3: prefix of 3 digits
12
+ '[ -]' + # separator is either space or dash
13
+ '(\d\d\d\d)' + # match 4: last 4 digits
14
+ '\D' # must be followed by a non-digit
15
+ )
16
+
17
+ num = Integer(ARGV[0] || 1)
18
+
19
+ phones = STDIN.readlines
20
+
21
+ phonenum, count = "", 0
22
+
23
+ (1..num).each do |iter|
24
+ phones.each do |line|
25
+ if line =~ re
26
+ phonenum = "(#{($1 || $2)}) #{$3}-#{$4}";
27
+ if iter == num
28
+ count += 1
29
+ puts "#{count}: #{phonenum}"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/ruby
2
+ # The Great Computer Language Shootout
3
+ # http://shootout.alioth.debian.org/
4
+ #
5
+ # Contributed by Peter Bjarke Olsen
6
+ # Modified by Doug King
7
+
8
+ seq=Array.new
9
+
10
+ def revcomp(seq)
11
+ seq.reverse!.tr!('wsatugcyrkmbdhvnATUGCYRKMBDHVN','WSTAACGRYMKVHDBNTAACGRYMKVHDBN')
12
+ stringlen=seq.length
13
+ 0.step(stringlen-1,60) {|x| print seq.slice(x,60) , "\n"}
14
+ end
15
+
16
+ while STDIN.gets
17
+ if $_ =~ />/
18
+ if seq.length != 0
19
+ revcomp(seq.join)
20
+ seq=Array.new
21
+ end
22
+ puts $_
23
+ else
24
+ sub(/\n/,'')
25
+ seq.push $_
26
+ end
27
+ end
28
+ revcomp(seq.join)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: reversefile.ruby,v 1.1.1.1 2004-05-19 18:12:18 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+
6
+ print STDIN.readlines().reverse()
7
+
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: sieve.ruby,v 1.4 2004-11-10 06:48:59 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ #
6
+ # Revised implementation by Paul Sanchez
7
+
8
+ NUM = Integer(ARGV.shift || 1)
9
+
10
+ max, flags = 8192, nil
11
+ flags0 = Array.new(max+1)
12
+ for i in 2 .. max
13
+ flags0[i] = i
14
+ end
15
+
16
+ i=j=0
17
+
18
+ NUM.times do
19
+ flags = flags0.dup
20
+ #for i in 2 .. Math.sqrt(max) #<-- This is much faster
21
+ for i in 2 .. 8192
22
+ next unless flags[i]
23
+ # remove all multiples of prime: i
24
+ (i+i).step(max, i) do |j|
25
+ flags[j] = nil
26
+ end
27
+ end
28
+ end
29
+
30
+ print "Count: ", flags.compact.size, "\n"
@@ -0,0 +1,48 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org/
3
+ # Contributed by Sokolov Yura
4
+
5
+ def eval_A(i,j)
6
+ return 1.0/((i+j)*(i+j+1)/2+i+1)
7
+ end
8
+
9
+ def eval_A_times_u(u)
10
+ v, i = nil, nil
11
+ (0..u.length-1).collect { |i|
12
+ v = 0
13
+ for j in 0..u.length-1
14
+ v += eval_A(i,j)*u[j]
15
+ end
16
+ v
17
+ }
18
+ end
19
+
20
+ def eval_At_times_u(u)
21
+ v, i = nil, nil
22
+ (0..u.length-1).collect{|i|
23
+ v = 0
24
+ for j in 0..u.length-1
25
+ v += eval_A(j,i)*u[j]
26
+ end
27
+ v
28
+ }
29
+ end
30
+
31
+ def eval_AtA_times_u(u)
32
+ return eval_At_times_u(eval_A_times_u(u))
33
+ end
34
+
35
+ n = ARGV[0].to_i
36
+ u=[1]*n
37
+ for i in 1..10
38
+ v=eval_AtA_times_u(u)
39
+ u=eval_AtA_times_u(v)
40
+ end
41
+ vBv=0
42
+ vv=0
43
+ for i in 0..n-1
44
+ vBv += u[i]*v[i]
45
+ vv += v[i]*v[i]
46
+ end
47
+ print "%0.9f" % (Math.sqrt(vBv/vv)), "\n"
48
+
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: spellcheck.ruby,v 1.3 2005-06-21 05:36:55 igouy-guest Exp $
4
+ # http://shootout.alioth.debian.org/
5
+ # Revised by Dave Anderson
6
+
7
+ dict = Hash.new
8
+ l = ""
9
+
10
+ IO.foreach("Usr.Dict.Words") do |l|
11
+ dict[l.chomp!] = 1
12
+ end
13
+
14
+ STDIN.each do |l|
15
+ unless dict.has_key? l.chomp!
16
+ puts l
17
+ end
18
+ end
File without changes
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: strcat.ruby,v 1.1.1.1 2004-05-19 18:13:35 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+ # based on code from Aristarkh A Zagorodnikov and Dat Nguyen
6
+
7
+ STUFF = "hello\n"
8
+ hello = ''
9
+ (ARGV.first.to_i || 1).times do
10
+ hello << STUFF
11
+ end
12
+ puts hello.length
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: strcat.ruby-2.ruby,v 1.1 2004-11-10 06:44:59 bfulgham Exp $
4
+ # http://shootout.alioth.debian.org/
5
+
6
+ n = Integer(ARGV.shift || 1)
7
+
8
+ str = ''
9
+ for i in 1 .. n
10
+ str += "hello\n"
11
+ end
12
+ puts str.length
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+ # -*- mode: ruby -*-
3
+ # $Id: sumcol.ruby,v 1.2 2004-11-10 06:43:14 bfulgham Exp $
4
+ # http://www.bagley.org/~doug/shootout/
5
+ # from: Mathieu Bouchard, revised by Dave Anderson
6
+
7
+ count = 0
8
+ l=""
9
+ STDIN.each{ |l|
10
+ count += l.to_i
11
+ }
12
+ puts count
@@ -0,0 +1,5 @@
1
+ # The Computer Language Benchmarks Game
2
+ # http://shootout.alioth.debian.org/
3
+ # contributed by Pavel Valodzka
4
+
5
+ puts STDIN.inject(0){|a,v| a + v.to_i }
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby
2
+ # The Great Computer Language Shootout
3
+ # http://shootout.alioth.debian.org/
4
+ #
5
+ # contributed by Gabriele Renzi
6
+
7
+ def takfp x, y, z
8
+ return z unless y < x
9
+ takfp( takfp(x-1.0, y, z),
10
+ takfp(y-1.0, z, x),
11
+ takfp(z-1.0, x, y))
12
+ end
13
+
14
+ n=Float(ARGV[0])
15
+ puts takfp(n*3.0, n*2.0, n*1.0)
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/ruby
2
+ #### The Great Computer Language Shootout
3
+ #### http://shootout.alioth.debian.org/
4
+ ####
5
+ #### Contributed by Robbert Haarman
6
+ #### Modified by Ian Osgood
7
+
8
+ require 'socket'
9
+
10
+ N = Integer(ARGV[0] || 10)
11
+ M = 6400
12
+ REPLY_SIZE = 64
13
+ REQUEST_SIZE = 1
14
+ Host = 'localhost'
15
+ Port = 12345
16
+
17
+ sock = TCPServer.new Host, Port
18
+ if fork
19
+ # Parent process
20
+ conn = sock.accept
21
+ reply = 'x' * REPLY_SIZE
22
+ while true
23
+ request = conn.read REQUEST_SIZE
24
+ break if request == nil
25
+ conn.write reply
26
+ end
27
+ else
28
+ # Child process
29
+ conn = TCPSocket.new Host, Port
30
+ replies = 0
31
+ bytes = 0
32
+ n = N * M
33
+ request = 'x' * REQUEST_SIZE
34
+ while n > 0
35
+ n = n - 1
36
+ conn.write request
37
+ reply = conn.read REPLY_SIZE
38
+ replies = replies + 1
39
+ bytes = bytes + reply.length
40
+ end
41
+ conn.close
42
+ puts "replies: #{replies}\tbytes: #{bytes}"
43
+ end
44
+
45
+ sock.close
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/ruby
2
+ #### The Great Computer Language Shootout
3
+ #### http://shootout.alioth.debian.org/
4
+ ####
5
+ #### Contributed by Robbert Haarman
6
+ #### Modified by Ian Osgood
7
+
8
+ require 'socket'
9
+
10
+ N = Integer(ARGV[0] || 10)
11
+ M = 100
12
+ REPLY_SIZE = 4096
13
+ REQUEST_SIZE = 1
14
+ Host = 'localhost'
15
+ Port = 12345
16
+
17
+ sock = TCPServer.new Host, Port
18
+ if fork
19
+ # Parent process
20
+ conn = sock.accept
21
+ reply = 'x' * REPLY_SIZE
22
+ while true
23
+ request = conn.read REQUEST_SIZE
24
+ break if request == nil
25
+ conn.write reply
26
+ end
27
+ else
28
+ # Child process
29
+ conn = TCPSocket.new Host, Port
30
+ replies = 0
31
+ bytes = 0
32
+ n = N * M
33
+ request = 'x' * REQUEST_SIZE
34
+ while n > 0
35
+ n = n - 1
36
+ conn.write request
37
+ reply = conn.read REPLY_SIZE
38
+ replies = replies + 1
39
+ bytes = bytes + reply.length
40
+ end
41
+ conn.close
42
+ puts "replies: #{replies}\tbytes: #{bytes}"
43
+ end
44
+
45
+ sock.close
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/ruby
2
+ #### The Great Computer Language Shootout
3
+ #### http://shootout.alioth.debian.org/
4
+ ####
5
+ #### Contributed by Robbert Haarman
6
+ #### Modified by Ian Osgood
7
+
8
+ require 'socket'
9
+
10
+ N = Integer(ARGV[0] || 10)
11
+ M = 1
12
+ REPLY_SIZE = 409600
13
+ REQUEST_SIZE = 1
14
+ Host = 'localhost'
15
+ Port = 12345
16
+
17
+ sock = TCPServer.new Host, Port
18
+ if fork
19
+ # Parent process
20
+ conn = sock.accept
21
+ reply = 'x' * REPLY_SIZE
22
+ while true
23
+ request = conn.read REQUEST_SIZE
24
+ break if request == nil
25
+ conn.write reply
26
+ end
27
+ else
28
+ # Child process
29
+ conn = TCPSocket.new Host, Port
30
+ replies = 0
31
+ bytes = 0
32
+ n = N * M
33
+ request = 'x' * REQUEST_SIZE
34
+ while n > 0
35
+ n = n - 1
36
+ conn.write request
37
+ reply = conn.read REPLY_SIZE
38
+ replies = replies + 1
39
+ bytes = bytes + reply.length
40
+ end
41
+ conn.close
42
+ puts "replies: #{replies}\tbytes: #{bytes}"
43
+ end
44
+
45
+ sock.close
@@ -0,0 +1,61 @@
1
+ #
2
+ # The Computer Language Benchmarks Game
3
+ # http://shootout.alioth.debian.org/
4
+ # contributed by Klaus Friedel
5
+ #
6
+
7
+ require "thread"
8
+
9
+ THREAD_COUNT = 503
10
+
11
+ class Receiver
12
+ @next
13
+ @mailbox
14
+
15
+ def initialize(name)
16
+ @name = name
17
+ @mailbox = Queue.new
18
+ end
19
+
20
+ def next=(n)
21
+ @next = n
22
+ end
23
+
24
+ def put(msg)
25
+ @mailbox.push(msg)
26
+ end
27
+
28
+ def messageloop
29
+ while true
30
+ hopsRemaining = @mailbox.pop
31
+ if(hopsRemaining == 0)
32
+ print @name, "\n"
33
+ exit(0)
34
+ end
35
+ @next.put(hopsRemaining - 1)
36
+ end
37
+ end
38
+ end
39
+
40
+ ##########
41
+ # Main #
42
+ ##########
43
+ receivers = []
44
+ for i in 0..THREAD_COUNT-1
45
+ receivers[i] = Receiver.new(i+1)
46
+ if(i > 0)
47
+ receivers[i-1].next = receivers[i]
48
+ end
49
+ end
50
+ #close the ring
51
+ receivers[THREAD_COUNT-1].next = receivers[0]
52
+
53
+ # start the threads
54
+ for i in 0..THREAD_COUNT-1
55
+ Thread.start(i){|k| receivers[k].messageloop}
56
+ end
57
+
58
+ receivers[0].put(ARGV[0].to_i)
59
+
60
+ sleep
61
+