basic101 0.1.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 (598) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.simplecov +1 -0
  4. data/.yardopts +7 -0
  5. data/Changelog.md +3 -0
  6. data/Gemfile +12 -0
  7. data/Gemfile.lock +75 -0
  8. data/LICENSE.md +9 -0
  9. data/README.md +193 -0
  10. data/Rakefile +14 -0
  11. data/VERSION +1 -0
  12. data/bin/basic101 +10 -0
  13. data/lib/basic101/abs_function.rb +19 -0
  14. data/lib/basic101/argument_checker.rb +61 -0
  15. data/lib/basic101/arguments.rb +32 -0
  16. data/lib/basic101/array_reference.rb +52 -0
  17. data/lib/basic101/asc_function.rb +17 -0
  18. data/lib/basic101/basic_array.rb +69 -0
  19. data/lib/basic101/basic_comparisons.rb +20 -0
  20. data/lib/basic101/basic_float.rb +48 -0
  21. data/lib/basic101/basic_integer.rb +48 -0
  22. data/lib/basic101/basic_math.rb +22 -0
  23. data/lib/basic101/basic_numeric.rb +96 -0
  24. data/lib/basic101/basic_object.rb +35 -0
  25. data/lib/basic101/basic_string.rb +85 -0
  26. data/lib/basic101/binary_operation.rb +32 -0
  27. data/lib/basic101/binary_operations.rb +26 -0
  28. data/lib/basic101/built_in_functions.rb +31 -0
  29. data/lib/basic101/chr_function.rb +17 -0
  30. data/lib/basic101/cos_function.rb +17 -0
  31. data/lib/basic101/data_statement.rb +24 -0
  32. data/lib/basic101/define_function_statement.rb +23 -0
  33. data/lib/basic101/dim_statement.rb +25 -0
  34. data/lib/basic101/else_statement.rb +22 -0
  35. data/lib/basic101/end_statement.rb +13 -0
  36. data/lib/basic101/endif_statement.rb +19 -0
  37. data/lib/basic101/errors.rb +50 -0
  38. data/lib/basic101/exp_function.rb +17 -0
  39. data/lib/basic101/for_stack.rb +48 -0
  40. data/lib/basic101/for_statement.rb +57 -0
  41. data/lib/basic101/function.rb +11 -0
  42. data/lib/basic101/function_call.rb +32 -0
  43. data/lib/basic101/function_identifier.rb +8 -0
  44. data/lib/basic101/functions.rb +39 -0
  45. data/lib/basic101/gosub_statement.rb +23 -0
  46. data/lib/basic101/goto_statement.rb +23 -0
  47. data/lib/basic101/identifier.rb +23 -0
  48. data/lib/basic101/identity.rb +18 -0
  49. data/lib/basic101/if_statement.rb +31 -0
  50. data/lib/basic101/input.rb +44 -0
  51. data/lib/basic101/input_reader.rb +55 -0
  52. data/lib/basic101/input_statement.rb +46 -0
  53. data/lib/basic101/int_function.rb +17 -0
  54. data/lib/basic101/left_function.rb +19 -0
  55. data/lib/basic101/len_function.rb +18 -0
  56. data/lib/basic101/let_statement.rb +24 -0
  57. data/lib/basic101/line.rb +32 -0
  58. data/lib/basic101/log_function.rb +17 -0
  59. data/lib/basic101/main.rb +24 -0
  60. data/lib/basic101/mid_function.rb +20 -0
  61. data/lib/basic101/negate_operation.rb +21 -0
  62. data/lib/basic101/next_statement.rb +34 -0
  63. data/lib/basic101/not_operation.rb +23 -0
  64. data/lib/basic101/null_prompt_delimeter.rb +12 -0
  65. data/lib/basic101/null_transcript.rb +20 -0
  66. data/lib/basic101/numeric_identifier.rb +16 -0
  67. data/lib/basic101/on_goto_statement.rb +29 -0
  68. data/lib/basic101/output.rb +73 -0
  69. data/lib/basic101/parser.rb +457 -0
  70. data/lib/basic101/power_operation.rb +24 -0
  71. data/lib/basic101/print_comma.rb +20 -0
  72. data/lib/basic101/print_semicolon.rb +19 -0
  73. data/lib/basic101/print_statement.rb +33 -0
  74. data/lib/basic101/program.rb +100 -0
  75. data/lib/basic101/program_counter.rb +52 -0
  76. data/lib/basic101/prompt_delimeter.rb +13 -0
  77. data/lib/basic101/randomize_statement.rb +13 -0
  78. data/lib/basic101/read_statement.rb +25 -0
  79. data/lib/basic101/reference.rb +25 -0
  80. data/lib/basic101/remark_statement.rb +12 -0
  81. data/lib/basic101/restore_statement.rb +23 -0
  82. data/lib/basic101/return_statement.rb +16 -0
  83. data/lib/basic101/right_function.rb +19 -0
  84. data/lib/basic101/rnd_function.rb +24 -0
  85. data/lib/basic101/runtime.rb +132 -0
  86. data/lib/basic101/scalar_reference.rb +19 -0
  87. data/lib/basic101/sgn_function.rb +17 -0
  88. data/lib/basic101/sin_function.rb +17 -0
  89. data/lib/basic101/sqr_function.rb +17 -0
  90. data/lib/basic101/statement.rb +36 -0
  91. data/lib/basic101/stop_statement.rb +14 -0
  92. data/lib/basic101/str_function.rb +16 -0
  93. data/lib/basic101/string_identifier.rb +16 -0
  94. data/lib/basic101/tab.rb +18 -0
  95. data/lib/basic101/tab_function.rb +17 -0
  96. data/lib/basic101/tan_function.rb +17 -0
  97. data/lib/basic101/transcript.rb +37 -0
  98. data/lib/basic101/transform.rb +264 -0
  99. data/lib/basic101/user_defined_function.rb +54 -0
  100. data/lib/basic101/val_function.rb +16 -0
  101. data/lib/basic101.rb +93 -0
  102. data/rake_tasks/default.rake +1 -0
  103. data/rake_tasks/integration.rake +8 -0
  104. data/rake_tasks/jeweler.rake +28 -0
  105. data/rake_tasks/spec.rake +8 -0
  106. data/rake_tasks/test.rake +2 -0
  107. data/rake_tasks/yard.rake +3 -0
  108. data/test/integration/arguments.rb +25 -0
  109. data/test/integration/errors.rb +7 -0
  110. data/test/integration/integration_test.rb +28 -0
  111. data/test/integration/main.rb +49 -0
  112. data/test/integration/output_file.rb +40 -0
  113. data/test/integration/test.rb +135 -0
  114. data/test/integration/tests/basic_computer_games/23-match.bas +64 -0
  115. data/test/integration/tests/basic_computer_games/23-match.input +1 -0
  116. data/test/integration/tests/basic_computer_games/23-match.output +29 -0
  117. data/test/integration/tests/basic_computer_games/3dplot.bas +17 -0
  118. data/test/integration/tests/basic_computer_games/3dplot.input +0 -0
  119. data/test/integration/tests/basic_computer_games/3dplot.output +47 -0
  120. data/test/integration/tests/basic_computer_games/aceyducy.bas +100 -0
  121. data/test/integration/tests/basic_computer_games/aceyducy.input +8 -0
  122. data/test/integration/tests/basic_computer_games/aceyducy.output +78 -0
  123. data/test/integration/tests/basic_computer_games/amazing.bas +138 -0
  124. data/test/integration/tests/basic_computer_games/amazing.input +1 -0
  125. data/test/integration/tests/basic_computer_games/amazing.output +32 -0
  126. data/test/integration/tests/basic_computer_games/animal.bas +71 -0
  127. data/test/integration/tests/basic_computer_games/animal.input +17 -0
  128. data/test/integration/tests/basic_computer_games/animal.output +38 -0
  129. data/test/integration/tests/basic_computer_games/awari.bas +70 -0
  130. data/test/integration/tests/basic_computer_games/awari.input +11 -0
  131. data/test/integration/tests/basic_computer_games/awari.output +117 -0
  132. data/test/integration/tests/basic_computer_games/bagels.bas +81 -0
  133. data/test/integration/tests/basic_computer_games/bagels.input +12 -0
  134. data/test/integration/tests/basic_computer_games/bagels.output +42 -0
  135. data/test/integration/tests/basic_computer_games/banner.bas +94 -0
  136. data/test/integration/tests/basic_computer_games/banner.input +6 -0
  137. data/test/integration/tests/basic_computer_games/banner.output +135 -0
  138. data/test/integration/tests/basic_computer_games/basketbl.bas +196 -0
  139. data/test/integration/tests/basic_computer_games/basketbl.input +46 -0
  140. data/test/integration/tests/basic_computer_games/basketbl.output +509 -0
  141. data/test/integration/tests/basic_computer_games/batnum.bas +90 -0
  142. data/test/integration/tests/basic_computer_games/batnum.input +14 -0
  143. data/test/integration/tests/basic_computer_games/batnum.output +67 -0
  144. data/test/integration/tests/basic_computer_games/battle.bas +196 -0
  145. data/test/integration/tests/basic_computer_games/battle.input +21 -0
  146. data/test/integration/tests/basic_computer_games/battle.output +118 -0
  147. data/test/integration/tests/basic_computer_games/blackjck.bas +321 -0
  148. data/test/integration/tests/basic_computer_games/blackjck.input +26 -0
  149. data/test/integration/tests/basic_computer_games/blackjck.output +144 -0
  150. data/test/integration/tests/basic_computer_games/bombard.bas +93 -0
  151. data/test/integration/tests/basic_computer_games/bombard.input +20 -0
  152. data/test/integration/tests/basic_computer_games/bombard.output +175 -0
  153. data/test/integration/tests/basic_computer_games/bounce.bas +53 -0
  154. data/test/integration/tests/basic_computer_games/bounce.input +0 -0
  155. data/test/integration/tests/basic_computer_games/bounce.output +15 -0
  156. data/test/integration/tests/basic_computer_games/bowling.bas +101 -0
  157. data/test/integration/tests/basic_computer_games/bowling.input +23 -0
  158. data/test/integration/tests/basic_computer_games/bowling.output +229 -0
  159. data/test/integration/tests/basic_computer_games/boxing.bas +142 -0
  160. data/test/integration/tests/basic_computer_games/boxing.input +8 -0
  161. data/test/integration/tests/basic_computer_games/boxing.output +47 -0
  162. data/test/integration/tests/basic_computer_games/bug.bas +256 -0
  163. data/test/integration/tests/basic_computer_games/bug.input +17 -0
  164. data/test/integration/tests/basic_computer_games/bug.output +847 -0
  165. data/test/integration/tests/basic_computer_games/bullfght.bas +193 -0
  166. data/test/integration/tests/basic_computer_games/bullfght.input +4 -0
  167. data/test/integration/tests/basic_computer_games/bullfght.output +60 -0
  168. data/test/integration/tests/basic_computer_games/bullseye.bas +37 -0
  169. data/test/integration/tests/basic_computer_games/bullseye.input +10 -0
  170. data/test/integration/tests/basic_computer_games/bullseye.output +79 -0
  171. data/test/integration/tests/basic_computer_games/bunny.bas +40 -0
  172. data/test/integration/tests/basic_computer_games/bunny.input +0 -0
  173. data/test/integration/tests/basic_computer_games/bunny.output +67 -0
  174. data/test/integration/tests/basic_computer_games/buzzword.bas +25 -0
  175. data/test/integration/tests/basic_computer_games/buzzword.input +4 -0
  176. data/test/integration/tests/basic_computer_games/buzzword.output +25 -0
  177. data/test/integration/tests/basic_computer_games/calendar.bas +58 -0
  178. data/test/integration/tests/basic_computer_games/calendar.input +0 -0
  179. data/test/integration/tests/basic_computer_games/calendar.output +213 -0
  180. data/test/integration/tests/basic_computer_games/change.bas +51 -0
  181. data/test/integration/tests/basic_computer_games/change.input +4 -0
  182. data/test/integration/tests/basic_computer_games/change.output +28 -0
  183. data/test/integration/tests/basic_computer_games/checkers.bas +82 -0
  184. data/test/integration/tests/basic_computer_games/checkers.input +74 -0
  185. data/test/integration/tests/basic_computer_games/checkers.output +673 -0
  186. data/test/integration/tests/basic_computer_games/chemist.bas +27 -0
  187. data/test/integration/tests/basic_computer_games/chemist.input +11 -0
  188. data/test/integration/tests/basic_computer_games/chemist.output +54 -0
  189. data/test/integration/tests/basic_computer_games/chief.bas +51 -0
  190. data/test/integration/tests/basic_computer_games/chief.input +5 -0
  191. data/test/integration/tests/basic_computer_games/chief.output +19 -0
  192. data/test/integration/tests/basic_computer_games/chomp.bas +104 -0
  193. data/test/integration/tests/basic_computer_games/chomp.input +15 -0
  194. data/test/integration/tests/basic_computer_games/chomp.output +159 -0
  195. data/test/integration/tests/basic_computer_games/combat.bas +124 -0
  196. data/test/integration/tests/basic_computer_games/combat.input +7 -0
  197. data/test/integration/tests/basic_computer_games/combat.output +33 -0
  198. data/test/integration/tests/basic_computer_games/craps.bas +82 -0
  199. data/test/integration/tests/basic_computer_games/craps.input +9 -0
  200. data/test/integration/tests/basic_computer_games/craps.output +51 -0
  201. data/test/integration/tests/basic_computer_games/cube.bas +161 -0
  202. data/test/integration/tests/basic_computer_games/cube.input +25 -0
  203. data/test/integration/tests/basic_computer_games/cube.output +72 -0
  204. data/test/integration/tests/basic_computer_games/depthchg.bas +33 -0
  205. data/test/integration/tests/basic_computer_games/depthchg.input +16 -0
  206. data/test/integration/tests/basic_computer_games/depthchg.output +83 -0
  207. data/test/integration/tests/basic_computer_games/diamond.bas +27 -0
  208. data/test/integration/tests/basic_computer_games/diamond.input +1 -0
  209. data/test/integration/tests/basic_computer_games/diamond.output +65 -0
  210. data/test/integration/tests/basic_computer_games/dice.bas +31 -0
  211. data/test/integration/tests/basic_computer_games/dice.input +4 -0
  212. data/test/integration/tests/basic_computer_games/dice.output +46 -0
  213. data/test/integration/tests/basic_computer_games/digits.bas +78 -0
  214. data/test/integration/tests/basic_computer_games/digits.input +5 -0
  215. data/test/integration/tests/basic_computer_games/digits.output +70 -0
  216. data/test/integration/tests/basic_computer_games/evenwin1.bas +128 -0
  217. data/test/integration/tests/basic_computer_games/evenwin1.input +13 -0
  218. data/test/integration/tests/basic_computer_games/evenwin1.output +116 -0
  219. data/test/integration/tests/basic_computer_games/evenwin2.bas +70 -0
  220. data/test/integration/tests/basic_computer_games/evenwin2.input +14 -0
  221. data/test/integration/tests/basic_computer_games/evenwin2.output +56 -0
  222. data/test/integration/tests/basic_computer_games/flipflop.bas +79 -0
  223. data/test/integration/tests/basic_computer_games/flipflop.input +8 -0
  224. data/test/integration/tests/basic_computer_games/flipflop.output +45 -0
  225. data/test/integration/tests/basic_computer_games/footbal1.bas +298 -0
  226. data/test/integration/tests/basic_computer_games/footbal1.input +13 -0
  227. data/test/integration/tests/basic_computer_games/footbal1.output +315 -0
  228. data/test/integration/tests/basic_computer_games/footbal2.bas +181 -0
  229. data/test/integration/tests/basic_computer_games/footbal2.input +23 -0
  230. data/test/integration/tests/basic_computer_games/footbal2.output +318 -0
  231. data/test/integration/tests/basic_computer_games/furtradr.bas +170 -0
  232. data/test/integration/tests/basic_computer_games/furtradr.input +20 -0
  233. data/test/integration/tests/basic_computer_games/furtradr.output +133 -0
  234. data/test/integration/tests/basic_computer_games/golf.bas +244 -0
  235. data/test/integration/tests/basic_computer_games/golf.input +11 -0
  236. data/test/integration/tests/basic_computer_games/golf.output +69 -0
  237. data/test/integration/tests/basic_computer_games/gomoko.bas +54 -0
  238. data/test/integration/tests/basic_computer_games/gomoko.input +6 -0
  239. data/test/integration/tests/basic_computer_games/gomoko.output +66 -0
  240. data/test/integration/tests/basic_computer_games/guess.bas +40 -0
  241. data/test/integration/tests/basic_computer_games/guess.input +8 -0
  242. data/test/integration/tests/basic_computer_games/guess.output +37 -0
  243. data/test/integration/tests/basic_computer_games/gunner.bas +52 -0
  244. data/test/integration/tests/basic_computer_games/gunner.input +18 -0
  245. data/test/integration/tests/basic_computer_games/gunner.output +91 -0
  246. data/test/integration/tests/basic_computer_games/hamurabi.bas +119 -0
  247. data/test/integration/tests/basic_computer_games/hamurabi.input +7 -0
  248. data/test/integration/tests/basic_computer_games/hamurabi.output +51 -0
  249. data/test/integration/tests/basic_computer_games/hangman.bas +81 -0
  250. data/test/integration/tests/basic_computer_games/hangman.input +69 -0
  251. data/test/integration/tests/basic_computer_games/hangman.output +889 -0
  252. data/test/integration/tests/basic_computer_games/hello.bas +83 -0
  253. data/test/integration/tests/basic_computer_games/hello.input +7 -0
  254. data/test/integration/tests/basic_computer_games/hello.output +46 -0
  255. data/test/integration/tests/basic_computer_games/hexapawn.bas +174 -0
  256. data/test/integration/tests/basic_computer_games/hexapawn.input +38 -0
  257. data/test/integration/tests/basic_computer_games/hexapawn.output +521 -0
  258. data/test/integration/tests/basic_computer_games/hi-q.bas +135 -0
  259. data/test/integration/tests/basic_computer_games/hi-q.input +14 -0
  260. data/test/integration/tests/basic_computer_games/hi-q.output +115 -0
  261. data/test/integration/tests/basic_computer_games/hilo.bas +29 -0
  262. data/test/integration/tests/basic_computer_games/hilo.input +20 -0
  263. data/test/integration/tests/basic_computer_games/hilo.output +76 -0
  264. data/test/integration/tests/basic_computer_games/hockey.bas +210 -0
  265. data/test/integration/tests/basic_computer_games/hockey.input +59 -0
  266. data/test/integration/tests/basic_computer_games/hockey.output +243 -0
  267. data/test/integration/tests/basic_computer_games/horsrace.bas +130 -0
  268. data/test/integration/tests/basic_computer_games/horsrace.input +11 -0
  269. data/test/integration/tests/basic_computer_games/horsrace.output +517 -0
  270. data/test/integration/tests/basic_computer_games/hurkle.bas +51 -0
  271. data/test/integration/tests/basic_computer_games/hurkle.input +16 -0
  272. data/test/integration/tests/basic_computer_games/hurkle.output +81 -0
  273. data/test/integration/tests/basic_computer_games/kinema.bas +34 -0
  274. data/test/integration/tests/basic_computer_games/kinema.input +9 -0
  275. data/test/integration/tests/basic_computer_games/kinema.output +64 -0
  276. data/test/integration/tests/basic_computer_games/king.bas +268 -0
  277. data/test/integration/tests/basic_computer_games/king.input +7 -0
  278. data/test/integration/tests/basic_computer_games/king.output +57 -0
  279. data/test/integration/tests/basic_computer_games/lem.bas +246 -0
  280. data/test/integration/tests/basic_computer_games/lem.input +4 -0
  281. data/test/integration/tests/basic_computer_games/lem.output +68 -0
  282. data/test/integration/tests/basic_computer_games/letter.bas +26 -0
  283. data/test/integration/tests/basic_computer_games/letter.input +24 -0
  284. data/test/integration/tests/basic_computer_games/letter.output +123 -0
  285. data/test/integration/tests/basic_computer_games/life.bas +66 -0
  286. data/test/integration/tests/basic_computer_games/life.input +4 -0
  287. data/test/integration/tests/basic_computer_games/life.options +1 -0
  288. data/test/integration/tests/basic_computer_games/life.output +200 -0
  289. data/test/integration/tests/basic_computer_games/life2.bas +83 -0
  290. data/test/integration/tests/basic_computer_games/life2.input +17 -0
  291. data/test/integration/tests/basic_computer_games/life2.output +113 -0
  292. data/test/integration/tests/basic_computer_games/litquiz.bas +49 -0
  293. data/test/integration/tests/basic_computer_games/litquiz.input +4 -0
  294. data/test/integration/tests/basic_computer_games/litquiz.output +36 -0
  295. data/test/integration/tests/basic_computer_games/love.bas +34 -0
  296. data/test/integration/tests/basic_computer_games/love.input +1 -0
  297. data/test/integration/tests/basic_computer_games/love.output +67 -0
  298. data/test/integration/tests/basic_computer_games/lunar.bas +48 -0
  299. data/test/integration/tests/basic_computer_games/lunar.input +87 -0
  300. data/test/integration/tests/basic_computer_games/lunar.output +195 -0
  301. data/test/integration/tests/basic_computer_games/mastrmnd.bas +232 -0
  302. data/test/integration/tests/basic_computer_games/mastrmnd.input +18 -0
  303. data/test/integration/tests/basic_computer_games/mastrmnd.output +67 -0
  304. data/test/integration/tests/basic_computer_games/mathdice.bas +60 -0
  305. data/test/integration/tests/basic_computer_games/mathdice.input +4 -0
  306. data/test/integration/tests/basic_computer_games/mathdice.output +86 -0
  307. data/test/integration/tests/basic_computer_games/mugwump.bas +56 -0
  308. data/test/integration/tests/basic_computer_games/mugwump.input +16 -0
  309. data/test/integration/tests/basic_computer_games/mugwump.output +139 -0
  310. data/test/integration/tests/basic_computer_games/name.bas +25 -0
  311. data/test/integration/tests/basic_computer_games/name.input +2 -0
  312. data/test/integration/tests/basic_computer_games/name.output +22 -0
  313. data/test/integration/tests/basic_computer_games/nicoma.bas +34 -0
  314. data/test/integration/tests/basic_computer_games/nicoma.input +8 -0
  315. data/test/integration/tests/basic_computer_games/nicoma.output +36 -0
  316. data/test/integration/tests/basic_computer_games/nim.bas +156 -0
  317. data/test/integration/tests/basic_computer_games/nim.input +8 -0
  318. data/test/integration/tests/basic_computer_games/nim.output +30 -0
  319. data/test/integration/tests/basic_computer_games/number.bas +37 -0
  320. data/test/integration/tests/basic_computer_games/number.input +19 -0
  321. data/test/integration/tests/basic_computer_games/number.output +73 -0
  322. data/test/integration/tests/basic_computer_games/onecheck.bas +86 -0
  323. data/test/integration/tests/basic_computer_games/onecheck.input +6 -0
  324. data/test/integration/tests/basic_computer_games/onecheck.output +77 -0
  325. data/test/integration/tests/basic_computer_games/orbit.bas +96 -0
  326. data/test/integration/tests/basic_computer_games/orbit.input +10 -0
  327. data/test/integration/tests/basic_computer_games/orbit.output +113 -0
  328. data/test/integration/tests/basic_computer_games/pizza.bas +68 -0
  329. data/test/integration/tests/basic_computer_games/pizza.input +10 -0
  330. data/test/integration/tests/basic_computer_games/pizza.output +93 -0
  331. data/test/integration/tests/basic_computer_games/poetry.bas +42 -0
  332. data/test/integration/tests/basic_computer_games/poetry.input +0 -0
  333. data/test/integration/tests/basic_computer_games/poetry.options +1 -0
  334. data/test/integration/tests/basic_computer_games/poetry.output +50 -0
  335. data/test/integration/tests/basic_computer_games/poker.bas +416 -0
  336. data/test/integration/tests/basic_computer_games/poker.input +34 -0
  337. data/test/integration/tests/basic_computer_games/poker.output +197 -0
  338. data/test/integration/tests/basic_computer_games/queen.bas +168 -0
  339. data/test/integration/tests/basic_computer_games/queen.input +10 -0
  340. data/test/integration/tests/basic_computer_games/queen.output +133 -0
  341. data/test/integration/tests/basic_computer_games/reverse.bas +62 -0
  342. data/test/integration/tests/basic_computer_games/reverse.input +12 -0
  343. data/test/integration/tests/basic_computer_games/reverse.output +79 -0
  344. data/test/integration/tests/basic_computer_games/rocket.bas +71 -0
  345. data/test/integration/tests/basic_computer_games/rocket.input +42 -0
  346. data/test/integration/tests/basic_computer_games/rocket.output +149 -0
  347. data/test/integration/tests/basic_computer_games/rocksp.bas +33 -0
  348. data/test/integration/tests/basic_computer_games/rocksp.input +9 -0
  349. data/test/integration/tests/basic_computer_games/rocksp.output +69 -0
  350. data/test/integration/tests/basic_computer_games/roulette.bas +239 -0
  351. data/test/integration/tests/basic_computer_games/roulette.input +9 -0
  352. data/test/integration/tests/basic_computer_games/roulette.output +98 -0
  353. data/test/integration/tests/basic_computer_games/rusrou.bas +26 -0
  354. data/test/integration/tests/basic_computer_games/rusrou.input +9 -0
  355. data/test/integration/tests/basic_computer_games/rusrou.output +50 -0
  356. data/test/integration/tests/basic_computer_games/salvo.bas +329 -0
  357. data/test/integration/tests/basic_computer_games/salvo.input +21 -0
  358. data/test/integration/tests/basic_computer_games/salvo.output +49 -0
  359. data/test/integration/tests/basic_computer_games/sinewave.bas +17 -0
  360. data/test/integration/tests/basic_computer_games/sinewave.input +0 -0
  361. data/test/integration/tests/basic_computer_games/sinewave.output +168 -0
  362. data/test/integration/tests/basic_computer_games/slalom.bas +165 -0
  363. data/test/integration/tests/basic_computer_games/slalom.input +20 -0
  364. data/test/integration/tests/basic_computer_games/slalom.output +122 -0
  365. data/test/integration/tests/basic_computer_games/slots.bas +134 -0
  366. data/test/integration/tests/basic_computer_games/slots.input +2 -0
  367. data/test/integration/tests/basic_computer_games/slots.output +20 -0
  368. data/test/integration/tests/basic_computer_games/splat.bas +128 -0
  369. data/test/integration/tests/basic_computer_games/splat.input +9 -0
  370. data/test/integration/tests/basic_computer_games/splat.output +61 -0
  371. data/test/integration/tests/basic_computer_games/stars.bas +54 -0
  372. data/test/integration/tests/basic_computer_games/stars.input +15 -0
  373. data/test/integration/tests/basic_computer_games/stars.output +70 -0
  374. data/test/integration/tests/basic_computer_games/stock.bas +232 -0
  375. data/test/integration/tests/basic_computer_games/stock.input +30 -0
  376. data/test/integration/tests/basic_computer_games/stock.output +156 -0
  377. data/test/integration/tests/basic_computer_games/superstartrek.bas +425 -0
  378. data/test/integration/tests/basic_computer_games/superstartrek.input +21 -0
  379. data/test/integration/tests/basic_computer_games/superstartrek.output +151 -0
  380. data/test/integration/tests/basic_computer_games/superstartrekins.bas +127 -0
  381. data/test/integration/tests/basic_computer_games/superstartrekins.input +1 -0
  382. data/test/integration/tests/basic_computer_games/superstartrekins.output +134 -0
  383. data/test/integration/tests/basic_computer_games/synonym.bas +53 -0
  384. data/test/integration/tests/basic_computer_games/synonym.input +13 -0
  385. data/test/integration/tests/basic_computer_games/synonym.output +57 -0
  386. data/test/integration/tests/basic_computer_games/target.bas +51 -0
  387. data/test/integration/tests/basic_computer_games/target.input +2 -0
  388. data/test/integration/tests/basic_computer_games/target.output +39 -0
  389. data/test/integration/tests/basic_computer_games/tictac1.bas +69 -0
  390. data/test/integration/tests/basic_computer_games/tictac1.input +10 -0
  391. data/test/integration/tests/basic_computer_games/tictac1.output +49 -0
  392. data/test/integration/tests/basic_computer_games/tictac2.bas +114 -0
  393. data/test/integration/tests/basic_computer_games/tictac2.input +6 -0
  394. data/test/integration/tests/basic_computer_games/tictac2.output +104 -0
  395. data/test/integration/tests/basic_computer_games/towers.bas +125 -0
  396. data/test/integration/tests/basic_computer_games/towers.input +9 -0
  397. data/test/integration/tests/basic_computer_games/towers.output +70 -0
  398. data/test/integration/tests/basic_computer_games/train.bas +24 -0
  399. data/test/integration/tests/basic_computer_games/train.input +4 -0
  400. data/test/integration/tests/basic_computer_games/train.output +23 -0
  401. data/test/integration/tests/basic_computer_games/trap.bas +49 -0
  402. data/test/integration/tests/basic_computer_games/trap.input +7 -0
  403. data/test/integration/tests/basic_computer_games/trap.output +40 -0
  404. data/test/integration/tests/basic_computer_games/war.bas +68 -0
  405. data/test/integration/tests/basic_computer_games/war.input +11 -0
  406. data/test/integration/tests/basic_computer_games/war.output +54 -0
  407. data/test/integration/tests/basic_computer_games/weekday.bas +150 -0
  408. data/test/integration/tests/basic_computer_games/weekday.input +2 -0
  409. data/test/integration/tests/basic_computer_games/weekday.output +28 -0
  410. data/test/integration/tests/basic_computer_games/word.bas +65 -0
  411. data/test/integration/tests/basic_computer_games/word.input +6 -0
  412. data/test/integration/tests/basic_computer_games/word.output +0 -0
  413. data/test/integration/tests/fast/abs.bas +5 -0
  414. data/test/integration/tests/fast/abs.input +0 -0
  415. data/test/integration/tests/fast/abs.output +5 -0
  416. data/test/integration/tests/fast/add.bas +5 -0
  417. data/test/integration/tests/fast/add.input +0 -0
  418. data/test/integration/tests/fast/add.output +5 -0
  419. data/test/integration/tests/fast/and.bas +5 -0
  420. data/test/integration/tests/fast/and.input +0 -0
  421. data/test/integration/tests/fast/and.output +5 -0
  422. data/test/integration/tests/fast/array.bas +11 -0
  423. data/test/integration/tests/fast/array.input +0 -0
  424. data/test/integration/tests/fast/array.output +6 -0
  425. data/test/integration/tests/fast/asc.bas +1 -0
  426. data/test/integration/tests/fast/asc.input +0 -0
  427. data/test/integration/tests/fast/asc.output +1 -0
  428. data/test/integration/tests/fast/chr.bas +1 -0
  429. data/test/integration/tests/fast/chr.input +0 -0
  430. data/test/integration/tests/fast/chr.output +1 -0
  431. data/test/integration/tests/fast/cos.bas +1 -0
  432. data/test/integration/tests/fast/cos.input +0 -0
  433. data/test/integration/tests/fast/cos.output +1 -0
  434. data/test/integration/tests/fast/def_fn.bas +9 -0
  435. data/test/integration/tests/fast/def_fn.input +0 -0
  436. data/test/integration/tests/fast/def_fn.output +5 -0
  437. data/test/integration/tests/fast/divide.bas +5 -0
  438. data/test/integration/tests/fast/divide.input +0 -0
  439. data/test/integration/tests/fast/divide.output +5 -0
  440. data/test/integration/tests/fast/end.bas +3 -0
  441. data/test/integration/tests/fast/end.input +0 -0
  442. data/test/integration/tests/fast/end.output +1 -0
  443. data/test/integration/tests/fast/eq.bas +3 -0
  444. data/test/integration/tests/fast/eq.input +0 -0
  445. data/test/integration/tests/fast/eq.output +3 -0
  446. data/test/integration/tests/fast/exp.bas +2 -0
  447. data/test/integration/tests/fast/exp.input +0 -0
  448. data/test/integration/tests/fast/exp.output +2 -0
  449. data/test/integration/tests/fast/float.bas +3 -0
  450. data/test/integration/tests/fast/float.input +0 -0
  451. data/test/integration/tests/fast/float.output +2 -0
  452. data/test/integration/tests/fast/for_next.bas +61 -0
  453. data/test/integration/tests/fast/for_next.input +0 -0
  454. data/test/integration/tests/fast/for_next.output +46 -0
  455. data/test/integration/tests/fast/ge.bas +3 -0
  456. data/test/integration/tests/fast/ge.input +0 -0
  457. data/test/integration/tests/fast/ge.output +3 -0
  458. data/test/integration/tests/fast/gosub_return.bas +10 -0
  459. data/test/integration/tests/fast/gosub_return.input +0 -0
  460. data/test/integration/tests/fast/gosub_return.output +4 -0
  461. data/test/integration/tests/fast/goto.bas +3 -0
  462. data/test/integration/tests/fast/goto.input +0 -0
  463. data/test/integration/tests/fast/goto.output +1 -0
  464. data/test/integration/tests/fast/gt.bas +3 -0
  465. data/test/integration/tests/fast/gt.input +0 -0
  466. data/test/integration/tests/fast/gt.output +3 -0
  467. data/test/integration/tests/fast/if.bas +25 -0
  468. data/test/integration/tests/fast/if.input +0 -0
  469. data/test/integration/tests/fast/if.output +8 -0
  470. data/test/integration/tests/fast/input.bas +24 -0
  471. data/test/integration/tests/fast/input.input +10 -0
  472. data/test/integration/tests/fast/input.output +28 -0
  473. data/test/integration/tests/fast/int.bas +5 -0
  474. data/test/integration/tests/fast/int.input +0 -0
  475. data/test/integration/tests/fast/int.output +5 -0
  476. data/test/integration/tests/fast/integer_plus_string.bas +1 -0
  477. data/test/integration/tests/fast/integer_plus_string.input +0 -0
  478. data/test/integration/tests/fast/integer_plus_string.output +1 -0
  479. data/test/integration/tests/fast/invalid_argument.bas +1 -0
  480. data/test/integration/tests/fast/invalid_argument.input +0 -0
  481. data/test/integration/tests/fast/invalid_argument.output +1 -0
  482. data/test/integration/tests/fast/le.bas +3 -0
  483. data/test/integration/tests/fast/le.input +0 -0
  484. data/test/integration/tests/fast/le.output +3 -0
  485. data/test/integration/tests/fast/left.bas +1 -0
  486. data/test/integration/tests/fast/left.input +0 -0
  487. data/test/integration/tests/fast/left.output +1 -0
  488. data/test/integration/tests/fast/len.bas +2 -0
  489. data/test/integration/tests/fast/len.input +0 -0
  490. data/test/integration/tests/fast/len.output +2 -0
  491. data/test/integration/tests/fast/let.bas +6 -0
  492. data/test/integration/tests/fast/let.input +0 -0
  493. data/test/integration/tests/fast/let.output +4 -0
  494. data/test/integration/tests/fast/log.bas +1 -0
  495. data/test/integration/tests/fast/log.input +0 -0
  496. data/test/integration/tests/fast/log.output +1 -0
  497. data/test/integration/tests/fast/lt.bas +3 -0
  498. data/test/integration/tests/fast/lt.input +0 -0
  499. data/test/integration/tests/fast/lt.output +3 -0
  500. data/test/integration/tests/fast/math.output +0 -0
  501. data/test/integration/tests/fast/mid.bas +2 -0
  502. data/test/integration/tests/fast/mid.input +0 -0
  503. data/test/integration/tests/fast/mid.output +2 -0
  504. data/test/integration/tests/fast/multiply.bas +5 -0
  505. data/test/integration/tests/fast/multiply.input +0 -0
  506. data/test/integration/tests/fast/multiply.output +5 -0
  507. data/test/integration/tests/fast/ne.bas +3 -0
  508. data/test/integration/tests/fast/ne.input +0 -0
  509. data/test/integration/tests/fast/ne.output +3 -0
  510. data/test/integration/tests/fast/negate.bas +4 -0
  511. data/test/integration/tests/fast/negate.input +0 -0
  512. data/test/integration/tests/fast/negate.output +3 -0
  513. data/test/integration/tests/fast/not.bas +4 -0
  514. data/test/integration/tests/fast/not.input +0 -0
  515. data/test/integration/tests/fast/not.output +4 -0
  516. data/test/integration/tests/fast/on_goto.bas +6 -0
  517. data/test/integration/tests/fast/on_goto.input +0 -0
  518. data/test/integration/tests/fast/on_goto.output +2 -0
  519. data/test/integration/tests/fast/or.bas +5 -0
  520. data/test/integration/tests/fast/or.input +0 -0
  521. data/test/integration/tests/fast/or.output +5 -0
  522. data/test/integration/tests/fast/parentheses.bas +1 -0
  523. data/test/integration/tests/fast/parentheses.input +0 -0
  524. data/test/integration/tests/fast/parentheses.output +1 -0
  525. data/test/integration/tests/fast/power.bas +4 -0
  526. data/test/integration/tests/fast/power.input +0 -0
  527. data/test/integration/tests/fast/power.output +4 -0
  528. data/test/integration/tests/fast/print.bas +6 -0
  529. data/test/integration/tests/fast/print.input +0 -0
  530. data/test/integration/tests/fast/print.output +4 -0
  531. data/test/integration/tests/fast/read_data.bas +15 -0
  532. data/test/integration/tests/fast/read_data.input +0 -0
  533. data/test/integration/tests/fast/read_data.output +4 -0
  534. data/test/integration/tests/fast/rem.bas +1 -0
  535. data/test/integration/tests/fast/rem.input +0 -0
  536. data/test/integration/tests/fast/rem.output +0 -0
  537. data/test/integration/tests/fast/right.bas +1 -0
  538. data/test/integration/tests/fast/right.input +0 -0
  539. data/test/integration/tests/fast/right.output +1 -0
  540. data/test/integration/tests/fast/rnd.bas +5 -0
  541. data/test/integration/tests/fast/rnd.input +0 -0
  542. data/test/integration/tests/fast/rnd.output +5 -0
  543. data/test/integration/tests/fast/sgn.bas +5 -0
  544. data/test/integration/tests/fast/sgn.input +0 -0
  545. data/test/integration/tests/fast/sgn.output +5 -0
  546. data/test/integration/tests/fast/sin.bas +1 -0
  547. data/test/integration/tests/fast/sin.input +0 -0
  548. data/test/integration/tests/fast/sin.output +1 -0
  549. data/test/integration/tests/fast/sqr.bas +2 -0
  550. data/test/integration/tests/fast/sqr.input +0 -0
  551. data/test/integration/tests/fast/sqr.output +2 -0
  552. data/test/integration/tests/fast/stop.bas +3 -0
  553. data/test/integration/tests/fast/stop.input +0 -0
  554. data/test/integration/tests/fast/stop.output +2 -0
  555. data/test/integration/tests/fast/str.bas +3 -0
  556. data/test/integration/tests/fast/str.input +0 -0
  557. data/test/integration/tests/fast/str.output +3 -0
  558. data/test/integration/tests/fast/string_addition.bas +1 -0
  559. data/test/integration/tests/fast/string_addition.input +0 -0
  560. data/test/integration/tests/fast/string_addition.output +1 -0
  561. data/test/integration/tests/fast/string_comparisons.bas +7 -0
  562. data/test/integration/tests/fast/string_comparisons.input +0 -0
  563. data/test/integration/tests/fast/string_comparisons.output +4 -0
  564. data/test/integration/tests/fast/string_plus_integer.bas +1 -0
  565. data/test/integration/tests/fast/string_plus_integer.input +0 -0
  566. data/test/integration/tests/fast/string_plus_integer.output +1 -0
  567. data/test/integration/tests/fast/subtract.bas +5 -0
  568. data/test/integration/tests/fast/subtract.input +0 -0
  569. data/test/integration/tests/fast/subtract.output +5 -0
  570. data/test/integration/tests/fast/tab.bas +4 -0
  571. data/test/integration/tests/fast/tab.input +0 -0
  572. data/test/integration/tests/fast/tab.output +3 -0
  573. data/test/integration/tests/fast/tan.bas +1 -0
  574. data/test/integration/tests/fast/tan.input +0 -0
  575. data/test/integration/tests/fast/tan.output +1 -0
  576. data/test/integration/tests/fast/val.bas +3 -0
  577. data/test/integration/tests/fast/val.input +0 -0
  578. data/test/integration/tests/fast/val.output +3 -0
  579. data/test/spec/argument_checker_spec.rb +128 -0
  580. data/test/spec/basic_array_spec.rb +100 -0
  581. data/test/spec/basic_float_spec.rb +168 -0
  582. data/test/spec/basic_integer_spec.rb +270 -0
  583. data/test/spec/basic_numeric_spec.rb +16 -0
  584. data/test/spec/basic_object_spec.rb +22 -0
  585. data/test/spec/basic_string_spec.rb +259 -0
  586. data/test/spec/for_stack_spec.rb +70 -0
  587. data/test/spec/input_reader_spec.rb +143 -0
  588. data/test/spec/input_spec.rb +102 -0
  589. data/test/spec/line_spec.rb +18 -0
  590. data/test/spec/output_spec.rb +153 -0
  591. data/test/spec/parser_spec.rb +562 -0
  592. data/test/spec/program_spec.rb +45 -0
  593. data/test/spec/spec_helper.rb +15 -0
  594. data/test/spec/support/basic_numeric_helpers.rb +327 -0
  595. data/test/spec/support/basic_object_helpers.rb +22 -0
  596. data/test/spec/transcript_spec.rb +37 -0
  597. data/test/spec/transform_spec.rb +513 -0
  598. metadata +742 -0
