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,20 +0,0 @@
1
- # The Computer Language Benchmarks Game
2
- # http://shootout.alioth.debian.org/
3
- # contributed by Tobias Polzin, translated from Mike Pall's Lua program
4
- # modified by Brian Atkinson
5
- # modified again by Heinrich Acker
6
-
7
- import sys
8
-
9
- def create_coroutine(n):
10
- if n > 1:
11
- coroutine = create_coroutine(n-1)
12
- cn = coroutine.next
13
- while 1:
14
- yield cn()+1
15
- while 1:
16
- yield 1
17
-
18
- coroutine = create_coroutine(500)
19
- cn = coroutine.next
20
- print sum(cn() for i in xrange(int(sys.argv[1])))
@@ -1,19 +0,0 @@
1
- # The Computer Language Benchmarks Game
2
- # http://shootout.alioth.debian.org/
3
- # contributed by Tobias Polzin, translated from Mike Pall's Lua program
4
- # modified by Brian Atkinson
5
- # modified again by Heinrich Acker
6
-
7
- import sys, gc
8
- gc.disable()
9
-
10
- def create_coroutine(n):
11
- if n > 1:
12
- cn = create_coroutine(n-1).next
13
- while 1:
14
- yield cn()+1
15
- while 1:
16
- yield 1
17
-
18
- cn = create_coroutine(500).next
19
- print sum(cn() for i in xrange(int(sys.argv[1])))
@@ -1,210 +0,0 @@
1
- # The Computer Language Shootout
2
- # http://shootout.alioth.debian.org/
3
- #
4
- # contributed by: Olof Kraigher
5
-
6
- from sys import argv
7
-
8
- width = 5
9
- height = 10
10
-
11
- directions = { "E" : 0, "NE" : 1, "NW" : 2, "W" : 3, "SW" : 4, "SE" : 5}
12
- rotate = { "E" : "NE", "NE" : "NW", "NW" : "W", "W" : "SW", "SW" : "SE", "SE" : "E"}
13
- flip = { "E" : "W", "NE" : "NW", "NW" : "NE", "W" : "E", "SW" : "SE", "SE" : "SW"}
14
- move = { "E" : lambda x,y: (x+1,y),
15
- "W" : lambda x,y: (x-1,y),
16
- "NE" : lambda x,y: (x+(y%2),y-1),
17
- "NW" : lambda x,y: (x+(y%2)-1,y-1),
18
- "SE" : lambda x,y: (x+(y%2),y+1),
19
- "SW" : lambda x,y: (x+(y%2)-1,y+1)}
20
-
21
- pieces = [ ["E", "E", "E", "SE"],
22
- ["SE", "SW", "W", "SW"],
23
- ["W", "W", "SW", "SE"],
24
- ["E", "E", "SW", "SE"],
25
- ["NW", "W", "NW", "SE", "SW"],
26
- ["E", "E", "NE", "W"],
27
- ["NW", "NE", "NE", "W"],
28
- ["NE", "SE", "E", "NE"],
29
- ["SE", "SE", "E", "SE"],
30
- ["E", "NW", "NW", "NW"]]
31
-
32
- solutions = []
33
- masks = [0 for i in xrange(10)]
34
-
35
- valid = lambda x,y: (0 <= x) and (x < width) and (0 <= y) and (y < height)
36
- legal = lambda mask,board: (mask & board) == 0
37
- zerocount = lambda mask: sum(map(lambda x: ((1<<x) & mask) == 0, xrange(50)))
38
-
39
- def findFreeCell(board):
40
- for y in xrange(height):
41
- for x in xrange(width):
42
- if board & (1 << (x + width*y)) == 0:
43
- return x,y
44
-
45
-
46
- def floodFill(board, (x, y)):
47
- if not valid(x,y):
48
- return board
49
- if board & (1 << (x + width*y)) != 0:
50
- return board
51
-
52
- board = board | (1 << (x + width*y))
53
-
54
- for f in move.values():
55
- board = board | floodFill(board, f(x,y))
56
-
57
- return board
58
-
59
- def noIslands(mask):
60
- zeroes = zerocount(mask)
61
-
62
- if zeroes < 5:
63
- return False
64
-
65
- while mask != 0x3FFFFFFFFFFFF:
66
- mask = floodFill(mask, findFreeCell(mask))
67
- new_zeroes = zerocount(mask)
68
-
69
- if zeroes - new_zeroes < 5:
70
- return False
71
-
72
- zeroes = new_zeroes
73
-
74
- return True
75
-
76
- def getBitmask(x,y,piece):
77
- mask = (1 << (x + width*y))
78
-
79
- for cell in piece:
80
- x,y = move[cell](x,y)
81
- if valid(x,y):
82
- mask = mask | (1 << (x + width*y))
83
- else:
84
- return False, 0
85
-
86
- return True, mask
87
-
88
- def allBitmasks(piece, color):
89
- bitmasks = []
90
- for orientations in xrange(2):
91
- for rotations in xrange(6 - 3*(color == 4)):
92
- for y in xrange(height):
93
- for x in xrange(width):
94
- isValid, mask = getBitmask(x,y,piece)
95
- if isValid and noIslands(mask):
96
- bitmasks.append(mask)
97
-
98
- piece = map(lambda cell: rotate[cell], piece)
99
- piece = map(lambda cell: flip[cell], piece)
100
-
101
-
102
- return bitmasks
103
-
104
- def generateBitmasks():
105
-
106
- global masksAtCell
107
-
108
- masksAtCell = [[[] for j in xrange(10)] for i in xrange(width*height)]
109
-
110
- color = 0
111
- for piece in pieces:
112
- masks = allBitmasks(piece, color)
113
- masks.sort()
114
- cellMask = 1 << (width*height-1)
115
- cellCounter = width*height-1
116
-
117
- j = len(masks)-1
118
-
119
- while (j >= 0):
120
- if (masks[j] & cellMask) == cellMask:
121
- masksAtCell[cellCounter][color].append(masks[j])
122
- j = j-1
123
- else:
124
- cellMask = cellMask >> 1
125
- cellCounter -= 1
126
- color += 1
127
-
128
-
129
- def solveCell(cell, board, n):
130
-
131
- global solutions, masks, masksAtCell
132
-
133
- if len(solutions) >= n:
134
- return
135
-
136
- if board == 0x3FFFFFFFFFFFF:
137
- # Solved
138
- s = stringOfMasks(masks)
139
- solutions.append(s);
140
- solutions.append(inverse(s));
141
- return
142
-
143
- if board & (1 << cell) != 0:
144
- # Cell full
145
- solveCell(cell-1, board, n)
146
- return
147
-
148
- if cell < 0:
149
- # Out of board
150
- return
151
-
152
- for color in xrange(10):
153
- if masks[color] == 0:
154
- for mask in masksAtCell[cell][color]:
155
- if legal(mask, board):
156
- masks[color] = mask
157
- solveCell(cell-1, board | mask, n);
158
- masks[color] = 0
159
-
160
- def solve(n):
161
- generateBitmasks()
162
- solveCell(width*height-1, 0, n)
163
-
164
-
165
- def stringOfMasks(masks):
166
- s = ""
167
- mask = 1;
168
- for y in xrange(height):
169
- for x in xrange(width):
170
- for color in xrange(10):
171
- if (masks[color] & mask) != 0:
172
- s += str(color)
173
- break
174
- elif color == 9:
175
- s += "."
176
- mask = mask << 1
177
- return s
178
-
179
- def inverse(s):
180
- ns = map(lambda x:x,s)
181
-
182
- for x in xrange(width):
183
- for y in xrange(height):
184
- ns[x + y*width] = s[width-x-1 + (width - y - 1)*width]
185
-
186
- return s
187
-
188
- def printSolution(solution):
189
- for y in xrange(height):
190
- for x in xrange(width):
191
- print solution[x + y*width],
192
-
193
- if (y%2) == 0:
194
- print ""
195
- print "",
196
- else:
197
- print ""
198
-
199
- if __name__ == "__main__":
200
-
201
- if not len(argv) > 1:
202
- exit()
203
-
204
- solve(int(argv[1]))
205
- print len(solutions), "solutions found"
206
- print
207
- printSolution(min(solutions))
208
- print
209
- printSolution(max(solutions))
210
- print
@@ -1,192 +0,0 @@
1
- # The Computer Language Benchmarks Game
2
- # http://shootout.alioth.debian.org/
3
- #
4
- # contributed by Olof Kraigher
5
- # modified by Tupteq
6
-
7
- import sys
8
-
9
- width = 5
10
- height = 10
11
-
12
- rotate = dict(E='NE', NE='NW', NW='W', W='SW', SW='SE', SE='E')
13
- flip = dict(E='W', NE='NW', NW='NE', W='E', SW='SE', SE='SW')
14
- move = dict(E=lambda x, y: (x+1, y),
15
- W=lambda x, y: (x-1, y),
16
- NE=lambda x, y: (x + (y%2), y-1),
17
- NW=lambda x, y: (x + (y%2) - 1, y-1),
18
- SE=lambda x, y: (x + (y%2), y+1),
19
- SW=lambda x, y: (x + (y%2) - 1, y+1))
20
-
21
- solutions = []
22
- masks = 10 * [0]
23
-
24
- valid = lambda x, y: 0 <= x < width and 0 <= y < height
25
- zerocount = lambda mask: sum(map(lambda x: (1<<x) & mask == 0, xrange(50)))
26
-
27
-
28
- def findFreeCell(board):
29
- for y in xrange(height):
30
- for x in xrange(width):
31
- if board & (1 << (x + width*y)) == 0:
32
- return x, y
33
-
34
-
35
- def floodFill(board, (x, y)):
36
- if valid(x, y) and board & (1 << (x + width*y)) == 0:
37
- board |= 1 << (x + width*y)
38
-
39
- for f in move.values():
40
- board |= floodFill(board, f(x, y))
41
-
42
- return board
43
-
44
-
45
- def noIslands(mask):
46
- zeroes = zerocount(mask)
47
-
48
- if zeroes < 5:
49
- return False
50
-
51
- while mask != 0x3FFFFFFFFFFFF:
52
- mask = floodFill(mask, findFreeCell(mask))
53
- new_zeroes = zerocount(mask)
54
-
55
- if zeroes - new_zeroes < 5:
56
- return False
57
-
58
- zeroes = new_zeroes
59
-
60
- return True
61
-
62
-
63
- def getBitmask(x, y, piece):
64
- mask = 1 << (x + width*y)
65
-
66
- for cell in piece:
67
- x, y = move[cell](x, y)
68
- if valid(x, y):
69
- mask = mask | (1 << (x + width*y))
70
- else:
71
- return False, 0
72
-
73
- return True, mask
74
-
75
- def allBitmasks(piece, color):
76
- bitmasks = []
77
- for orientations in xrange(2):
78
- for rotations in xrange(6 - 3*(color == 4)):
79
- for y in xrange(height):
80
- for x in xrange(width):
81
- isValid, mask = getBitmask(x, y, piece)
82
- if isValid and noIslands(mask):
83
- bitmasks.append(mask)
84
-
85
- piece = map(lambda cell: rotate[cell], piece)
86
- piece = map(lambda cell: flip[cell], piece)
87
-
88
- return bitmasks
89
-
90
-
91
- def generateBitmasks():
92
- global masksAtCell
93
-
94
- pieces = [["E", "E", "E", "SE"], ["SE", "SW", "W", "SW"],
95
- ["W", "W", "SW", "SE"], ["E", "E", "SW", "SE"],
96
- ["NW", "W", "NW", "SE", "SW"], ["E", "E", "NE", "W"],
97
- ["NW", "NE", "NE", "W"], ["NE", "SE", "E", "NE"],
98
- ["SE", "SE", "E", "SE"], ["E", "NW", "NW", "NW"]]
99
-
100
- masksAtCell = [[[] for j in xrange(10)] for i in xrange(width*height)]
101
-
102
- color = 0
103
- for piece in pieces:
104
- masks = allBitmasks(piece, color)
105
- masks.sort()
106
- cellMask = 1 << (width*height - 1)
107
- cellCounter = width*height - 1
108
- j = len(masks) - 1
109
-
110
- while (j >= 0):
111
- if (masks[j] & cellMask) == cellMask:
112
- masksAtCell[cellCounter][color].append(masks[j])
113
- j = j-1
114
- else:
115
- cellMask = cellMask >> 1
116
- cellCounter -= 1
117
- color += 1
118
-
119
-
120
- def solveCell(cell, board):
121
- if to_go <= 0:
122
- # Got enough solutions
123
- pass
124
- elif board == 0x3FFFFFFFFFFFF:
125
- # Solved
126
- addSolutions()
127
- elif board & (1 << cell) != 0:
128
- # Cell full
129
- solveCell(cell-1, board)
130
- elif cell < 0:
131
- # Out of board
132
- pass
133
- else:
134
- for color in xrange(10):
135
- if masks[color] == 0:
136
- for mask in masksAtCell[cell][color]:
137
- if mask & board == 0:
138
- masks[color] = mask
139
- solveCell(cell-1, board | mask)
140
- masks[color] = 0
141
-
142
-
143
- def addSolutions():
144
- global to_go
145
- s = ''
146
- mask = 1
147
- for y in xrange(height):
148
- for x in xrange(width):
149
- for color in xrange(10):
150
- if masks[color] & mask != 0:
151
- s += str(color)
152
- break
153
- elif color == 9:
154
- s += '.'
155
- mask <<= 1
156
-
157
- # Inverse
158
- ns = ''
159
- for y in xrange(height):
160
- for x in xrange(width):
161
- ns += s[width - x - 1 + (width - y - 1) * width]
162
-
163
- # Finally append
164
- solutions.append(s)
165
- solutions.append(ns)
166
- to_go -= 2
167
-
168
-
169
- def printSolution(solution):
170
- for y in xrange(height):
171
- for x in xrange(width):
172
- print solution[x + y*width],
173
-
174
- print ""
175
- if y % 2 == 0:
176
- print "",
177
- print
178
-
179
-
180
- def solve(n):
181
- global to_go
182
- to_go = n
183
- generateBitmasks()
184
- solveCell(width*height - 1, 0)
185
-
186
-
187
- if __name__ == "__main__":
188
- solve(int(sys.argv[1]))
189
-
190
- print "%d solutions found\n" % len(solutions)
191
- printSolution(min(solutions))
192
- printSolution(max(solutions))
@@ -1,51 +0,0 @@
1
- #!/usr/bin/python
2
- # http://www.bagley.org/~doug/shootout/
3
-
4
- import sys
5
-
6
- class Toggle:
7
- def __init__(self, start_state):
8
- self.bool = start_state
9
- def value(self):
10
- return(self.bool)
11
- def activate(self):
12
- self.bool = not self.bool
13
- return(self)
14
-
15
- class NthToggle(Toggle):
16
- def __init__(self, start_state, max_counter):
17
- Toggle.__init__(self, start_state)
18
- self.count_max = max_counter
19
- self.counter = 0
20
- def activate(self):
21
- self.counter += 1
22
- if (self.counter >= self.count_max):
23
- self.bool = not self.bool
24
- self.counter = 0
25
- return(self)
26
-
27
-
28
- def main():
29
- NUM = int(sys.argv[1])
30
- if NUM < 1:
31
- NUM = 1
32
-
33
- val = 1
34
- toggle = Toggle(val)
35
- for i in xrange(0,NUM):
36
- val = toggle.activate().value()
37
- if val:
38
- print "true"
39
- else:
40
- print "false"
41
-
42
- val = 1
43
- ntoggle = NthToggle(val, 3)
44
- for i in xrange(0,NUM):
45
- val = ntoggle.activate().value()
46
- if val:
47
- print "true"
48
- else:
49
- print "false"
50
-
51
- main()