chrislo-sourceclassifier 0.2.0 → 0.2.1

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 (316) hide show
  1. data/Manifest +0 -312
  2. data/Rakefile +2 -2
  3. data/sourceclassifier.gemspec +6 -6
  4. metadata +4 -316
  5. data/sources/gcc/ackermann.gcc-2.gcc +0 -93
  6. data/sources/gcc/ackermann.gcc-3.gcc +0 -20
  7. data/sources/gcc/ary.gcc +0 -40
  8. data/sources/gcc/binarytrees.gcc +0 -136
  9. data/sources/gcc/binarytrees.gcc-2.gcc +0 -140
  10. data/sources/gcc/binarytrees.gcc-3.gcc +0 -134
  11. data/sources/gcc/chameneos.gcc +0 -117
  12. data/sources/gcc/chameneos.gcc-2.gcc +0 -134
  13. data/sources/gcc/chameneos.gcc-3.gcc +0 -120
  14. data/sources/gcc/chameneosredux.gcc +0 -306
  15. data/sources/gcc/echo.gcc +0 -144
  16. data/sources/gcc/except.gcc +0 -52
  17. data/sources/gcc/fannkuch.gcc +0 -105
  18. data/sources/gcc/fannkuch.gcc-2.gcc +0 -94
  19. data/sources/gcc/fasta.gcc +0 -158
  20. data/sources/gcc/fasta.gcc-2.gcc +0 -132
  21. data/sources/gcc/fasta.gcc-3.gcc +0 -145
  22. data/sources/gcc/fasta.gcc-4.gcc +0 -141
  23. data/sources/gcc/fibo.gcc +0 -20
  24. data/sources/gcc/harmonic.gcc +0 -22
  25. data/sources/gcc/hash.gcc +0 -31
  26. data/sources/gcc/hash2.gcc +0 -38
  27. data/sources/gcc/heapsort.gcc +0 -72
  28. data/sources/gcc/hello.gcc-2.gcc +0 -12
  29. data/sources/gcc/hello.gcc-3.gcc +0 -20
  30. data/sources/gcc/knucleotide.gcc +0 -173
  31. data/sources/gcc/knucleotide.gcc-2.gcc +0 -168
  32. data/sources/gcc/lists.gcc +0 -226
  33. data/sources/gcc/magicsquares.gcc +0 -378
  34. data/sources/gcc/mandelbrot.gcc +0 -84
  35. data/sources/gcc/mandelbrot.gcc-2.gcc +0 -63
  36. data/sources/gcc/mandelbrot.gcc-3.gcc +0 -91
  37. data/sources/gcc/mandelbrot.gcc-4.gcc +0 -78
  38. data/sources/gcc/matrix.gcc +0 -66
  39. data/sources/gcc/message.gcc-2.gcc +0 -72
  40. data/sources/gcc/message.gcc-3.gcc +0 -64
  41. data/sources/gcc/methcall.gcc +0 -89
  42. data/sources/gcc/moments.gcc +0 -120
  43. data/sources/gcc/nbody.gcc +0 -142
  44. data/sources/gcc/nbody.gcc-2.gcc +0 -143
  45. data/sources/gcc/nbody.gcc-3.gcc +0 -142
  46. data/sources/gcc/nestedloop.gcc +0 -25
  47. data/sources/gcc/nsieve.gcc +0 -35
  48. data/sources/gcc/nsievebits.gcc-2.gcc +0 -37
  49. data/sources/gcc/nsievebits.gcc-3.gcc +0 -53
  50. data/sources/gcc/objinst.gcc +0 -95
  51. data/sources/gcc/partialsums.gcc +0 -86
  52. data/sources/gcc/partialsums.gcc-3.gcc +0 -81
  53. data/sources/gcc/partialsums.gcc-4.gcc +0 -68
  54. data/sources/gcc/pidigits.gcc +0 -105
  55. data/sources/gcc/primes.gcc +0 -75
  56. data/sources/gcc/prodcons.gcc +0 -86
  57. data/sources/gcc/random.gcc +0 -29
  58. data/sources/gcc/raytracer.gcc +0 -125
  59. data/sources/gcc/raytracer.gcc-2.gcc +0 -181
  60. data/sources/gcc/recursive.gcc +0 -68
  61. data/sources/gcc/recursive.gcc-2.gcc +0 -55
  62. data/sources/gcc/regexdna.gcc-2.gcc +0 -126
  63. data/sources/gcc/regexmatch.gcc +0 -136
  64. data/sources/gcc/revcomp.gcc +0 -85
  65. data/sources/gcc/revcomp.gcc-2.gcc +0 -88
  66. data/sources/gcc/revcomp.gcc-4.gcc +0 -71
  67. data/sources/gcc/reversefile.gcc +0 -103
  68. data/sources/gcc/reversefile.gcc-2.gcc +0 -56
  69. data/sources/gcc/sieve.gcc +0 -34
  70. data/sources/gcc/spectralnorm.gcc +0 -54
  71. data/sources/gcc/spellcheck.gcc +0 -72
  72. data/sources/gcc/spellcheck.gcc-2.gcc +0 -61
  73. data/sources/gcc/strcat.gcc +0 -38
  74. data/sources/gcc/sumcol.gcc-2.gcc +0 -98
  75. data/sources/gcc/sumcol.gcc-3.gcc +0 -22
  76. data/sources/gcc/sumcol.gcc-4.gcc +0 -18
  77. data/sources/gcc/sumcol.gcc-5.gcc +0 -32
  78. data/sources/gcc/takfp.gcc +0 -23
  79. data/sources/gcc/tcp-stream.gcc +0 -122
  80. data/sources/gcc/tcpecho.gcc +0 -122
  81. data/sources/gcc/tcpecho.gcc-2.gcc +0 -136
  82. data/sources/gcc/tcprequest.gcc +0 -122
  83. data/sources/gcc/threadring.gcc +0 -73
  84. data/sources/gcc/wc.gcc +0 -52
  85. data/sources/gcc/wc.gcc-2.gcc +0 -40
  86. data/sources/gcc/wc.gcc-3.gcc +0 -46
  87. data/sources/gcc/wordfreq.gcc-2.gcc +0 -85
  88. data/sources/perl/ackermann.perl +0 -28
  89. data/sources/perl/ackermann.perl-2.perl +0 -25
  90. data/sources/perl/ackermann.perl-3.perl +0 -20
  91. data/sources/perl/ackermann.perl-4.perl +0 -18
  92. data/sources/perl/ary.perl +0 -25
  93. data/sources/perl/ary.perl-2.perl +0 -23
  94. data/sources/perl/binarytrees.perl +0 -66
  95. data/sources/perl/binarytrees.perl-2.perl +0 -71
  96. data/sources/perl/chameneos.perl +0 -67
  97. data/sources/perl/echo.perl +0 -81
  98. data/sources/perl/except.perl +0 -73
  99. data/sources/perl/fannkuch.perl +0 -44
  100. data/sources/perl/fannkuch.perl-2.perl +0 -38
  101. data/sources/perl/fasta.perl +0 -112
  102. data/sources/perl/fasta.perl-2.perl +0 -135
  103. data/sources/perl/fasta.perl-4.perl +0 -122
  104. data/sources/perl/fibo.perl +0 -15
  105. data/sources/perl/fibo.perl-2.perl +0 -0
  106. data/sources/perl/fibo.perl-3.perl +0 -0
  107. data/sources/perl/harmonic.perl +0 -7
  108. data/sources/perl/hash.perl +0 -23
  109. data/sources/perl/hash.perl-2.perl +0 -17
  110. data/sources/perl/hash.perl-3.perl +0 -24
  111. data/sources/perl/hash2.perl +0 -16
  112. data/sources/perl/heapsort.perl +0 -65
  113. data/sources/perl/heapsort.perl-2.perl +0 -0
  114. data/sources/perl/hello.perl +0 -5
  115. data/sources/perl/knucleotide.perl-2.perl +0 -30
  116. data/sources/perl/lists.perl +0 -48
  117. data/sources/perl/mandelbrot.perl-2.perl +0 -32
  118. data/sources/perl/matrix.perl +0 -59
  119. data/sources/perl/matrix.perl-2.perl +0 -0
  120. data/sources/perl/matrix.perl-3.perl +0 -0
  121. data/sources/perl/message.perl +0 -27
  122. data/sources/perl/methcall.perl +0 -66
  123. data/sources/perl/moments.perl +0 -44
  124. data/sources/perl/nbody.perl +0 -108
  125. data/sources/perl/nestedloop.perl +0 -28
  126. data/sources/perl/nsieve.perl-2.perl +0 -41
  127. data/sources/perl/nsieve.perl-4.perl +0 -43
  128. data/sources/perl/nsievebits.perl +0 -37
  129. data/sources/perl/objinst.perl +0 -73
  130. data/sources/perl/partialsums.perl-3.perl +0 -31
  131. data/sources/perl/pidigits.perl +0 -52
  132. data/sources/perl/pidigits.perl-2.perl +0 -47
  133. data/sources/perl/process.perl +0 -50
  134. data/sources/perl/prodcons.perl +0 -47
  135. data/sources/perl/random.perl-4.perl +0 -17
  136. data/sources/perl/recursive.perl-2.perl +0 -57
  137. data/sources/perl/regexdna.perl +0 -48
  138. data/sources/perl/regexdna.perl-2.perl +0 -43
  139. data/sources/perl/regexdna.perl-3.perl +0 -50
  140. data/sources/perl/regexdna.perl-4.perl +0 -49
  141. data/sources/perl/regexdna.perl-5.perl +0 -42
  142. data/sources/perl/regexdna.perl-6.perl +0 -43
  143. data/sources/perl/regexmatch.perl +0 -35
  144. data/sources/perl/revcomp.perl-2.perl +0 -34
  145. data/sources/perl/reversefile.perl +0 -8
  146. data/sources/perl/reversefile.perl-2.perl +0 -0
  147. data/sources/perl/reversefile.perl-3.perl +0 -0
  148. data/sources/perl/sieve.perl +0 -23
  149. data/sources/perl/spectralnorm.perl-2.perl +0 -54
  150. data/sources/perl/spellcheck.perl +0 -24
  151. data/sources/perl/strcat.perl +0 -13
  152. data/sources/perl/strcat.perl-2.perl +0 -0
  153. data/sources/perl/sumcol.perl +0 -8
  154. data/sources/perl/takfp.perl +0 -23
  155. data/sources/perl/takfp.perl-3.perl +0 -20
  156. data/sources/perl/tcpecho.perl +0 -61
  157. data/sources/perl/tcprequest.perl +0 -61
  158. data/sources/perl/tcpstream.perl +0 -61
  159. data/sources/perl/threadring.perl +0 -55
  160. data/sources/perl/threadring.perl-2.perl +0 -43
  161. data/sources/perl/wc.perl +0 -20
  162. data/sources/perl/wc.perl-2.perl +0 -14
  163. data/sources/perl/wordfreq.perl +0 -22
  164. data/sources/perl/wordfreq.perl-3.perl +0 -0
  165. data/sources/perl/wordfreq.perl3.perl +0 -0
  166. data/sources/python/ackermann.python +0 -21
  167. data/sources/python/ary.python +0 -19
  168. data/sources/python/binarytrees.python +0 -39
  169. data/sources/python/binarytrees.python-3.python +0 -44
  170. data/sources/python/chameneos.python-6.python +0 -73
  171. data/sources/python/chameneosredux.python +0 -126
  172. data/sources/python/chameneosredux.python-2.python +0 -122
  173. data/sources/python/dispatch.python +0 -176
  174. data/sources/python/dispatch.python-2.python +0 -136
  175. data/sources/python/echo.python +0 -64
  176. data/sources/python/except.python +0 -62
  177. data/sources/python/fannkuch.python +0 -50
  178. data/sources/python/fannkuch.python-2.python +0 -54
  179. data/sources/python/fasta.python-2.python +0 -79
  180. data/sources/python/fibo.python +0 -17
  181. data/sources/python/fibo.python-2.python +0 -0
  182. data/sources/python/fibo.python-3.python +0 -0
  183. data/sources/python/harmonic.python-2.python +0 -9
  184. data/sources/python/hash.python +0 -21
  185. data/sources/python/hash.python-2.python +0 -0
  186. data/sources/python/hash2.python +0 -30
  187. data/sources/python/heapsort.python-3.python +0 -66
  188. data/sources/python/hello.python +0 -5
  189. data/sources/python/implicitode.python +0 -231
  190. data/sources/python/knucleotide.python +0 -55
  191. data/sources/python/lists.python +0 -44
  192. data/sources/python/magicsquares.python +0 -145
  193. data/sources/python/mandelbrot.python +0 -44
  194. data/sources/python/mandelbrot.python-2.python +0 -35
  195. data/sources/python/mandelbrot.python-3.python +0 -46
  196. data/sources/python/matrix.python +0 -34
  197. data/sources/python/matrix.python-2.python +0 -23
  198. data/sources/python/message.python +0 -24
  199. data/sources/python/message.python-2.python +0 -20
  200. data/sources/python/message.python-3.python +0 -19
  201. data/sources/python/meteor.python +0 -210
  202. data/sources/python/meteor.python-2.python +0 -192
  203. data/sources/python/methcall.python +0 -51
  204. data/sources/python/moments.python +0 -65
  205. data/sources/python/nbody.python +0 -123
  206. data/sources/python/nbody.python-2.python +0 -120
  207. data/sources/python/nestedloop.python +0 -24
  208. data/sources/python/nsieve.python +0 -27
  209. data/sources/python/nsieve.python-2.python +0 -23
  210. data/sources/python/nsieve.python-4.python +0 -25
  211. data/sources/python/nsievebits.python +0 -27
  212. data/sources/python/nsievebits.python-2.python +0 -43
  213. data/sources/python/objinst.python +0 -53
  214. data/sources/python/partialsums.python +0 -37
  215. data/sources/python/partialsums.python-2.python +0 -35
  216. data/sources/python/partialsums.python-3.python +0 -48
  217. data/sources/python/pidigits.python +0 -38
  218. data/sources/python/pidigits.python-3.python +0 -63
  219. data/sources/python/pidigits.python-4.python +0 -24
  220. data/sources/python/process.python +0 -51
  221. data/sources/python/process.python-2.python +0 -133
  222. data/sources/python/prodcons.python +0 -51
  223. data/sources/python/prodcons.python-2.python +0 -0
  224. data/sources/python/random.python +0 -27
  225. data/sources/python/raytracer.python +0 -203
  226. data/sources/python/recursive.python +0 -35
  227. data/sources/python/regexdna.python +0 -39
  228. data/sources/python/regexdna.python-2.python +0 -34
  229. data/sources/python/regexmatch.python +0 -36
  230. data/sources/python/revcomp.python-3.python +0 -31
  231. data/sources/python/reversefile.python +0 -13
  232. data/sources/python/reversefile.python-2.python +0 -0
  233. data/sources/python/reversefile.python-3.python +0 -0
  234. data/sources/python/sieve.python +0 -50
  235. data/sources/python/spectralnorm.python-2.python +0 -36
  236. data/sources/python/spellcheck.python +0 -17
  237. data/sources/python/strcat.python +0 -35
  238. data/sources/python/strcat.python-2.python +0 -0
  239. data/sources/python/sumcol.python-2.python +0 -0
  240. data/sources/python/sumcol.python-3.python +0 -0
  241. data/sources/python/takfp.python +0 -19
  242. data/sources/python/tcpecho.python +0 -67
  243. data/sources/python/tcprequest.python +0 -67
  244. data/sources/python/tcpstream.python +0 -67
  245. data/sources/python/threadring.python +0 -47
  246. data/sources/python/threadring.python-2.python +0 -40
  247. data/sources/python/threadring.python-3.python +0 -34
  248. data/sources/python/wc.python-2.python +0 -19
  249. data/sources/python/wordfreq.python +0 -43
  250. data/sources/python/wordfreq.python-2.python +0 -0
  251. data/sources/python/wordfreq.python-3.python +0 -28
  252. data/sources/python/wordfreq.python-4.python +0 -38
  253. data/sources/python/wordfreq.python-5.python +0 -39
  254. data/sources/ruby/ackermann.ruby +0 -17
  255. data/sources/ruby/ackermann.ruby-5.ruby +0 -153
  256. data/sources/ruby/ary.ruby +0 -22
  257. data/sources/ruby/binarytrees.ruby-2.ruby +0 -55
  258. data/sources/ruby/chameneos.ruby-2.ruby +0 -71
  259. data/sources/ruby/dispatch.ruby +0 -114
  260. data/sources/ruby/echo.ruby +0 -41
  261. data/sources/ruby/except.ruby +0 -61
  262. data/sources/ruby/except.ruby-2.ruby +0 -61
  263. data/sources/ruby/fannkuch.ruby +0 -42
  264. data/sources/ruby/fasta.ruby +0 -81
  265. data/sources/ruby/fibo.ruby +0 -15
  266. data/sources/ruby/harmonic.ruby-2.ruby +0 -15
  267. data/sources/ruby/hash.ruby +0 -19
  268. data/sources/ruby/hash2.ruby +0 -23
  269. data/sources/ruby/heapsort.ruby +0 -55
  270. data/sources/ruby/hello.ruby +0 -6
  271. data/sources/ruby/knucleotide.ruby-2.ruby +0 -44
  272. data/sources/ruby/lists.ruby +0 -46
  273. data/sources/ruby/mandelbrot.ruby-3.ruby +0 -63
  274. data/sources/ruby/matrix.ruby +0 -40
  275. data/sources/ruby/matrix.ruby-2.ruby +0 -30
  276. data/sources/ruby/message.ruby +0 -29
  277. data/sources/ruby/message.ruby-2.ruby +0 -24
  278. data/sources/ruby/meteor.ruby +0 -386
  279. data/sources/ruby/meteor.ruby-2.ruby +0 -561
  280. data/sources/ruby/methcall.ruby +0 -58
  281. data/sources/ruby/methcall.ruby-2.ruby +0 -54
  282. data/sources/ruby/moments.ruby +0 -64
  283. data/sources/ruby/nbody.ruby-2.ruby +0 -145
  284. data/sources/ruby/nestedloop.ruby +0 -22
  285. data/sources/ruby/nsieve.ruby +0 -36
  286. data/sources/ruby/nsieve.ruby-2.ruby +0 -25
  287. data/sources/ruby/nsievebits.ruby-2.ruby +0 -42
  288. data/sources/ruby/objinst.ruby +0 -58
  289. data/sources/ruby/partialsums.ruby +0 -39
  290. data/sources/ruby/pidigits.ruby +0 -92
  291. data/sources/ruby/pidigits.ruby-2.ruby +0 -109
  292. data/sources/ruby/prodcons.ruby +0 -41
  293. data/sources/ruby/random.ruby +0 -17
  294. data/sources/ruby/recursive.ruby-2.ruby +0 -53
  295. data/sources/ruby/regexdna.ruby +0 -32
  296. data/sources/ruby/regexdna.ruby-2.ruby +0 -38
  297. data/sources/ruby/regexmatch.ruby +0 -33
  298. data/sources/ruby/revcomp.ruby +0 -28
  299. data/sources/ruby/reversefile.ruby +0 -7
  300. data/sources/ruby/sieve.ruby +0 -30
  301. data/sources/ruby/spectralnorm.ruby +0 -48
  302. data/sources/ruby/spellcheck.ruby +0 -18
  303. data/sources/ruby/spellcheck.ruby-2.ruby +0 -0
  304. data/sources/ruby/strcat.ruby +0 -12
  305. data/sources/ruby/strcat.ruby-2.ruby +0 -12
  306. data/sources/ruby/sumcol.ruby +0 -12
  307. data/sources/ruby/sumcol.ruby-2.ruby +0 -5
  308. data/sources/ruby/takfp.ruby +0 -15
  309. data/sources/ruby/tcpecho.ruby +0 -45
  310. data/sources/ruby/tcprequest.ruby +0 -45
  311. data/sources/ruby/tcpstream.ruby +0 -45
  312. data/sources/ruby/threadring.ruby +0 -61
  313. data/sources/ruby/threadring.ruby-2.ruby +0 -33
  314. data/sources/ruby/wc.ruby +0 -15
  315. data/sources/ruby/wordfreq.ruby +0 -17
  316. data/sources/ruby/wordfreq.ruby2.ruby +0 -0