@@ -0,0 +1,71 @@
1
+ 10 PRINT TAB(32);"ANIMAL"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT: PRINT: PRINT
4
+ 40 PRINT "PLAY 'GUESS THE ANIMAL'"
5
+ 45 PRINT
6
+ 50 PRINT "THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT."
7
+ 60 PRINT
8
+ 70 DIM A$(200)
9
+ 80 FOR I=0 TO 3
10
+ 90 READ A$(I)
11
+ 100 NEXT I
12
+ 110 N=VAL(A$(0))
13
+ 120 REM MAIN CONTROL SECTION
14
+ 130 INPUT "ARE YOU THINKING OF AN ANIMAL";A$
15
+ 140 IF A$="LIST" THEN 600
16
+ 150 IF LEFT$(A$,1)<>"Y" THEN 120
17
+ 160 K=1
18
+ 170 GOSUB 390
19
+ 180 IF LEN(A$(K))=0 THEN 999
20
+ 190 IF LEFT$(A$(K),2)="\Q" THEN 170
21
+ 200 PRINT "IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2);
22
+ 210 INPUT A$
23
+ 220 A$=LEFT$(A$,1)
24
+ 230 IF LEFT$(A$,1)="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?": GOTO 120
25
+ 240 INPUT "THE ANIMAL YOU WERE THINKING OF WAS A ";V$
26
+ 250 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A"
27
+ 260 PRINT V$;" FROM A ";RIGHT$(A$(K),LEN(A$(K))-2)
28
+ 270 INPUT X$
29
+ 280 PRINT "FOR A ";V$;" THE ANSWER WOULD BE ";
30
+ 290 INPUT A$
31
+ 300 A$=LEFT$(A$,1): IF A$<>"Y" AND A$<>"N" THEN 280
32
+ 310 IF A$="Y" THEN B$="N"
33
+ 320 IF A$="N" THEN B$="Y"
34
+ 330 Z1=VAL(A$(0))
35
+ 340 A$(0)=STR$(Z1+2)
36
+ 350 A$(Z1)=A$(K)
37
+ 360 A$(Z1+1)="\A"+V$
38
+ 370 A$(K)="\Q"+X$+"\"+A$+STR$(Z1+1)+"\"+B$+STR$(Z1)+"\"
39
+ 380 GOTO 120
40
+ 390 REM SUBROUTINE TO PRINT QUESTIONS
41
+ 400 Q$=A$(K)
42
+ 410 FOR Z=3 TO LEN(Q$)
43
+ 415 IF MID$(Q$,Z,1)<>"\" THEN PRINT MID$(Q$,Z,1);: NEXT Z
44
+ 420 INPUT C$
45
+ 430 C$=LEFT$(C$,1)
46
+ 440 IF C$<>"Y" AND C$<>"N" THEN 410
47
+ 450 T$="\"+C$
48
+ 455 FOR X=3 TO LEN(Q$)-1
49
+ 460 IF MID$(Q$,X,2)=T$ THEN 480
50
+ 470 NEXT X
51
+ 475 STOP
52
+ 480 FOR Y=X+1 TO LEN(Q$)
53
+ 490 IF MID$(Q$,Y,1)="\" THEN 510
54
+ 500 NEXT Y
55
+ 505 STOP
56
+ 510 K=VAL(MID$(Q$,X+2,Y-X-2))
57
+ 520 RETURN
58
+ 530 DATA "4","\QDOES IT SWIM\Y2\N3\","\AFISH","\ABIRD"
59
+ 600 PRINT:PRINT "ANIMALS I ALREADY KNOW ARE:"
60
+ 605 X=0
61
+ 610 FOR I=1 TO 200
62
+ 620 IF LEFT$(A$(I),2)<>"\A" THEN 650
63
+ 624 PRINT TAB(15*X);
64
+ 630 FOR Z=3 TO LEN(A$(I))
65
+ 640 IF MID$(A$(I),Z,1)<>"\" THEN PRINT MID$(A$(I),Z,1);: NEXT Z
66
+ 645 X=X+1: IF X=4 THEN X=0: PRINT
67
+ 650 NEXT I
68
+ 660 PRINT
69
+ 670 PRINT
70
+ 680 GOTO 120
71
+ 999 END
@@ -0,0 +1,17 @@
1
+ Y
2
+ YES
3
+ NO
4
+ JELLYFISH
5
+ DOES IT HAVE SCALES
6
+ NO
7
+ YES
8
+ NO
9
+ NO
10
+ GIRAFFE
11
+ DOES IT HAVE A LONG NECK
12
+ YES
13
+ YES
14
+ YES
15
+ YES
16
+ YES
17
+ LIST
@@ -0,0 +1,38 @@
1
+ ANIMAL
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ PLAY 'GUESS THE ANIMAL'
7
+
8
+ THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT.
9
+
10
+ ARE YOU THINKING OF AN ANIMAL? Y
11
+ DOES IT SWIM? YES
12
+ IS IT A FISH? NO
13
+ THE ANIMAL YOU WERE THINKING OF WAS A ? JELLYFISH
14
+ PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A
15
+ JELLYFISH FROM A FISH
16
+ ? DOES IT HAVE SCALES
17
+ FOR A JELLYFISH THE ANSWER WOULD BE ? NO
18
+ ARE YOU THINKING OF AN ANIMAL? YES
19
+ DOES IT SWIM? NO
20
+ IS IT A BIRD? NO
21
+ THE ANIMAL YOU WERE THINKING OF WAS A ? GIRAFFE
22
+ PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A
23
+ GIRAFFE FROM A BIRD
24
+ ? DOES IT HAVE A LONG NECK
25
+ FOR A GIRAFFE THE ANSWER WOULD BE ? YES
26
+ ARE YOU THINKING OF AN ANIMAL? YES
27
+ DOES IT SWIM? YES
28
+ DOES IT HAVE SCALES? YES
29
+ IS IT A FISH? YES
30
+ WHY NOT TRY ANOTHER ANIMAL?
31
+ ARE YOU THINKING OF AN ANIMAL? LIST
32
+
33
+ ANIMALS I ALREADY KNOW ARE:
34
+ FISH JELLYFISH BIRD GIRAFFE
35
+
36
+
37
+ ARE YOU THINKING OF AN ANIMAL?
38
+ Error on line 130: No more input
@@ -0,0 +1,70 @@
1
+ 5 PRINT TAB(34);"AWARI"
2
+ 7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 10 DATA 0
4
+ 15 DIM B(13),G(13),F(50):READ N
5
+ 20 PRINT:PRINT:E=0
6
+ 25 FOR I=0 TO 12:B(I)=3:NEXT I
7
+ 30 C=0:F(N)=0:B(13)=0:B(6)=0
8
+ 35 GOSUB 500
9
+ 40 PRINT "YOUR MOVE";:GOSUB 110
10
+ 45 IF E=0 THEN 80
11
+ 50 IF M=H THEN GOSUB 100
12
+ 55 IF E=0 THEN 80
13
+ 60 PRINT "MY MOVE IS ";:GOSUB 800
14
+ 65 IF E=0 THEN 80
15
+ 70 IF M=H THEN PRINT ",";:GOSUB 800
16
+ 75 IF E>0 THEN 35
17
+ 80 PRINT:PRINT"GAME OVER"
18
+ 85 D=B(6)-B(13):IF D<0 THEN PRINT "I WIN BY";-D;"POINTS":GOTO 20
19
+ 90 N=N+1:IF D=0 THEN PRINT "DRAWN GAME":GOTO 20
20
+ 95 PRINT "YOU WIN BY";D;"POINTS":GOTO 20
21
+ 100 PRINT "AGAIN";
22
+ 110 INPUT M:IF M<7 THEN IF M>0 THEN M=M-1:GOTO 130
23
+ 120 PRINT "ILLEGAL MOVE":GOTO 100
24
+ 130 IF B(M)=0 THEN 120
25
+ 140 H=6:GOSUB 200
26
+ 150 GOTO 500
27
+ 200 K=M:GOSUB 600
28
+ 205 E=0:IF K>6 THEN K=K-7
29
+ 210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K
30
+ 215 FOR I=0 TO 5:IF B(I)<>0 THEN 230
31
+ 220 NEXT I
32
+ 225 RETURN
33
+ 230 FOR I=7 TO 12:IF B(I)<>0 THEN E=1:RETURN
34
+ 235 GOTO 220
35
+ 500 PRINT:PRINT" ";
36
+ 505 FOR I=12 TO 7 STEP -1:GOSUB 580
37
+ 510 NEXT I
38
+ 515 PRINT:I=13:GOSUB 580
39
+ 520 PRINT " ";:PRINT B(6):PRINT " ";
40
+ 525 FOR I=0 TO 5:GOSUB 580
41
+ 530 NEXT I
42
+ 535 PRINT:PRINT:RETURN
43
+ 580 IF B(I)<10 THEN PRINT " ";
44
+ 585 PRINT B(I);:RETURN
45
+ 600 P=B(M):B(M)=0
46
+ 605 FOR P=P TO 1 STEP -1:M=M+1:IF M>13 THEN M=M-14
47
+ 610 B(M)=B(M)+1:NEXT P
48
+ 615 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 625
49
+ 620 RETURN
50
+ 625 B(H)=B(H)+B(12-M)+1:B(M)=0:B(12-M)=0:RETURN
51
+ 800 D=-99:H=13
52
+ 805 FOR I=0 TO 13:G(I)=B(I):NEXT I
53
+ 810 FOR J=7 TO 12:IF B(J)=0 THEN 885
54
+ 815 G=0:M=J:GOSUB 600
55
+ 820 FOR I=0 TO 5:IF B(I)=0 THEN 845
56
+ 825 L=B(I)+I:R=0
57
+ 830 IF L>13 THEN L=L-14:R=1:GOTO 830
58
+ 835 IF B(L)=0 THEN IF L<>6 THEN IF L<>13 THEN R=B(12-L)+R
59
+ 840 IF R>Q THEN Q=R
60
+ 845 NEXT I
61
+ 850 Q=B(13)-B(6)-Q:IF C>8 THEN 875
62
+ 855 K=J:IF K>6 THEN K=K-7
63
+ 860 FOR I=0 TO N-1:IF F(N)*6+K=INT(F(I)/6^(7-C)+.1) THEN Q=Q-2
64
+ 870 NEXT I
65
+ 875 FOR I=0 TO 13:B(I)=G(I):NEXT I
66
+ 880 IF Q>=D THEN A=J:D=Q
67
+ 885 NEXT J
68
+ 890 M=A:PRINT CHR$(42+M);:GOTO 200
69
+ 900 FOR I=0 TO N-1:PRINT B(I):NEXT I
70
+ 999 END
@@ -0,0 +1,11 @@
1
+ 6
2
+ 5
3
+ 4
4
+ 6
5
+ 5
6
+ 6
7
+ 1
8
+ 6
9
+ 5
10
+ 6
11
+ 4
@@ -0,0 +1,117 @@
1
+ AWARI
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ 3 3 3 3 3 3
7
+ 0 0
8
+ 3 3 3 3 3 3
9
+
10
+ YOUR MOVE? 6
11
+
12
+ 3 3 3 3 4 4
13
+ 0 1
14
+ 3 3 3 3 3 0
15
+
16
+ MY MOVE IS 1
17
+ 3 4 4 4 5 0
18
+ 0 1
19
+ 3 3 3 3 3 0
20
+
21
+ YOUR MOVE? 5
22
+
23
+ 3 4 4 4 5 0
24
+ 0 4
25
+ 3 3 3 3 0 0
26
+
27
+ MY MOVE IS 2,6
28
+ 0 5 5 5 0 0
29
+ 2 4
30
+ 4 4 4 3 0 0
31
+
32
+ YOUR MOVE? 4
33
+
34
+ 0 5 5 5 0 0
35
+ 2 5
36
+ 4 4 4 0 1 1
37
+
38
+ AGAIN? 6
39
+
40
+ 0 5 5 5 0 0
41
+ 2 6
42
+ 4 4 4 0 1 0
43
+
44
+ MY MOVE IS 5
45
+ 1 0 5 5 0 0
46
+ 3 6
47
+ 5 5 5 0 1 0
48
+
49
+ YOUR MOVE? 5
50
+
51
+ 1 0 5 5 0 0
52
+ 3 6
53
+ 5 5 5 0 0 1
54
+
55
+ MY MOVE IS 6,4
56
+ 1 1 0 5 0 0
57
+ 5 6
58
+ 6 6 5 0 0 1
59
+
60
+ YOUR MOVE? 6
61
+
62
+ 1 1 0 5 0 0
63
+ 5 7
64
+ 6 6 5 0 0 0
65
+
66
+ AGAIN? 1
67
+
68
+ 1 1 0 5 0 0
69
+ 5 8
70
+ 0 7 6 1 1 1
71
+
72
+ MY MOVE IS 3
73
+ 0 2 1 0 0 0
74
+ 9 8
75
+ 0 7 6 1 1 1
76
+
77
+ YOUR MOVE? 6
78
+
79
+ 0 2 1 0 0 0
80
+ 9 9
81
+ 0 7 6 1 1 0
82
+
83
+ AGAIN? 5
84
+
85
+ 0 2 1 0 0 0
86
+ 9 9
87
+ 0 7 6 1 0 1
88
+
89
+ MY MOVE IS 5,4
90
+ 1 0 0 0 0 0
91
+ 18 9
92
+ 0 0 6 1 0 1
93
+
94
+ YOUR MOVE? 6
95
+
96
+ 1 0 0 0 0 0
97
+ 18 10
98
+ 0 0 6 1 0 0
99
+
100
+ AGAIN? 4
101
+
102
+ 1 0 0 0 0 0
103
+ 18 10
104
+ 0 0 6 0 1 0
105
+
106
+ MY MOVE IS 6
107
+ GAME OVER
108
+ I WIN BY 9 POINTS
109
+
110
+
111
+
112
+ 3 3 3 3 3 3
113
+ 0 0
114
+ 3 3 3 3 3 3
115
+
116
+ YOUR MOVE?
117
+ Error on line 110: No more input
@@ -0,0 +1,81 @@
1
+ 5 PRINT TAB(33);"BAGELS"
2
+ 10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY":PRINT:PRINT
3
+ 15 REM *** BAGLES NUMBER GUESSING GAME
4
+ 20 REM *** ORIGINAL SOURCE UNKNOWN BUT SUSPECTED TO BE
5
+ 25 REM *** LAWRENCE HALL OF SCIENCE, U.C. BERKELY
6
+ 30 DIM A1(6),A(3),B(3)
7
+ 40 Y=0:T=255
8
+ 50 PRINT:PRINT:PRINT
9
+ 70 INPUT "WOULD YOU LIKE THE RULES (YES OR NO)";A$
10
+ 90 IF LEFT$(A$,1)="N" THEN 150
11
+ 100 PRINT:PRINT "I AM THINKING OF A THREE-DIGIT NUMBER. TRY TO GUESS"
12
+ 110 PRINT "MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:"
13
+ 120 PRINT " PICO - ONE DIGIT CORRECT BUT IN THE WRONG POSITION"
14
+ 130 PRINT " FERMI - ONE DIGIT CORRECT AND IN THE RIGHT POSITION"
15
+ 140 PRINT " BAGELS - NO DIGITS CORRECT"
16
+ 150 FOR I=1 TO 3
17
+ 160 A(I)=INT(10*RND(1))
18
+ 165 IF I-1=0 THEN 200
19
+ 170 FOR J=1 TO I-1
20
+ 180 IF A(I)=A(J) THEN 160
21
+ 190 NEXT J
22
+ 200 NEXT I
23
+ 210 PRINT:PRINT "O.K. I HAVE A NUMBER IN MIND."
24
+ 220 FOR I=1 TO 20
25
+ 230 PRINT "GUESS #";I,
26
+ 240 INPUT A$
27
+ 245 IF LEN(A$)<>3 THEN 630
28
+ 250 FOR Z=1 TO 3:A1(Z)=ASC(MID$(A$,Z,1)):NEXT Z
29
+ 260 FOR J=1 TO 3
30
+ 270 IF A1(J)<48 THEN 300
31
+ 280 IF A1(J)>57 THEN 300
32
+ 285 B(J)=A1(J)-48
33
+ 290 NEXT J
34
+ 295 GOTO 320
35
+ 300 PRINT "WHAT?"
36
+ 310 GOTO 230
37
+ 320 IF B(1)=B(2) THEN 650
38
+ 330 IF B(2)=B(3) THEN 650
39
+ 340 IF B(3)=B(1) THEN 650
40
+ 350 C=0:D=0
41
+ 360 FOR J=1 TO 2
42
+ 370 IF A(J)<>B(J+1) THEN 390
43
+ 380 C=C+1
44
+ 390 IF A(J+1)<>B(J) THEN 410
45
+ 400 C=C+1
46
+ 410 NEXT J
47
+ 420 IF A(1)<>B(3) THEN 440
48
+ 430 C=C+1
49
+ 440 IF A(3)<>B(1) THEN 460
50
+ 450 C=C+1
51
+ 460 FOR J=1 TO 3
52
+ 470 IF A(J)<>B(J) THEN 490
53
+ 480 D=D+1
54
+ 490 NEXT J
55
+ 500 IF D=3 THEN 680
56
+ 505 IF C=0 THEN 545
57
+ 520 FOR J=1 TO C
58
+ 530 PRINT "PICO ";
59
+ 540 NEXT J
60
+ 545 IF D=0 THEN 580
61
+ 550 FOR J=1 TO D
62
+ 560 PRINT "FERMI ";
63
+ 570 NEXT J
64
+ 580 IF C+D<>0 THEN 600
65
+ 590 PRINT "BAGELS";
66
+ 600 PRINT
67
+ 605 NEXT I
68
+ 610 PRINT "OH WELL."
69
+ 615 PRINT "THAT'S TWNETY GUESSES. MY NUMBER WAS";100*A(1)+10*A(2)+A(3)
70
+ 620 GOTO 700
71
+ 630 PRINT "TRY GUESSING A THREE-DIGIT NUMBER.":GOTO 230
72
+ 650 PRINT "OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND"
73
+ 660 PRINT "HAS NO TWO DIGITS THE SAME.":GOTO 230
74
+ 680 PRINT "YOU GOT IT!!!":PRINT
75
+ 690 Y=Y+1
76
+ 700 INPUT "PLAY AGAIN (YES OR NO)";A$
77
+ 720 IF LEFT$(A$,1)="YES" THEN 150
78
+ 730 IF Y=0 THEN 750
79
+ 740 PRINT:PRINT "A";Y;"POINT BAGELS BUFF!!"
80
+ 750 PRINT "HOPE YOU HAD FUN. BYE."
81
+ 999 END
@@ -0,0 +1,12 @@
1
+ YES
2
+ 111
3
+ 123
4
+ 456
5
+ 124
6
+ 125
7
+ 127
8
+ 152
9
+ 512
10
+ 567
11
+ 576
12
+ NO
@@ -0,0 +1,42 @@
1
+ BAGELS
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+
7
+
8
+ WOULD YOU LIKE THE RULES (YES OR NO)? YES
9
+
10
+ I AM THINKING OF A THREE-DIGIT NUMBER. TRY TO GUESS
11
+ MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:
12
+ PICO - ONE DIGIT CORRECT BUT IN THE WRONG POSITION
13
+ FERMI - ONE DIGIT CORRECT AND IN THE RIGHT POSITION
14
+ BAGELS - NO DIGITS CORRECT
15
+
16
+ O.K. I HAVE A NUMBER IN MIND.
17
+ GUESS # 1 ? 111
18
+ OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND
19
+ HAS NO TWO DIGITS THE SAME.
20
+ GUESS # 1 ? 123
21
+ BAGELS
22
+ GUESS # 2 ? 456
23
+ PICO FERMI
24
+ GUESS # 3 ? 124
25
+ BAGELS
26
+ GUESS # 4 ? 125
27
+ PICO
28
+ GUESS # 5 ? 127
29
+ PICO
30
+ GUESS # 6 ? 152
31
+ PICO
32
+ GUESS # 7 ? 512
33
+ FERMI
34
+ GUESS # 8 ? 567
35
+ PICO PICO FERMI
36
+ GUESS # 9 ? 576
37
+ YOU GOT IT!!!
38
+
39
+ PLAY AGAIN (YES OR NO)? NO
40
+
41
+ A 1 POINT BAGELS BUFF!!
42
+ HOPE YOU HAD FUN. BYE.
@@ -0,0 +1,94 @@
1
+ 10 INPUT "HORIZONTAL";X
2
+ 20 INPUT "VERTICAL";Y
3
+ 21 INPUT "CENTERED";L$
4
+ 22 G1=0:IF L$>"P" THEN G1=1
5
+ 23 INPUT "CHARACTER (TYPE 'ALL' IF YOU WANT CHARACTER BEING PRINTED)";M$
6
+ 29 PRINT "STATEMENT";
7
+ 30 INPUT A$
8
+ 35 INPUT "SET PAGE";O$
9
+ 40 A=ASC(LEFT$(A$,1))
10
+ 50 REM
11
+ 60 REM
12
+ 70 FOR T=1 TO LEN(A$)
13
+ 80 P$=MID$(A$,T,1)
14
+ 90 FOR O=1 TO 50
15
+ 95 READ S$,S(1),S(2),S(3),S(4),S(5),S(6),S(7)
16
+ 96 IF P$=" " THEN 812
17
+ 100 IF P$=S$ THEN 200
18
+ 120 NEXT O
19
+ 200 RESTORE
20
+ 201 X$=M$
21
+ 202 IF M$="ALL" THEN X$=S$
22
+ 205 FOR U=1 TO 7
23
+ 210 FOR K=8 TO 0 STEP -1
24
+ 230 IF 2^K<S(U) THEN 270
25
+ 240 J(9-K)=0
26
+ 250 GOTO 280
27
+ 270 J(9-K)=1: S(U)=S(U)-2^K
28
+ 272 IF S(U)=1 THEN 815
29
+ 280 NEXT K
30
+ 445 FOR T1=1 TO X
31
+ 447 PRINT TAB((63-4.5*Y)*G1/(LEN(X$))+1);
32
+ 450 FOR B=1 TO F(U)
33
+ 460 IF J(B)=0 THEN 500
34
+ 465 FOR I=1 TO Y: PRINT X$;: NEXT I
35
+ 470 GOTO 600
36
+ 500 FOR I=1 TO Y
37
+ 510 FOR I1=1 TO LEN(X$)
38
+ 520 PRINT " ";: NEXT I1
39
+ 530 NEXT I
40
+ 600 NEXT B
41
+ 620 PRINT
42
+ 630 NEXT T1
43
+ 700 NEXT U
44
+ 750 FOR H=1 TO 2*X: PRINT: NEXT H
45
+ 800 NEXT T
46
+ 806 FOR H=1 TO 75: PRINT: NEXT H
47
+ 810 END
48
+ 812 FOR H=1 TO 7*X: PRINT: NEXT H
49
+ 813 GOTO 800
50
+ 815 F(U)=9-K: GOTO 445
51
+ 899 DATA " ",0,0,0,0,0,0,0
52
+ 900 DATA "A",505,37,35,34,35,37,505
53
+ 901 DATA "G",125,131,258,258,290,163,101
54
+ 902 DATA "E",512,274,274,274,274,258,258
55
+ 903 DATA "T",2,2,2,512,2,2,2
56
+ 904 DATA "W",256,257,129,65,129,257,256
57
+ 905 DATA "L",512,257,257,257,257,257,257
58
+ 906 DATA "S",69,139,274,274,274,163,69
59
+ 907 DATA "O",125,131,258,258,258,131,125
60
+ 908 DATA "N",512,7,9,17,33,193,512
61
+ 909 DATA "F",512,18,18,18,18,2,2
62
+ 910 DATA "K",512,17,17,41,69,131,258
63
+ 911 DATA "B",512,274,274,274,274,274,239
64
+ 912 DATA "D",512,258,258,258,258,131,125
65
+ 913 DATA "H",512,17,17,17,17,17,512
66
+ 914 DATA "M",512,7,13,25,13,7,512
67
+ 915 DATA "?",5,3,2,354,18,11,5
68
+ 916 DATA "U",128,129,257,257,257,129,128
69
+ 917 DATA "R",512,18,18,50,82,146,271
70
+ 918 DATA "P",512,18,18,18,18,18,15
71
+ 919 DATA "Q",125,131,258,258,322,131,381
72
+ 920 DATA "Y",8,9,17,481,17,9,8
73
+ 921 DATA "V",64,65,129,257,129,65,64
74
+ 922 DATA "X",388,69,41,17,41,69,388
75
+ 923 DATA "Z",386,322,290,274,266,262,260
76
+ 924 DATA "I",258,258,258,512,258,258,258
77
+ 925 DATA "C",125,131,258,258,258,131,69
78
+ 926 DATA "J",65,129,257,257,257,129,128
79
+ 927 DATA "1",0,0,261,259,512,257,257
80
+ 928 DATA "2",261,387,322,290,274,267,261
81
+ 929 DATA "*",69,41,17,512,17,41,69
82
+ 930 DATA "3",66,130,258,274,266,150,100
83
+ 931 DATA "4",33,49,41,37,35,512,33
84
+ 932 DATA "5",160,274,274,274,274,274,226
85
+ 933 DATA "6",194,291,293,297,305,289,193
86
+ 934 DATA "7",258,130,66,34,18,10,8
87
+ 935 DATA "8",69,171,274,274,274,171,69
88
+ 936 DATA "9",263,138,74,42,26,10,7
89
+ 937 DATA "=",41,41,41,41,41,41,41
90
+ 938 DATA "!",1,1,1,384,1,1,1
91
+ 939 DATA "0",57,69,131,258,131,69,57
92
+ 940 DATA ".",1,1,129,449,129,1,1
93
+ 1000 STOP
94
+ 1002 END
@@ -0,0 +1,6 @@
1
+ 2
2
+ 2
3
+ YES
4
+ ALL
5
+ FOO
6
+
@@ -0,0 +1,135 @@
1
+ HORIZONTAL? 2
2
+ VERTICAL? 2
3
+ CENTERED? YES
4
+ CHARACTER (TYPE 'ALL' IF YOU WANT CHARACTER BEING PRINTED)? ALL
5
+ STATEMENT? FOO
6
+ SET PAGE?
7
+ FFFFFFFFFFFFFFFFFF
8
+ FFFFFFFFFFFFFFFFFF
9
+ FF FF
10
+ FF FF
11
+ FF FF
12
+ FF FF
13
+ FF FF
14
+ FF FF
15
+ FF FF
16
+ FF FF
17
+ FF
18
+ FF
19
+ FF
20
+ FF
21
+
22
+
23
+
24
+
25
+ OOOOOOOOOO
26
+ OOOOOOOOOO
27
+ OO OO
28
+ OO OO
29
+ OO OO
30
+ OO OO
31
+ OO OO
32
+ OO OO
33
+ OO OO
34
+ OO OO
35
+ OO OO
36
+ OO OO
37
+ OOOOOOOOOO
38
+ OOOOOOOOOO
39
+
40
+
41
+
42
+
43
+ OOOOOOOOOO
44
+ OOOOOOOOOO
45
+ OO OO
46
+ OO OO
47
+ OO OO
48
+ OO OO
49
+ OO OO
50
+ OO OO
51
+ OO OO
52
+ OO OO
53
+ OO OO
54
+ OO OO
55
+ OOOOOOOOOO
56
+ OOOOOOOOOO
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+