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,13 @@
1
+ #!/usr/bin/python
2
+ # $Id: reversefile.python,v 1.1.1.1 2004-05-19 18:12:18 bfulgham Exp $
3
+ # http://www.bagley.org/~doug/shootout/
4
+ # from Brad Knotwell
5
+ # with help from Mark Baker
6
+
7
+ def main():
8
+ from sys import stdin, stdout
9
+ w = stdin.readlines()
10
+ w.reverse()
11
+ stdout.writelines(w)
12
+
13
+ main()
File without changes
File without changes
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/python
2
+ # $Id: sieve.python,v 1.4 2004-08-05 07:07:03 bfulgham Exp $
3
+ # http://shootout.alioth.debian.org/
4
+ # with help from Brad Knotwell
5
+
6
+ #uncomment for psyco JIT
7
+ #import psyco
8
+ #psyco.full()
9
+
10
+ import sys
11
+
12
+ def main():
13
+ try:
14
+ NUM = int(sys.argv[1])
15
+ except:
16
+ NUM = 1
17
+
18
+ for foo in xrange(0,NUM):
19
+ count = 0
20
+ flags = (8193) * [1]
21
+ for i in xrange(2,8193):
22
+ if flags[i]:
23
+ # remove all multiples of prime: i
24
+ k = i + i
25
+ while k < 8193:
26
+ flags[k] = 0
27
+ k = k + i
28
+ count += 1
29
+ print "Count:", count
30
+ #uncomment to verify the algorithm
31
+ #n = 0
32
+ #for i in range(200):
33
+ # if flags[i]:
34
+ # print n
35
+ # n += 1
36
+
37
+ main()
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
@@ -0,0 +1,36 @@
1
+ # The Computer Language Shootout
2
+ # http://shootout.alioth.debian.org/
3
+ #
4
+ # Contributed by Sebastien Loisel
5
+ # Fixed by Isaac Gouy
6
+ # Sped up by Josh Goldfoot
7
+
8
+ import math, sys, itertools
9
+
10
+ def eval_A(i,j):
11
+ return 1.0/((i+j)*(i+j+1)/2+i+1)
12
+
13
+ def eval_A_times_u(u):
14
+ return [sum(eval_A(i,j)*u[j] for j in xrange(len(u)))
15
+ for i in xrange(len(u))]
16
+
17
+ def eval_At_times_u(u):
18
+ return [sum(eval_A(j,i)*u[j] for j in xrange(len(u)))
19
+ for i in xrange(len(u))]
20
+
21
+ def eval_AtA_times_u(u):
22
+ return eval_At_times_u(eval_A_times_u(u))
23
+
24
+ def main():
25
+ n = int(sys.argv[1])
26
+ u = [1]*n
27
+ for i in xrange(10):
28
+ v=eval_AtA_times_u(u)
29
+ u=eval_AtA_times_u(v)
30
+ vBv = vv = 0
31
+ for ue, ve in itertools.izip(u,v):
32
+ vBv += ue * ve
33
+ vv += ve * ve
34
+ print "%0.9f" % (math.sqrt(vBv/vv))
35
+
36
+ main()
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/python
2
+ # $Id: spellcheck.python,v 1.2 2005-02-19 17:05:39 bfulgham Exp $
3
+ # http://shootout.alioth.debian.org/
4
+ #
5
+ # From Tupteq, based on original code by Fred Bremmer
6
+
7
+ import sys
8
+
9
+ def main():
10
+ dict = set(line[:-1] for line in file("Usr.Dict.Words") if line != '\n')
11
+
12
+ for line in sys.stdin:
13
+ word = line[:-1]
14
+ if word and word not in dict:
15
+ print word
16
+
17
+ main()
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/python
2
+ # $Id: strcat.python,v 1.3 2004-08-04 07:40:02 bfulgham Exp $
3
+ # http://shootout.alioth.debian.org/
4
+ import sys
5
+
6
+ # Illegal version: From Chris Rebert
7
+ #def main():
8
+ # print "".join(["hello" for i in xrange(int(sys.argv[1])-1)])
9
+
10
+ ##################################################################
11
+ # Other options
12
+ ##################################################################
13
+ # from Brad Knotwell, with changes based on recommendations from
14
+ # Andrew Bennetts
15
+ import sys,cStringIO
16
+ def main():
17
+ str = cStringIO.StringIO()
18
+ strwrite = str.write
19
+ for i in xrange(0,int(sys.argv[1])):
20
+ strwrite('hello\n')
21
+
22
+ print str.tell()
23
+
24
+ ##################################################################
25
+ # This version uses the native string concatenation operator "+"
26
+ #
27
+ #import sys
28
+ #def main():
29
+ # n = int(sys.argv[1])
30
+ # str = ""
31
+ # for i in xrange(0,n):
32
+ # str = str + "hello\n"
33
+ # print len(str)
34
+
35
+ main()
File without changes
File without changes
File without changes
@@ -0,0 +1,19 @@
1
+
2
+
3
+ import sys
4
+
5
+
6
+ def takfp(x, y, z):
7
+ if y >= x:
8
+ return z
9
+ return takfp(takfp(x - 1.0, y, z), takfp(y - 1.0, z, x), takfp(z - 1.0, x, y))
10
+
11
+ def main():
12
+ try:
13
+ n = float(sys.argv[1])
14
+ except:
15
+ print "Usage: %s <N>" % sys.argv[0]
16
+
17
+ print takfp(n * 3.0, n * 2.0, n * 1.0)
18
+
19
+ main()
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/python -OO
2
+ # The Computer Language Shootout Benchmarks
3
+ # http://shootout.alioth.debian.org
4
+ #
5
+ # Contributed by Kevin Carson
6
+
7
+ from sys import argv, stdout
8
+ from socket import socket, gethostbyname, \
9
+ AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
10
+ from os import fork, wait, _exit
11
+
12
+
13
+ def server(msg_count, msg_mult, reply_size, request_size) :
14
+ s = socket(AF_INET, SOCK_STREAM)
15
+ s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
16
+ s.bind((gethostbyname('localhost'), 11000))
17
+ s.listen(1)
18
+ sc, addr = s.accept()
19
+ reply = " " * reply_size
20
+ screcv = sc.recv
21
+ scsendall = sc.sendall
22
+
23
+ for i in xrange(msg_count * msg_mult) :
24
+ request = screcv(request_size)
25
+ scsendall(reply)
26
+
27
+ sc.close()
28
+ s.close()
29
+
30
+
31
+ def client(msg_count, msg_mult, reply_size, request_size) :
32
+ s = socket(AF_INET, SOCK_STREAM)
33
+ while s.connect_ex((gethostbyname('localhost'), 11000)) != 0 : pass
34
+ request = " " * request_size
35
+ srecv = s.recv
36
+ ssend = s.send
37
+
38
+ replies = bytes = 0
39
+ for i in xrange(msg_count * msg_mult) :
40
+ ssend(request)
41
+ byte_count = 0
42
+ while byte_count < reply_size :
43
+ reply = srecv(reply_size)
44
+ byte_count += len(reply)
45
+ bytes += byte_count
46
+ replies += 1
47
+
48
+ s.close()
49
+ print "replies: %d\tbytes: %d" % (replies, bytes)
50
+ stdout.flush()
51
+
52
+
53
+ M = 6400
54
+ reply_size = 64
55
+ request_size = 64
56
+
57
+ N = int(argv[1])
58
+
59
+ child_pid = fork()
60
+
61
+ if child_pid == 0 :
62
+ client(N, M, reply_size, request_size)
63
+ _exit(0)
64
+
65
+ else :
66
+ server(N, M, reply_size, request_size)
67
+ wait()
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/python -OO
2
+ # The Computer Language Shootout Benchmarks
3
+ # http://shootout.alioth.debian.org
4
+ #
5
+ # Contributed by Kevin Carson
6
+
7
+ from sys import argv, stdout
8
+ from socket import socket, gethostbyname, \
9
+ AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
10
+ from os import fork, wait, _exit
11
+
12
+
13
+ def server(msg_count, msg_mult, reply_size, request_size) :
14
+ s = socket(AF_INET, SOCK_STREAM)
15
+ s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
16
+ s.bind((gethostbyname('localhost'), 11000))
17
+ s.listen(1)
18
+ sc, addr = s.accept()
19
+ reply = " " * reply_size
20
+ screcv = sc.recv
21
+ scsendall = sc.sendall
22
+
23
+ for i in xrange(msg_count * msg_mult) :
24
+ request = screcv(request_size)
25
+ scsendall(reply)
26
+
27
+ sc.close()
28
+ s.close()
29
+
30
+
31
+ def client(msg_count, msg_mult, reply_size, request_size) :
32
+ s = socket(AF_INET, SOCK_STREAM)
33
+ while s.connect_ex((gethostbyname('localhost'), 11000)) != 0 : pass
34
+ request = " " * request_size
35
+ srecv = s.recv
36
+ ssend = s.send
37
+
38
+ replies = bytes = 0
39
+ for i in xrange(msg_count * msg_mult) :
40
+ ssend(request)
41
+ byte_count = 0
42
+ while byte_count < reply_size :
43
+ reply = srecv(reply_size)
44
+ byte_count += len(reply)
45
+ bytes += byte_count
46
+ replies += 1
47
+
48
+ s.close()
49
+ print "replies: %d\tbytes: %d" % (replies, bytes)
50
+ stdout.flush()
51
+
52
+
53
+ M = 100
54
+ reply_size = 4096
55
+ request_size = 64
56
+
57
+ N = int(argv[1])
58
+
59
+ child_pid = fork()
60
+
61
+ if child_pid == 0 :
62
+ client(N, M, reply_size, request_size)
63
+ _exit(0)
64
+
65
+ else :
66
+ server(N, M, reply_size, request_size)
67
+ wait()
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/python -OO
2
+ # The Computer Language Shootout Benchmarks
3
+ # http://shootout.alioth.debian.org
4
+ #
5
+ # Contributed by Kevin Carson
6
+
7
+ from sys import argv, stdout
8
+ from socket import socket, gethostbyname, \
9
+ AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
10
+ from os import fork, wait, _exit
11
+
12
+
13
+ def server(msg_count, msg_mult, reply_size, request_size) :
14
+ s = socket(AF_INET, SOCK_STREAM)
15
+ s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
16
+ s.bind((gethostbyname('localhost'), 11000))
17
+ s.listen(1)
18
+ sc, addr = s.accept()
19
+ reply = " " * reply_size
20
+ screcv = sc.recv
21
+ scsendall = sc.sendall
22
+
23
+ for i in xrange(msg_count * msg_mult) :
24
+ request = screcv(request_size)
25
+ scsendall(reply)
26
+
27
+ sc.close()
28
+ s.close()
29
+
30
+
31
+ def client(msg_count, msg_mult, reply_size, request_size) :
32
+ s = socket(AF_INET, SOCK_STREAM)
33
+ while s.connect_ex((gethostbyname('localhost'), 11000)) != 0 : pass
34
+ request = " " * request_size
35
+ srecv = s.recv
36
+ ssend = s.send
37
+
38
+ replies = bytes = 0
39
+ for i in xrange(msg_count * msg_mult) :
40
+ ssend(request)
41
+ byte_count = 0
42
+ while byte_count < reply_size :
43
+ reply = srecv(reply_size)
44
+ byte_count += len(reply)
45
+ bytes += byte_count
46
+ replies += 1
47
+
48
+ s.close()
49
+ print "replies: %d\tbytes: %d" % (replies, bytes)
50
+ stdout.flush()
51
+
52
+
53
+ M = 1
54
+ reply_size = 409600
55
+ request_size = 64
56
+
57
+ N = int(argv[1])
58
+
59
+ child_pid = fork()
60
+
61
+ if child_pid == 0 :
62
+ client(N, M, reply_size, request_size)
63
+ _exit(0)
64
+
65
+ else :
66
+ server(N, M, reply_size, request_size)
67
+ wait()
@@ -0,0 +1,47 @@
1
+ """
2
+ The Computer Language Benchmarks Game
3
+ http://shootout.alioth.debian.org/
4
+ Contributed by Antti Kervinen
5
+ """
6
+
7
+ THREADS = 503
8
+
9
+ # Uses pthread library on Linux
10
+ import thread
11
+ import sys
12
+
13
+ # Set minimum stack size for threads, otherwise the program may fail
14
+ # to create such a many threads
15
+ thread.stack_size(32*1024)
16
+
17
+ def threadfun(my_number, my_lock, next_lock):
18
+ global N, main_thread_lock
19
+ while 1:
20
+ my_lock.acquire()
21
+ if N == 0:
22
+ print my_number
23
+ main_thread_lock.release()
24
+ else:
25
+ N -= 1
26
+ next_lock.release()
27
+
28
+ # main
29
+ N = int(sys.argv[1])
30
+ main_thread_lock = thread.allocate_lock()
31
+ main_thread_lock.acquire()
32
+
33
+ first_lock = thread.allocate_lock()
34
+ next_lock = first_lock
35
+
36
+ for number in xrange(THREADS):
37
+ this_lock = next_lock
38
+ this_lock.acquire()
39
+ if number == THREADS - 1:
40
+ next_lock = first_lock
41
+ else:
42
+ next_lock = thread.allocate_lock()
43
+ thread.start_new_thread(threadfun,
44
+ (number + 1, this_lock, next_lock))
45
+
46
+ first_lock.release()
47
+ main_thread_lock.acquire()