@@ -1,122 +0,0 @@
1
- # The Computer Language Benchmarks Game
2
- # http://shootout.alioth.debian.org/
3
- # contributed by Daniel Nanz 2008-04-10
4
-
5
- import sys
6
- import thread
7
- import time
8
-
9
- # colors and matching
10
- creature_colors = ['blue', 'red', 'yellow']
11
-
12
- def complement(c1, c2):
13
-
14
- if c1 == c2: return c1
15
- if c1 == 'blue':
16
- if c2 == 'red': return 'yellow'
17
- return 'red'
18
- if c1 == 'red':
19
- if c2 == 'blue': return 'yellow'
20
- return 'blue'
21
- if c2 == 'blue': return 'red'
22
- return 'blue'
23
-
24
-
25
- compl_dict = dict(((c1, c2), complement(c1, c2))
26
- for c1 in creature_colors
27
- for c2 in creature_colors)
28
-
29
-
30
- def check_complement(colors=creature_colors, compl=compl_dict):
31
-
32
- for c1 in colors:
33
- for c2 in colors:
34
- print '%s + %s -> %s' % (c1, c2, compl[(c1, c2)])
35
- print ''
36
-
37
-
38
- # reporting
39
- def spellout(n):
40
-
41
- numbers = ['zero', 'one', 'two', 'three', 'four',
42
- 'five', 'six', 'seven', 'eight', 'nine']
43
- return ' ' + ' '.join(numbers[int(c)] for c in str(n))
44
-
45
-
46
- def report(input_zoo, met, self_met):
47
-
48
- print ' ' + ' '.join(input_zoo)
49
- for m, sm in zip(met, self_met):
50
- print str(m) + spellout(sm)
51
- print spellout(sum(met)) + '\n'
52
-
53
-
54
- # the zoo
55
- def creature(my_id, venue, my_lock_acquire, in_lock_acquire, out_lock_release):
56
-
57
- while True:
58
- my_lock_acquire() # only proceed if not already at meeting place
59
- in_lock_acquire() # only proceed when holding in_lock
60
- venue[0] = my_id # register at meeting place
61
- out_lock_release() # signal "registration ok"
62
-
63
-
64
- def let_them_meet(meetings_left, input_zoo,
65
- compl=compl_dict, allocate=thread.allocate_lock):
66
- # prepare
67
- c_no = len(input_zoo)
68
- venue = [-1]
69
- met = [0] * c_no
70
- self_met = [0] * c_no
71
- colors = input_zoo[:]
72
-
73
- in_lock = allocate()
74
- in_lock_acquire = in_lock.acquire # function aliases
75
- in_lock_release = in_lock.release # (minor performance gain)
76
- in_lock_acquire()
77
- out_lock = allocate()
78
- out_lock_release = out_lock.release
79
- out_lock_acquire = out_lock.acquire
80
- out_lock_acquire()
81
- locks = [allocate() for c in input_zoo]
82
-
83
- # let creatures wild
84
- for ci in xrange(c_no):
85
- args = (ci, venue, locks[ci].acquire, in_lock_acquire, out_lock_release)
86
- new = thread.start_new_thread(creature, args)
87
- time.sleep(0.05) # to reduce work-load imbalance
88
-
89
- in_lock_release() # signal "meeting_place open for registration"
90
- out_lock_acquire() # only proceed with a "registration ok" signal
91
- id1 = venue[0]
92
- while meetings_left > 0:
93
- in_lock_release()
94
- out_lock_acquire()
95
- id2 = venue[0]
96
- if id1 != id2:
97
- new_color = compl[(colors[id1], colors[id2])]
98
- colors[id1] = new_color
99
- colors[id2] = new_color
100
- met[id1] += 1
101
- met[id2] += 1
102
- else:
103
- self_met[id1] += 1
104
- met[id1] += 1
105
- meetings_left -= 1
106
- if meetings_left > 0:
107
- locks[id1].release() # signal "you were kicked from meeting place"
108
- id1 = id2
109
- else:
110
- report(input_zoo, met, self_met)
111
-
112
-
113
- def chameneosiate(n):
114
-
115
- check_complement()
116
- let_them_meet(n, ['blue', 'red', 'yellow'])
117
- let_them_meet(n, ['blue', 'red', 'yellow', 'red', 'yellow',
118
- 'blue', 'red', 'yellow', 'red', 'blue'])
119
- #print ''
120
-
121
-
122
- chameneosiate(int(sys.argv[1]))
@@ -1,176 +0,0 @@
1
- #!/usr/bin/python -OO
2
- # The Computer Language Shootout Benchmarks
3
- # http://shootout.alioth.debian.org/
4
- #
5
- # contributed by Kevin Carson
6
- import sys
7
-
8
-
9
- class IBottleState :
10
- Empty = None
11
- Full = None
12
- Sealed = None
13
-
14
-
15
- class BottleState(IBottleState) :
16
- def __init__(self) :
17
- self.Empty = BottleState.EmptyState()
18
- self.Full = BottleState.FullState()
19
- self.Sealed = BottleState.SealedState()
20
-
21
- def initialState(self) :
22
- return self.Empty
23
-
24
- class EmptyState :
25
- def next(self) :
26
- return IBottleState.Full
27
-
28
- def tag(self) :
29
- return 1
30
-
31
- class FullState :
32
- def next(self) :
33
- return IBottleState.Sealed
34
-
35
- def tag(self) :
36
- return 2
37
-
38
- class SealedState :
39
- def next(self) :
40
- return IBottleState.Empty
41
-
42
- def tag(self) :
43
- return 3
44
-
45
-
46
- class PressurizedBottleState(BottleState) :
47
- def __init__(self, tag) :
48
- BottleState.__init__(self)
49
- self.UnpressurizedEmpty = UnpressurizedEmptyState()
50
- self.UnpressurizedFull = UnpressurizedFullState()
51
- self.PressurizedSealed = PressurizedSealedState()
52
-
53
- def initialState(self) :
54
- return self.UnpressurizedEmpty
55
-
56
- class UnpressurizedEmptyState :
57
- def next(self) :
58
- return self.UnpressurizedFull
59
-
60
- def tag(self) :
61
- return 4
62
-
63
- class UnpressurizedFullState :
64
- def next(self) :
65
- return self.PressurizedUnsealed
66
-
67
- def tag(self) :
68
- return 5
69
-
70
- class PressurizedUnsealedState :
71
- def next(self) :
72
- return self.Sealed
73
-
74
- def tag(self) :
75
- return 6
76
-
77
- class PressurizedSealedState :
78
- def next(self) :
79
- return self.UnpressurizedEmpty
80
-
81
- def tag(self) :
82
- return 7
83
-
84
-
85
- class Bottle :
86
- def __init__(self, Id) :
87
- self.Id = Id
88
- self.state = BottleState()
89
- self.state = self.state.initialState()
90
-
91
- def state(self, state) :
92
- self.state = state
93
-
94
- def cycle(self) :
95
- self.fill(), self.seal(), self.empty()
96
-
97
- def initialState(self) :
98
- return self.initialState()
99
-
100
- def empty(self) :
101
- self.state.next()
102
-
103
- def fill(self) :
104
- self.state.next()
105
-
106
- def seal(self) :
107
- self.state.next()
108
-
109
- def check(self, c) :
110
- return self.state.tag() + self.Id + c
111
-
112
-
113
- class PressurizedBottle(PressurizedBottleState, Bottle) :
114
- def __init__(self, Id) :
115
- Bottle.__init__(self, Id)
116
-
117
- def initialState(self) :
118
- return PressurizedBottleState.initialState()
119
-
120
- def pressurize(self) :
121
- self.state.next()
122
-
123
- def cycle(self) :
124
- self.fill(), self.pressurize(), self.seal(), self.empty()
125
-
126
-
127
- def bottleCheck(a1, a2, a3, a4, a5, i) :
128
- a1.cycle()
129
- a2.cycle()
130
- a3.cycle()
131
- a4.cycle()
132
- a5.cycle()
133
-
134
- r = i % 2
135
-
136
- return a1.check(r) + a2.check(r) + a3.check(r) + a4.check(r) + a5.check(r)
137
-
138
-
139
- def main() :
140
- n = int(sys.argv[1])
141
-
142
- b1 = Bottle(1)
143
- b2 = Bottle(2)
144
- b3 = Bottle(3)
145
- b4 = Bottle(4)
146
- b5 = Bottle(5)
147
- b6 = Bottle(6)
148
- b7 = Bottle(7)
149
- b8 = Bottle(8)
150
- b9 = Bottle(9)
151
- b0 = Bottle(0)
152
-
153
- p1 = PressurizedBottle(1)
154
- p2 = PressurizedBottle(2)
155
- p3 = PressurizedBottle(3)
156
- p4 = PressurizedBottle(4)
157
- p5 = PressurizedBottle(5)
158
- p6 = PressurizedBottle(6)
159
- p7 = PressurizedBottle(7)
160
- p8 = PressurizedBottle(8)
161
- p9 = PressurizedBottle(9)
162
- p0 = PressurizedBottle(0)
163
-
164
- check = 0
165
-
166
- for i in xrange(1, n + 1) :
167
- check += bottleCheck(b1, b2, b3, b4, b5, i);
168
- check += bottleCheck(b6, b7, b8, b9, b0, i);
169
-
170
- check += bottleCheck(p1, p2, p3, p4, p5, i);
171
- check -= bottleCheck(p6, p7, p8, p9, p0, i);
172
-
173
- print check
174
-
175
-
176
- main()
@@ -1,136 +0,0 @@
1
- #!/usr/bin/python -OO
2
- # The Computer Language Shootout Benchmarks
3
- # http://shootout.alioth.debian.org/
4
- #
5
- # contributed by Antoine Pitrou
6
-
7
- import sys
8
-
9
- class BottleState(object):
10
- pass
11
-
12
- class EmptyState(BottleState):
13
- tag = 1
14
-
15
- def do_next(self, target):
16
- target.state = Full
17
-
18
- class FullState(BottleState):
19
- tag = 2
20
-
21
- def do_next(self, target):
22
- target.state = Sealed
23
-
24
- class SealedState(BottleState):
25
- tag = 3
26
-
27
- def do_next(self, target):
28
- target.state = Empty
29
-
30
- Empty = EmptyState()
31
- Full = FullState()
32
- Sealed = SealedState()
33
- BottleState.initial_state = Empty
34
-
35
- class PressurizedBottleState(BottleState):
36
- pass
37
-
38
- class UnpressurizedEmptyState(PressurizedBottleState):
39
- tag = 4
40
-
41
- def do_next(self, target):
42
- target.state = UnpressurizedFull
43
-
44
- class UnpressurizedFullState(PressurizedBottleState):
45
- tag = 5
46
-
47
- def do_next(self, target):
48
- target.state = PressurizedUnsealed
49
-
50
- class PressurizedUnsealedState(PressurizedBottleState):
51
- tag = 6
52
-
53
- def do_next(self, target):
54
- target.state = Sealed
55
-
56
- class PressurizedSealedState(PressurizedBottleState):
57
- tag = 7
58
-
59
- def do_next(self, target):
60
- target.state = UnpressurizedEmpty
61
-
62
- UnpressurizedEmpty = UnpressurizedEmptyState()
63
- UnpressurizedFull = UnpressurizedFullState()
64
- PressurizedUnsealed = PressurizedUnsealedState()
65
- PressurizedSealed = PressurizedSealedState()
66
- PressurizedBottleState.initial_state = UnpressurizedEmpty
67
-
68
-
69
- class Bottle(object):
70
- state_type = BottleState
71
-
72
- def __init__(self, id_):
73
- self.id_ = id_
74
- self.state = self.state_type.initial_state
75
-
76
- def fill(self):
77
- self.state.do_next(self)
78
-
79
- def seal(self):
80
- self.state.do_next(self)
81
-
82
- def empty(self):
83
- self.state.do_next(self)
84
-
85
- def cycle(self):
86
- self.fill()
87
- self.seal()
88
- self.empty()
89
-
90
- def check(self, c):
91
- return c + self.id_ + self.state.tag
92
-
93
-
94
- class PressurizedBottle(Bottle):
95
- state_type = PressurizedBottleState
96
-
97
- def __init__(self, *args, **kargs):
98
- Bottle.__init__(self, *args, **kargs)
99
-
100
- def pressurize(self):
101
- self.state.do_next(self)
102
-
103
- def cycle(self):
104
- self.fill()
105
- self.pressurize()
106
- self.seal()
107
- self.empty()
108
-
109
-
110
- def bottle_check(a1, a2, a3, a4, a5, i):
111
- a1.cycle()
112
- a2.cycle()
113
- a3.cycle()
114
- a4.cycle()
115
- a5.cycle()
116
- c = i % 2
117
- return a1.check(c) + a2.check(c) + a3.check(c) + a4.check(c) + a5.check(c)
118
-
119
- def main():
120
- n = int(sys.argv[1])
121
- b0, b1, b2, b3, b4, b5, b6, b7, b8, b9 = [
122
- Bottle(i) for i in range(10)]
123
- p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 = [
124
- PressurizedBottle(i) for i in range(10)]
125
-
126
- check = 0
127
- for i in xrange(1, n+1):
128
- check += bottle_check(b1, b2, b3, b4, b5, i)
129
- check += bottle_check(b6, b7, b8, b9, b0, i)
130
- check += bottle_check(p1, p2, p3, p4, p5, i)
131
- check -= bottle_check(p6, p7, p8, p9, p0, i)
132
-
133
- print "%d" % check
134
-
135
- main()
136
-
@@ -1,64 +0,0 @@
1
- #!/usr/bin/python
2
- # $Id: echo.python,v 1.1.1.1 2004-05-19 18:09:37 bfulgham Exp $
3
- # http://www.bagley.org/~doug/shootout/
4
- # with help from Brad Knotwell
5
-
6
- import sys, os
7
- from socket import *
8
-
9
- DATA = "Hello there sailor\n"
10
- bufferSize = len(DATA)
11
-
12
- def server_sock():
13
- sock = socket(AF_INET, SOCK_STREAM)
14
- sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
15
- sock.bind(('127.0.0.1', 0));
16
- sock.listen(2)
17
- return(sock)
18
-
19
- def get_port(sock):
20
- host, port = sock.getsockname()
21
- return(port)
22
-
23
- def client_sock(port):
24
- sock = socket(AF_INET, SOCK_STREAM)
25
- sock.connect(('127.0.0.1', port))
26
- return(sock)
27
-
28
- def echo_client(n, port):
29
- sock = client_sock(port)
30
- sender,receiver = sock.send,sock.recv
31
- for i in range(0,n):
32
- sender(DATA)
33
- ans = receiver(bufferSize)
34
- while ans[-1] != "\n":
35
- ans += receiver(bufferSize - len(ans))
36
- if ans <> DATA:
37
- raise("client: \"%s\" ne \"%s\"" % (DATA, ans))
38
- sock.close()
39
-
40
- def echo_server(n):
41
- ssock = server_sock()
42
- if os.fork() > 0:
43
- # parent is server
44
- csock, addr = ssock.accept()
45
- n = 0
46
- sender,receiver = csock.send,csock.recv
47
- while 1:
48
- dat = receiver(bufferSize)
49
- if not dat: break
50
- sender(dat)
51
- n += len(dat)
52
- print "server processed %d bytes" % n
53
- os.wait()
54
- else:
55
- # child is client
56
- echo_client(n, get_port(ssock))
57
-
58
- def main():
59
- n = int(sys.argv[1])
60
- if n < 1:
61
- n = 1
62
- echo_server(n)
63
-
64
- main()