fork(2) download
  1. F=
  2. #171
  3.  
  4. ->w{s=[0]*8
  5. w.chars.flat_map{|c|z=0..7
  6. *m,i=z.map{|j|z.select{|k|s[k]!=z.map{|i|c.ord[i]}.rotate(j)[k]}<<j}.min_by &:size
  7. m.map{|m|s[m]=1-s[m];"t #{7-m}"}+["p #{i}"]}*?\n}
  8.  
  9. require 'minitest/autorun'
  10.  
  11. describe F do
  12. def test_case_1
  13. assert_equal <<-EOS.chomp, F['?']
  14. t 7
  15. t 6
  16. t 5
  17. t 4
  18. t 3
  19. t 2
  20. p 0
  21. EOS
  22. end
  23.  
  24. def test_case_2
  25. assert_equal <<-EOS.chomp, F[':=']
  26. t 6
  27. t 4
  28. t 3
  29. t 2
  30. p 0
  31. t 1
  32. p 7
  33. EOS
  34. end
  35.  
  36. def test_case_3
  37. assert_equal <<-EOS.chomp, F['0123456789']
  38. t 3
  39. t 2
  40. p 0
  41. t 7
  42. p 0
  43. t 7
  44. t 6
  45. p 0
  46. t 7
  47. p 0
  48. t 7
  49. t 6
  50. t 5
  51. p 0
  52. t 7
  53. p 0
  54. t 7
  55. t 6
  56. p 0
  57. t 7
  58. p 0
  59. t 3
  60. t 2
  61. p 3
  62. t 2
  63. p 3
  64. EOS
  65. end
  66.  
  67.  
  68. def test_case_4
  69. assert_equal <<-EOS.chomp, F['9876543210']
  70. t 7
  71. t 4
  72. t 3
  73. t 2
  74. p 0
  75. t 7
  76. p 0
  77. t 7
  78. t 0
  79. p 5
  80. t 4
  81. p 5
  82. t 5
  83. t 0
  84. p 0
  85. t 7
  86. p 0
  87. t 7
  88. t 6
  89. t 5
  90. p 0
  91. t 7
  92. p 0
  93. t 7
  94. t 6
  95. p 0
  96. t 7
  97. p 0
  98. EOS
  99. end
  100.  
  101. def test_case_5
  102. assert_equal <<-EOS.chomp, F['Hello, World!']
  103. t 4
  104. t 1
  105. p 0
  106. t 7
  107. t 3
  108. p 2
  109. t 6
  110. t 1
  111. p 2
  112. p 2
  113. t 1
  114. t 0
  115. p 2
  116. t 3
  117. t 1
  118. t 0
  119. p 2
  120. t 7
  121. t 6
  122. p 2
  123. t 7
  124. t 6
  125. t 2
  126. t 0
  127. p 1
  128. t 5
  129. t 1
  130. t 0
  131. p 0
  132. t 7
  133. t 2
  134. p 3
  135. t 6
  136. t 2
  137. p 0
  138. t 4
  139. p 0
  140. t 1
  141. p 3
  142. EOS
  143. end
  144.  
  145. def test_case_6
  146. assert_equal <<-EOS.chomp, F['The quick brown fox jumps over the lazy dog.']
  147. t 5
  148. t 3
  149. t 1
  150. p 0
  151. t 2
  152. t 1
  153. p 1
  154. t 7
  155. t 3
  156. t 1
  157. p 0
  158. t 7
  159. t 5
  160. t 1
  161. p 0
  162. t 7
  163. t 3
  164. t 1
  165. p 0
  166. t 5
  167. p 0
  168. t 5
  169. t 4
  170. t 3
  171. p 0
  172. t 6
  173. t 4
  174. p 0
  175. t 4
  176. p 0
  177. t 7
  178. t 6
  179. t 4
  180. t 1
  181. p 0
  182. t 6
  183. t 1
  184. p 0
  185. t 3
  186. p 0
  187. t 5
  188. t 0
  189. p 4
  190. t 7
  191. t 0
  192. p 0
  193. t 1
  194. p 1
  195. t 7
  196. t 6
  197. t 5
  198. t 3
  199. p 0
  200. t 6
  201. t 5
  202. t 1
  203. p 0
  204. t 7
  205. t 4
  206. p 0
  207. t 2
  208. t 1
  209. p 3
  210. t 7
  211. t 6
  212. t 5
  213. p 2
  214. t 6
  215. t 2
  216. t 1
  217. p 0
  218. t 0
  219. p 7
  220. t 7
  221. t 0
  222. p 5
  223. t 7
  224. t 6
  225. t 4
  226. t 3
  227. p 0
  228. t 7
  229. t 6
  230. p 0
  231. t 7
  232. t 6
  233. t 3
  234. t 1
  235. p 0
  236. t 7
  237. t 6
  238. t 5
  239. t 4
  240. t 1
  241. p 0
  242. t 4
  243. p 4
  244. t 6
  245. p 0
  246. t 6
  247. t 1
  248. p 4
  249. t 7
  250. t 6
  251. t 5
  252. p 0
  253. t 5
  254. t 3
  255. t 1
  256. p 0
  257. t 1
  258. p 1
  259. t 7
  260. t 3
  261. t 1
  262. p 0
  263. t 7
  264. t 5
  265. t 1
  266. p 0
  267. t 5
  268. t 4
  269. t 1
  270. p 0
  271. t 1
  272. p 3
  273. t 7
  274. t 3
  275. p 1
  276. t 5
  277. t 1
  278. p 0
  279. t 7
  280. t 4
  281. t 3
  282. t 1
  283. p 0
  284. t 5
  285. t 1
  286. p 0
  287. t 7
  288. t 6
  289. t 4
  290. p 0
  291. t 4
  292. p 0
  293. t 7
  294. t 4
  295. t 1
  296. p 0
  297. EOS
  298. end
  299. end
  300.  
Success #stdin #stdout 0.11s 10952KB
stdin
Standard input is empty
stdout
Run options: --seed 18955

# Running tests:

......

Finished tests in 0.027101s, 221.3950 tests/s, 221.3950 assertions/s.

6 tests, 6 assertions, 0 failures, 0 errors, 0 skips