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,55 +0,0 @@
1
- # The Computer Language Shootout Benchmarks
2
- # http://shootout.alioth.debian.org
3
- #
4
- # contributed by Jesse Millikan
5
-
6
- def item_check(tree)
7
- if tree[0] == nil
8
- tree[1]
9
- else
10
- tree[1] + item_check(tree[0]) - item_check(tree[2])
11
- end
12
- end
13
-
14
- def bottom_up_tree(item, depth)
15
- if depth > 0
16
- item_item = 2 * item
17
- depth -= 1
18
- [bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
19
- else
20
- [nil, item, nil]
21
- end
22
- end
23
-
24
- max_depth = ARGV[0].to_i
25
- min_depth = 4
26
-
27
- max_depth = min_depth + 2 if min_depth + 2 > max_depth
28
-
29
- stretch_depth = max_depth + 1
30
- stretch_tree = bottom_up_tree(0, stretch_depth)
31
-
32
- puts "stretch tree of depth #{stretch_depth}\t check: #{item_check(stretch_tree)}"
33
- stretch_tree = nil
34
-
35
- long_lived_tree = bottom_up_tree(0, max_depth)
36
-
37
- min_depth.step(max_depth + 1, 2) do |depth|
38
- iterations = 2**(max_depth - depth + min_depth)
39
-
40
- check = 0
41
-
42
- for i in 1..iterations
43
- temp_tree = bottom_up_tree(i, depth)
44
- check += item_check(temp_tree)
45
-
46
- temp_tree = bottom_up_tree(-i, depth)
47
- check += item_check(temp_tree)
48
- end
49
-
50
- puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
51
- end
52
-
53
- puts "long lived tree of depth #{max_depth}\t check: #{item_check(long_lived_tree)}"
54
-
55
-
@@ -1,71 +0,0 @@
1
- #########################################
2
- # The Computer Language Shootout #
3
- # http://shootout.alioth.debian.org/ #
4
- # #
5
- # Contributed by Jesse Millikan #
6
- # Based on version by Gordon Innes #
7
- #########################################
8
-
9
- require 'thread'
10
-
11
- creature_meetings = Queue.new
12
- meeting_point = Mutex.new
13
- wait_signal = ConditionVariable.new
14
- meetings_left = ARGV[0].to_i
15
- waiting_colour, incoming_colour = nil, nil
16
-
17
- # Each chameneo is represented here by a thread
18
- # and its colour variable, rather than explicitly
19
- # by an object
20
- #
21
- # This is all packed into one place for speed and
22
- # clarity (It's clear to *me* :)
23
- [:blue, :red, :yellow, :blue].each { |colour|
24
- Thread.new {
25
- met = 0
26
- while true
27
- # The form meeting_point.synchronize { } is slow
28
- meeting_point.lock
29
-
30
- if meetings_left <= 0
31
- meeting_point.unlock
32
- # colour = :faded
33
- break
34
- end
35
-
36
- # Both threads emerge with variable other_colour set
37
- if waiting_colour
38
- other_colour = waiting_colour
39
- incoming_colour = colour
40
- wait_signal.signal
41
- meetings_left-=1
42
- waiting_colour = nil
43
- else
44
- waiting_colour = colour
45
- wait_signal.wait(meeting_point)
46
- other_colour = incoming_colour
47
- end
48
- meeting_point.unlock
49
-
50
- met += 1
51
-
52
- # Take the complement colour
53
- colour =
54
- case other_colour
55
- when :blue
56
- colour == :red ? :yellow : :red
57
- when :red
58
- colour == :blue ? :yellow : :blue
59
- when :yellow
60
- colour == :blue ? :red : :blue
61
- end
62
- end
63
-
64
- # Leave the total on the queue for the main thread
65
- creature_meetings.push(met)
66
- }
67
- }
68
-
69
- total = 0
70
- 4.times { total += creature_meetings.pop }
71
- puts total
@@ -1,114 +0,0 @@
1
- #!/usr/bin/ruby
2
- #
3
- # The Great Computer Language Shootout
4
- # http://shootout.alioth.debian.org
5
- #
6
- # contributed by Jesse Millikan
7
-
8
- class BottleState
9
- attr_reader :tag
10
- private_class_method :new
11
-
12
- def initialize(tag)
13
- @tag = tag
14
- end
15
-
16
- def BottleState.initial; @@empty; end
17
-
18
- def BottleState.pressurized_initial; @@unpressurized_empty; end
19
-
20
- # Thanks to dbrock on #ruby-lang on freenode for some tips on this.
21
-
22
- @@empty = new(1)
23
-
24
- def @@empty.next(bottle); bottle.state = @@full; end
25
-
26
- @@full = new(2)
27
-
28
- def @@full.next(bottle); bottle.state = @@sealed; end
29
-
30
- @@sealed = new(3)
31
-
32
- def @@sealed.next(bottle); bottle.state = @@empty; end
33
-
34
- @@unpressurized_empty = new(4)
35
-
36
- def @@unpressurized_empty.next(bottle); bottle.state = @@unpressurized_full; end
37
-
38
- @@unpressurized_full = new(5)
39
-
40
- def @@unpressurized_full.next(bottle); bottle.state = @@pressurized_unsealed; end
41
-
42
- @@pressurized_unsealed = new(6)
43
-
44
- def @@pressurized_unsealed.next(bottle); bottle.state = @@pressurized_sealed; end
45
-
46
- @@pressurized_sealed = new(7)
47
-
48
- def @@pressurized_sealed.next(bottle); bottle.state = @@unpressurized_empty; end
49
- end
50
-
51
- #Someone with judgement on style could pare this down a bit.
52
- class Bottle
53
- attr_writer :state
54
-
55
- def initialize(id)
56
- @id = id
57
- @state = initial
58
- end
59
-
60
- def initial; BottleState.initial; end
61
-
62
- def cycle; fill; seal; empty; end
63
-
64
- def next; @state.next(self); end
65
-
66
- alias_method :empty, :next
67
- alias_method :fill, :next
68
- alias_method :seal, :next
69
-
70
- def check(c); @state.tag + @id + c; end
71
- end
72
-
73
- class PressurizedBottle < Bottle
74
- def initial; BottleState.pressurized_initial; end
75
-
76
- alias_method :pressurize, :next
77
-
78
- def cycle; fill; pressurize; seal; empty; end
79
- end
80
-
81
- def bottle_check(a1, a2, a3, a4, a5, i)
82
- a1.cycle; a2.cycle; a3.cycle; a4.cycle; a5.cycle
83
-
84
- c = i % 2
85
-
86
- a1.check(c) + a2.check(c) + a3.check(c) + a4.check(c) + a5.check(c)
87
- end
88
-
89
- n = 0
90
- n = ARGV[0].to_i unless ARGV.empty?
91
-
92
- b1 = Bottle.new(1); b2 = Bottle.new(2)
93
- b3 = Bottle.new(3); b4 = Bottle.new(4)
94
- b5 = Bottle.new(5); b6 = Bottle.new(6)
95
- b7 = Bottle.new(7); b8 = Bottle.new(8)
96
- b9 = Bottle.new(9); b0 = Bottle.new(0)
97
-
98
- p1 = PressurizedBottle.new(1); p2 = PressurizedBottle.new(2)
99
- p3 = PressurizedBottle.new(3); p4 = PressurizedBottle.new(4)
100
- p5 = PressurizedBottle.new(5); p6 = PressurizedBottle.new(6)
101
- p7 = PressurizedBottle.new(7); p8 = PressurizedBottle.new(8)
102
- p9 = PressurizedBottle.new(9); p0 = PressurizedBottle.new(0)
103
-
104
- check = 0
105
-
106
- for i in 1..n
107
- check += bottle_check(b1, b2, b3, b4, b5, i)
108
- check += bottle_check(b6, b7, b8, b9, b0, i)
109
-
110
- check += bottle_check(p1, p2, p3, p4, p5, i)
111
- check -= bottle_check(p6, p7, p8, p9, p0, i)
112
- end
113
-
114
- puts "#{check}"
@@ -1,41 +0,0 @@
1
- #!/usr/bin/ruby
2
- # -*- mode: ruby -*-
3
- # $Id: echo.ruby,v 1.1.1.1 2004-05-19 18:09:37 bfulgham Exp $
4
- # http://www.bagley.org/~doug/shootout/
5
-
6
- require "socket"
7
-
8
- DATA = "Hello there sailor\n"
9
-
10
- def echo_client(n, port)
11
- sock = TCPsocket.open('127.0.0.1', port)
12
- n.times do
13
- sock.write(DATA)
14
- ans = sock.readline
15
- if ans != DATA then
16
- raise sprintf("client: \"%s\" \"%s\"", DATA, ans)
17
- end
18
- end
19
- sock.close
20
- end
21
-
22
-
23
- def echo_server(n)
24
- ssock = TCPserver.open('127.0.0.1', 0)
25
- port = ssock.addr[1]
26
- if pid = fork then
27
- # parent is server
28
- csock = ssock.accept
29
- n = 0
30
- while str = csock.gets
31
- n += csock.write(str)
32
- end
33
- Process.wait
34
- printf "server processed %d bytes\n", n
35
- else
36
- # child is client
37
- echo_client(n, port)
38
- end
39
- end
40
-
41
- echo_server(Integer(ARGV.shift || 1))
@@ -1,61 +0,0 @@
1
- #!/usr/bin/ruby
2
- # -*- mode: ruby -*-
3
- # $Id: except.ruby,v 1.1.1.1 2004-05-19 18:09:43 bfulgham Exp $
4
- # http://www.bagley.org/~doug/shootout/
5
-
6
- $HI = 0
7
- $LO = 0
8
- NUM = Integer(ARGV[0] || 1)
9
-
10
-
11
- class Lo_Exception < Exception
12
- def initialize(num)
13
- @value = num
14
- return self
15
- end
16
- end
17
-
18
- class Hi_Exception < Exception
19
- def initialize(num)
20
- @value = num
21
- return self
22
- end
23
- end
24
-
25
- def some_function(num)
26
- begin
27
- hi_function(num)
28
- rescue
29
- print "We shouldn't get here, exception is: #{$!.type}\n"
30
- end
31
- end
32
-
33
- def hi_function(num)
34
- begin
35
- lo_function(num)
36
- rescue Hi_Exception
37
- $HI = $HI + 1
38
- end
39
- end
40
-
41
- def lo_function(num)
42
- begin
43
- blowup(num)
44
- rescue Lo_Exception
45
- $LO = $LO + 1
46
- end
47
- end
48
-
49
- def blowup(num)
50
- if num % 2 == 0
51
- raise Lo_Exception.new(num)
52
- else
53
- raise Hi_Exception.new(num)
54
- end
55
- end
56
-
57
-
58
- for iter in 1 .. NUM
59
- some_function(iter)
60
- end
61
- print "Exceptions: HI=", $HI, " / LO=", $LO, "\n"
@@ -1,61 +0,0 @@
1
- #!/usr/bin/ruby
2
- # -*- mode: ruby -*-
3
- # $Id: except.ruby-2.ruby,v 1.1 2004-11-10 06:26:50 bfulgham Exp $
4
- # http://shootout.alioth.debian.org/
5
-
6
- $HI = 0
7
- $LO = 0
8
- NUM = Integer(ARGV[0] || 1)
9
-
10
-
11
- class Lo_Exception < Exception
12
- def initialize(num)
13
- @value = num
14
- return self
15
- end
16
- end
17
-
18
- class Hi_Exception < Exception
19
- def initialize(num)
20
- @value = num
21
- return self
22
- end
23
- end
24
-
25
- def some_function(num)
26
- begin
27
- hi_function(num)
28
- rescue
29
- print "We shouldn't get here, exception is: #{$!.type}\n"
30
- end
31
- end
32
-
33
- def hi_function(num)
34
- begin
35
- lo_function(num)
36
- rescue Hi_Exception
37
- $HI = $HI + 1
38
- end
39
- end
40
-
41
- def lo_function(num)
42
- begin
43
- blowup(num)
44
- rescue Lo_Exception
45
- $LO = $LO + 1
46
- end
47
- end
48
-
49
- def blowup(num)
50
- if num & 2 == 0
51
- raise Lo_Exception.new(num)
52
- else
53
- raise Hi_Exception.new(num)
54
- end
55
- end
56
-
57
-
58
- for iter in 1 .. NUM
59
- some_function(iter)
60
- end
61
- print "Exceptions: HI=", $HI, " / LO=", $LO, "\n"
@@ -1,42 +0,0 @@
1
- # The Computer Language Shootout
2
- # http://shootout.alioth.debian.org/
3
- # Contributed by Sokolov Yura
4
- # Modified by Ryan Williams
5
-
6
- def fannkuch(n)
7
- maxFlips, m, r, check = 0, n-1, n, 0
8
- count = (1..n).to_a
9
- perm = (1..n).to_a
10
-
11
- while true
12
- if check < 30
13
- puts "#{perm}"
14
- check += 1
15
- end
16
-
17
- while r != 1:
18
- count[r-1] = r
19
- r -= 1
20
- end
21
-
22
- if perm[0] != 1 and perm[m] != n
23
- perml = perm.clone #.dup
24
- flips = 0
25
- while (k = perml.first ) != 1
26
- perml = perml.slice!(0, k).reverse + perml
27
- flips += 1
28
- end
29
- maxFlips = flips if flips > maxFlips
30
- end
31
- while true
32
- if r==n : return maxFlips end
33
- perm.insert r,perm.shift
34
- break if (count[r] -= 1) > 0
35
- r += 1
36
- end
37
- end
38
- end
39
-
40
- N = (ARGV[0] || 1).to_i
41
- puts "Pfannkuchen(#{N}) = #{fannkuch(N)}"
42
-