clings 3.0.0__tar.gz

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 (459) hide show
  1. clings-3.0.0/.gitignore +8 -0
  2. clings-3.0.0/PKG-INFO +95 -0
  3. clings-3.0.0/README.md +75 -0
  4. clings-3.0.0/clings.py +1173 -0
  5. clings-3.0.0/clings.toml +31 -0
  6. clings-3.0.0/exercises/01_simplest_c_program/01a_return_zero.c +13 -0
  7. clings-3.0.0/exercises/01_simplest_c_program/01b_return_expression.c +22 -0
  8. clings-3.0.0/exercises/01_simplest_c_program/README.md +171 -0
  9. clings-3.0.0/exercises/01_simplest_c_program/exercises.toml +47 -0
  10. clings-3.0.0/exercises/01_simplest_c_program/simple.s +22 -0
  11. clings-3.0.0/exercises/01_simplest_c_program/variable.c +9 -0
  12. clings-3.0.0/exercises/02_hello_world_printf/02a_hello_printf.c +16 -0
  13. clings-3.0.0/exercises/02_hello_world_printf/02b_format_print.c +27 -0
  14. clings-3.0.0/exercises/02_hello_world_printf/README.md +72 -0
  15. clings-3.0.0/exercises/02_hello_world_printf/exercises.toml +58 -0
  16. clings-3.0.0/exercises/03_loop_counting/03a_while_loop.c +23 -0
  17. clings-3.0.0/exercises/03_loop_counting/03b_for_loop.c +28 -0
  18. clings-3.0.0/exercises/03_loop_counting/README.md +85 -0
  19. clings-3.0.0/exercises/03_loop_counting/exercises.toml +76 -0
  20. clings-3.0.0/exercises/04_odd_or_even/README.md +41 -0
  21. clings-3.0.0/exercises/04_odd_or_even/exercises.toml +38 -0
  22. clings-3.0.0/exercises/04_odd_or_even/judge.c +30 -0
  23. clings-3.0.0/exercises/05_sum_1_to_100/05a_sum.c +24 -0
  24. clings-3.0.0/exercises/05_sum_1_to_100/05b_sum_even.c +32 -0
  25. clings-3.0.0/exercises/05_sum_1_to_100/README.md +63 -0
  26. clings-3.0.0/exercises/05_sum_1_to_100/exercises.toml +52 -0
  27. clings-3.0.0/exercises/06_multiplication_table/README.md +73 -0
  28. clings-3.0.0/exercises/06_multiplication_table/exercises.toml +36 -0
  29. clings-3.0.0/exercises/06_multiplication_table/table99.c +27 -0
  30. clings-3.0.0/exercises/07_prime_number/07a_prime.c +33 -0
  31. clings-3.0.0/exercises/07_prime_number/README.md +55 -0
  32. clings-3.0.0/exercises/07_prime_number/exercises.toml +28 -0
  33. clings-3.0.0/exercises/08_count_digit_nine/08_sum9.c +47 -0
  34. clings-3.0.0/exercises/08_count_digit_nine/README.md +71 -0
  35. clings-3.0.0/exercises/08_count_digit_nine/exercises.toml +29 -0
  36. clings-3.0.0/exercises/09_integer_to_string/09a_itoa_hex.c +37 -0
  37. clings-3.0.0/exercises/09_integer_to_string/README.md +60 -0
  38. clings-3.0.0/exercises/09_integer_to_string/exercises.toml +89 -0
  39. clings-3.0.0/exercises/09_integer_to_string/itoa.c +34 -0
  40. clings-3.0.0/exercises/10_josephus_ring/10a_init_ring.c +39 -0
  41. clings-3.0.0/exercises/10_josephus_ring/README.md +76 -0
  42. clings-3.0.0/exercises/10_josephus_ring/exercises.toml +79 -0
  43. clings-3.0.0/exercises/10_josephus_ring/josephus.c +56 -0
  44. clings-3.0.0/exercises/11_point_distance/README.md +100 -0
  45. clings-3.0.0/exercises/11_point_distance/exercises.toml +38 -0
  46. clings-3.0.0/exercises/11_point_distance/point.c +34 -0
  47. clings-3.0.0/exercises/12_little_endian/12_endian.c +30 -0
  48. clings-3.0.0/exercises/12_little_endian/README.md +55 -0
  49. clings-3.0.0/exercises/12_little_endian/exercises.toml +25 -0
  50. clings-3.0.0/exercises/13_car_restriction/13a_get_last_char.c +30 -0
  51. clings-3.0.0/exercises/13_car_restriction/13b_is_restricted.c +48 -0
  52. clings-3.0.0/exercises/13_car_restriction/README.md +91 -0
  53. clings-3.0.0/exercises/13_car_restriction/exercises.toml +114 -0
  54. clings-3.0.0/exercises/13_car_restriction/restrict.c +75 -0
  55. clings-3.0.0/exercises/14_maze_exit/14a_print_board.c +44 -0
  56. clings-3.0.0/exercises/14_maze_exit/README.md +129 -0
  57. clings-3.0.0/exercises/14_maze_exit/exercises.toml +77 -0
  58. clings-3.0.0/exercises/14_maze_exit/solution.c +97 -0
  59. clings-3.0.0/exercises/15_count_bits/15a_count_bits_loop.c +33 -0
  60. clings-3.0.0/exercises/15_count_bits/15b_count_bits_clear.c +35 -0
  61. clings-3.0.0/exercises/15_count_bits/README.md +228 -0
  62. clings-3.0.0/exercises/15_count_bits/bits.c +43 -0
  63. clings-3.0.0/exercises/15_count_bits/exercises.toml +120 -0
  64. clings-3.0.0/exercises/16_my_strcpy/16a_strcpy_delta.c +43 -0
  65. clings-3.0.0/exercises/16_my_strcpy/README.md +241 -0
  66. clings-3.0.0/exercises/16_my_strcpy/exercises.toml +70 -0
  67. clings-3.0.0/exercises/16_my_strcpy/mystrcpy.c +40 -0
  68. clings-3.0.0/exercises/17_word_count/README.md +55 -0
  69. clings-3.0.0/exercises/17_word_count/delspace.c +87 -0
  70. clings-3.0.0/exercises/17_word_count/exercises.toml +54 -0
  71. clings-3.0.0/exercises/17_word_count/test.txt +1 -0
  72. clings-3.0.0/exercises/17_word_count/wordsum.c +52 -0
  73. clings-3.0.0/exercises/18_my_printf/18a_itoa.c +35 -0
  74. clings-3.0.0/exercises/18_my_printf/18b_myprintf.c +64 -0
  75. clings-3.0.0/exercises/18_my_printf/README.md +139 -0
  76. clings-3.0.0/exercises/18_my_printf/exercises.toml +100 -0
  77. clings-3.0.0/exercises/18_my_printf/myprintf.c +44 -0
  78. clings-3.0.0/exercises/19_shell_parser/19a_shell_parse.c +38 -0
  79. clings-3.0.0/exercises/19_shell_parser/19b_function_ptr.c +69 -0
  80. clings-3.0.0/exercises/19_shell_parser/19d_shell.c +90 -0
  81. clings-3.0.0/exercises/19_shell_parser/README.md +99 -0
  82. clings-3.0.0/exercises/19_shell_parser/exercises.toml +152 -0
  83. clings-3.0.0/exercises/19_shell_parser/shell.c +88 -0
  84. clings-3.0.0/exercises/20_preprocessor/20a_delcomment.c +63 -0
  85. clings-3.0.0/exercises/20_preprocessor/20b_getword.c +146 -0
  86. clings-3.0.0/exercises/20_preprocessor/20c_expdefine.c +156 -0
  87. clings-3.0.0/exercises/20_preprocessor/README.md +155 -0
  88. clings-3.0.0/exercises/20_preprocessor/delcomment.c +135 -0
  89. clings-3.0.0/exercises/20_preprocessor/delspace.c +78 -0
  90. clings-3.0.0/exercises/20_preprocessor/exercises.toml +125 -0
  91. clings-3.0.0/exercises/20_preprocessor/expdefine.c +58 -0
  92. clings-3.0.0/exercises/20_preprocessor/expif.c +288 -0
  93. clings-3.0.0/exercises/20_preprocessor/log.c +210 -0
  94. clings-3.0.0/exercises/20_preprocessor/state.c +267 -0
  95. clings-3.0.0/exercises/20_preprocessor/t1.c +135 -0
  96. clings-3.0.0/exercises/20_preprocessor/test.c +26 -0
  97. clings-3.0.0/exercises/20_preprocessor/test2.c +16 -0
  98. clings-3.0.0/exercises/21_lexical_analyzer/README.md +75 -0
  99. clings-3.0.0/exercises/21_lexical_analyzer/exercises.toml +38 -0
  100. clings-3.0.0/exercises/21_lexical_analyzer/mylex.c +38 -0
  101. clings-3.0.0/exercises/21_lexical_analyzer/test.c +9 -0
  102. clings-3.0.0/exercises/21_lexical_analyzer/yy_accept.c +18 -0
  103. clings-3.0.0/exercises/21_lexical_analyzer/yy_nxt.c +2407 -0
  104. clings-3.0.0/exercises/22_guess_number/22a_generate.c +38 -0
  105. clings-3.0.0/exercises/22_guess_number/22b_check.c +38 -0
  106. clings-3.0.0/exercises/22_guess_number/README.md +57 -0
  107. clings-3.0.0/exercises/22_guess_number/exercises.toml +123 -0
  108. clings-3.0.0/exercises/22_guess_number/guess.c +63 -0
  109. clings-3.0.0/exercises/23_gomoku_game/23a_print_board.c +38 -0
  110. clings-3.0.0/exercises/23_gomoku_game/23c_check_win.c +48 -0
  111. clings-3.0.0/exercises/23_gomoku_game/README.md +93 -0
  112. clings-3.0.0/exercises/23_gomoku_game/exercises.toml +106 -0
  113. clings-3.0.0/exercises/23_gomoku_game/gomoku.c +69 -0
  114. clings-3.0.0/exercises/24_search_engine/24a_find_istr.c +43 -0
  115. clings-3.0.0/exercises/24_search_engine/24b_extract_links.c +62 -0
  116. clings-3.0.0/exercises/24_search_engine/README.md +48 -0
  117. clings-3.0.0/exercises/24_search_engine/exercises.toml +131 -0
  118. clings-3.0.0/exercises/24_search_engine/search.c +56 -0
  119. clings-3.0.0/exercises/25_file_copy_mycp/Makefile +16 -0
  120. clings-3.0.0/exercises/25_file_copy_mycp/README.md +119 -0
  121. clings-3.0.0/exercises/25_file_copy_mycp/exercises.toml +13 -0
  122. clings-3.0.0/exercises/25_file_copy_mycp/main.c +7 -0
  123. clings-3.0.0/exercises/25_file_copy_mycp/mycp.c +45 -0
  124. clings-3.0.0/exercises/26_elf_header_parser/Makefile +13 -0
  125. clings-3.0.0/exercises/26_elf_header_parser/README.md +127 -0
  126. clings-3.0.0/exercises/26_elf_header_parser/exercises.toml +13 -0
  127. clings-3.0.0/exercises/26_elf_header_parser/main.c +7 -0
  128. clings-3.0.0/exercises/26_elf_header_parser/readelf.c +97 -0
  129. clings-3.0.0/exercises/27_sed_stream_editor/Makefile +22 -0
  130. clings-3.0.0/exercises/27_sed_stream_editor/README.md +59 -0
  131. clings-3.0.0/exercises/27_sed_stream_editor/exercises.toml +13 -0
  132. clings-3.0.0/exercises/27_sed_stream_editor/main.c +7 -0
  133. clings-3.0.0/exercises/27_sed_stream_editor/sed.c +83 -0
  134. clings-3.0.0/exercises/28_math_calculator/Makefile +18 -0
  135. clings-3.0.0/exercises/28_math_calculator/README.md +65 -0
  136. clings-3.0.0/exercises/28_math_calculator/cmd_math.c +141 -0
  137. clings-3.0.0/exercises/28_math_calculator/exercises.toml +13 -0
  138. clings-3.0.0/exercises/28_math_calculator/main.c +7 -0
  139. clings-3.0.0/exercises/29_more_command/Makefile +17 -0
  140. clings-3.0.0/exercises/29_more_command/README.md +39 -0
  141. clings-3.0.0/exercises/29_more_command/cmd_more.c +167 -0
  142. clings-3.0.0/exercises/29_more_command/exercises.toml +13 -0
  143. clings-3.0.0/exercises/29_more_command/main.c +7 -0
  144. clings-3.0.0/exercises/29_more_command/shell.c +81 -0
  145. clings-3.0.0/exercises/30_sort_command/Makefile +20 -0
  146. clings-3.0.0/exercises/30_sort_command/README.md +72 -0
  147. clings-3.0.0/exercises/30_sort_command/cmd_sort.c +124 -0
  148. clings-3.0.0/exercises/30_sort_command/exercises.toml +13 -0
  149. clings-3.0.0/exercises/30_sort_command/main.c +7 -0
  150. clings-3.0.0/exercises/30_sort_command/test.txt +7 -0
  151. clings-3.0.0/exercises/31_ls_command/Makefile +24 -0
  152. clings-3.0.0/exercises/31_ls_command/README.md +77 -0
  153. clings-3.0.0/exercises/31_ls_command/cmd_ll.c +96 -0
  154. clings-3.0.0/exercises/31_ls_command/exercises.toml +13 -0
  155. clings-3.0.0/exercises/31_ls_command/main.c +7 -0
  156. clings-3.0.0/exercises/32_mybash_project/Makefile +14 -0
  157. clings-3.0.0/exercises/32_mybash_project/README.md +162 -0
  158. clings-3.0.0/exercises/32_mybash_project/cmd_ll.c +95 -0
  159. clings-3.0.0/exercises/32_mybash_project/cmd_math.c +141 -0
  160. clings-3.0.0/exercises/32_mybash_project/cmd_more.c +167 -0
  161. clings-3.0.0/exercises/32_mybash_project/cmd_sort.c +124 -0
  162. clings-3.0.0/exercises/32_mybash_project/exercises.toml +13 -0
  163. clings-3.0.0/exercises/32_mybash_project/main.c +7 -0
  164. clings-3.0.0/exercises/32_mybash_project/mycp.c +45 -0
  165. clings-3.0.0/exercises/32_mybash_project/readelf.c +97 -0
  166. clings-3.0.0/exercises/32_mybash_project/sed.c +83 -0
  167. clings-3.0.0/exercises/32_mybash_project/shell.c +89 -0
  168. clings-3.0.0/exercises/32_mybash_project/test.txt +7 -0
  169. clings-3.0.0/exercises/33_singly_linked_list/Makefile +5 -0
  170. clings-3.0.0/exercises/33_singly_linked_list/README.md +105 -0
  171. clings-3.0.0/exercises/33_singly_linked_list/array.c +141 -0
  172. clings-3.0.0/exercises/33_singly_linked_list/array.h +16 -0
  173. clings-3.0.0/exercises/33_singly_linked_list/exercises.toml +13 -0
  174. clings-3.0.0/exercises/33_singly_linked_list/list.c +150 -0
  175. clings-3.0.0/exercises/33_singly_linked_list/list.h +21 -0
  176. clings-3.0.0/exercises/33_singly_linked_list/main.c +7 -0
  177. clings-3.0.0/exercises/34_circular_list_josephus/Makefile +4 -0
  178. clings-3.0.0/exercises/34_circular_list_josephus/README.md +76 -0
  179. clings-3.0.0/exercises/34_circular_list_josephus/clist.c +125 -0
  180. clings-3.0.0/exercises/34_circular_list_josephus/clist.h +23 -0
  181. clings-3.0.0/exercises/34_circular_list_josephus/exercises.toml +13 -0
  182. clings-3.0.0/exercises/34_circular_list_josephus/main.c +7 -0
  183. clings-3.0.0/exercises/35_stack_expression_eval/Makefile +2 -0
  184. clings-3.0.0/exercises/35_stack_expression_eval/README.md +38 -0
  185. clings-3.0.0/exercises/35_stack_expression_eval/exercises.toml +13 -0
  186. clings-3.0.0/exercises/35_stack_expression_eval/stack.c +7 -0
  187. clings-3.0.0/exercises/36_queue_bfs_maze/Makefile +12 -0
  188. clings-3.0.0/exercises/36_queue_bfs_maze/README.md +29 -0
  189. clings-3.0.0/exercises/36_queue_bfs_maze/exercises.toml +13 -0
  190. clings-3.0.0/exercises/36_queue_bfs_maze/queue.c +7 -0
  191. clings-3.0.0/exercises/37_binary_tree_wordfreq/Makefile +7 -0
  192. clings-3.0.0/exercises/37_binary_tree_wordfreq/README.md +29 -0
  193. clings-3.0.0/exercises/37_binary_tree_wordfreq/exercises.toml +13 -0
  194. clings-3.0.0/exercises/37_binary_tree_wordfreq/myparser.c +160 -0
  195. clings-3.0.0/exercises/37_binary_tree_wordfreq/sum_char.c +188 -0
  196. clings-3.0.0/exercises/37_binary_tree_wordfreq/sum_symbol.c +327 -0
  197. clings-3.0.0/exercises/37_binary_tree_wordfreq/sum_word.c +7 -0
  198. clings-3.0.0/exercises/38_heap_sort/Makefile +12 -0
  199. clings-3.0.0/exercises/38_heap_sort/README.md +49 -0
  200. clings-3.0.0/exercises/38_heap_sort/exercises.toml +13 -0
  201. clings-3.0.0/exercises/38_heap_sort/heap.c +7 -0
  202. clings-3.0.0/exercises/39_hash_table_symbol/README.md +18 -0
  203. clings-3.0.0/exercises/39_hash_table_symbol/exercises.toml +13 -0
  204. clings-3.0.0/exercises/39_hash_table_symbol/hash.c +7 -0
  205. clings-3.0.0/exercises/39_hash_table_symbol/in.txt +41 -0
  206. clings-3.0.0/exercises/39_hash_table_symbol/out.txt +93 -0
  207. clings-3.0.0/exercises/40_my_dictionary/Makefile +15 -0
  208. clings-3.0.0/exercises/40_my_dictionary/README.md +183 -0
  209. clings-3.0.0/exercises/40_my_dictionary/dict.c +7 -0
  210. clings-3.0.0/exercises/40_my_dictionary/exercises.toml +13 -0
  211. clings-3.0.0/exercises/41_binary_search/Makefile +12 -0
  212. clings-3.0.0/exercises/41_binary_search/README.md +70 -0
  213. clings-3.0.0/exercises/41_binary_search/bsearch.c +7 -0
  214. clings-3.0.0/exercises/41_binary_search/exercises.toml +13 -0
  215. clings-3.0.0/exercises/42_quicksort/Makefile +12 -0
  216. clings-3.0.0/exercises/42_quicksort/README.md +99 -0
  217. clings-3.0.0/exercises/42_quicksort/exercises.toml +13 -0
  218. clings-3.0.0/exercises/42_quicksort/qsort.c +7 -0
  219. clings-3.0.0/exercises/43_backtrack_dfs_maze/README.md +13 -0
  220. clings-3.0.0/exercises/43_backtrack_dfs_maze/backtrack.c +238 -0
  221. clings-3.0.0/exercises/43_backtrack_dfs_maze/exercises.toml +13 -0
  222. clings-3.0.0/exercises/43_backtrack_dfs_maze/maze.c +7 -0
  223. clings-3.0.0/exercises/44_kmp_string_match/Makefile +12 -0
  224. clings-3.0.0/exercises/44_kmp_string_match/README.md +18 -0
  225. clings-3.0.0/exercises/44_kmp_string_match/exercises.toml +13 -0
  226. clings-3.0.0/exercises/44_kmp_string_match/kmp.c +7 -0
  227. clings-3.0.0/exercises/45_lcs_dynamic_programming/Makefile +12 -0
  228. clings-3.0.0/exercises/45_lcs_dynamic_programming/README.md +37 -0
  229. clings-3.0.0/exercises/45_lcs_dynamic_programming/dp.c +7 -0
  230. clings-3.0.0/exercises/45_lcs_dynamic_programming/exercises.toml +13 -0
  231. clings-3.0.0/exercises/46_dijkstra_shortest_path/Makefile +12 -0
  232. clings-3.0.0/exercises/46_dijkstra_shortest_path/README.md +26 -0
  233. clings-3.0.0/exercises/46_dijkstra_shortest_path/d2.c +90 -0
  234. clings-3.0.0/exercises/46_dijkstra_shortest_path/d3.c +95 -0
  235. clings-3.0.0/exercises/46_dijkstra_shortest_path/dijkstra.c +7 -0
  236. clings-3.0.0/exercises/46_dijkstra_shortest_path/exercises.toml +13 -0
  237. clings-3.0.0/exercises/47_huffman_coding/Makefile +12 -0
  238. clings-3.0.0/exercises/47_huffman_coding/README.md +24 -0
  239. clings-3.0.0/exercises/47_huffman_coding/exercises.toml +13 -0
  240. clings-3.0.0/exercises/47_huffman_coding/huffman.c +7 -0
  241. clings-3.0.0/exercises/48_gps_navigation/Makefile +12 -0
  242. clings-3.0.0/exercises/48_gps_navigation/README.md +17 -0
  243. clings-3.0.0/exercises/48_gps_navigation/exercises.toml +15 -0
  244. clings-3.0.0/exercises/48_gps_navigation/gps.c +7 -0
  245. clings-3.0.0/exercises/48_gps_navigation/map.txt +58 -0
  246. clings-3.0.0/exercises/49_strip_comments_fsm/Makefile +18 -0
  247. clings-3.0.0/exercises/49_strip_comments_fsm/README.md +60 -0
  248. clings-3.0.0/exercises/49_strip_comments_fsm/exercises.toml +13 -0
  249. clings-3.0.0/exercises/49_strip_comments_fsm/strip_comments.c +7 -0
  250. clings-3.0.0/exercises/50_regex_matcher/Makefile +15 -0
  251. clings-3.0.0/exercises/50_regex_matcher/README.md +53 -0
  252. clings-3.0.0/exercises/50_regex_matcher/exercises.toml +13 -0
  253. clings-3.0.0/exercises/50_regex_matcher/regex.c +7 -0
  254. clings-3.0.0/exercises/51_rle_compression/Makefile +15 -0
  255. clings-3.0.0/exercises/51_rle_compression/README.md +46 -0
  256. clings-3.0.0/exercises/51_rle_compression/exercises.toml +13 -0
  257. clings-3.0.0/exercises/51_rle_compression/rle.c +7 -0
  258. clings-3.0.0/exercises/52_lz77_compression/Makefile +15 -0
  259. clings-3.0.0/exercises/52_lz77_compression/README.md +46 -0
  260. clings-3.0.0/exercises/52_lz77_compression/exercises.toml +13 -0
  261. clings-3.0.0/exercises/52_lz77_compression/lz77.c +7 -0
  262. clings-3.0.0/exercises/53_base64_codec/Makefile +15 -0
  263. clings-3.0.0/exercises/53_base64_codec/README.md +42 -0
  264. clings-3.0.0/exercises/53_base64_codec/base64.c +7 -0
  265. clings-3.0.0/exercises/53_base64_codec/exercises.toml +13 -0
  266. clings-3.0.0/exercises/54_json_parser/Makefile +15 -0
  267. clings-3.0.0/exercises/54_json_parser/README.md +48 -0
  268. clings-3.0.0/exercises/54_json_parser/exercises.toml +13 -0
  269. clings-3.0.0/exercises/54_json_parser/json_parser.c +7 -0
  270. clings-3.0.0/exercises/55_memory_allocator/Makefile +15 -0
  271. clings-3.0.0/exercises/55_memory_allocator/README.md +56 -0
  272. clings-3.0.0/exercises/55_memory_allocator/exercises.toml +13 -0
  273. clings-3.0.0/exercises/55_memory_allocator/mymalloc.c +7 -0
  274. clings-3.0.0/exercises/56_coroutine/Makefile +15 -0
  275. clings-3.0.0/exercises/56_coroutine/README.md +55 -0
  276. clings-3.0.0/exercises/56_coroutine/coroutine.c +7 -0
  277. clings-3.0.0/exercises/56_coroutine/exercises.toml +13 -0
  278. clings-3.0.0/exercises/57_tcp_echo_server/Makefile +16 -0
  279. clings-3.0.0/exercises/57_tcp_echo_server/README.md +51 -0
  280. clings-3.0.0/exercises/57_tcp_echo_server/echo_server.c +7 -0
  281. clings-3.0.0/exercises/57_tcp_echo_server/exercises.toml +13 -0
  282. clings-3.0.0/exercises/58_http_server/Makefile +16 -0
  283. clings-3.0.0/exercises/58_http_server/README.md +46 -0
  284. clings-3.0.0/exercises/58_http_server/exercises.toml +13 -0
  285. clings-3.0.0/exercises/58_http_server/http_server.c +7 -0
  286. clings-3.0.0/exercises/58_http_server/index.html +12 -0
  287. clings-3.0.0/exercises/59_signal_handler/Makefile +15 -0
  288. clings-3.0.0/exercises/59_signal_handler/README.md +55 -0
  289. clings-3.0.0/exercises/59_signal_handler/exercises.toml +14 -0
  290. clings-3.0.0/exercises/59_signal_handler/watchdog.c +7 -0
  291. clings-3.0.0/exercises/60_mini_shell/Makefile +17 -0
  292. clings-3.0.0/exercises/60_mini_shell/README.md +52 -0
  293. clings-3.0.0/exercises/60_mini_shell/exercises.toml +13 -0
  294. clings-3.0.0/exercises/60_mini_shell/minishell2.c +7 -0
  295. clings-3.0.0/exercises/61_riscv_assembly/Makefile +27 -0
  296. clings-3.0.0/exercises/61_riscv_assembly/README.md +109 -0
  297. clings-3.0.0/exercises/61_riscv_assembly/exercises.toml +14 -0
  298. clings-3.0.0/exercises/61_riscv_assembly/fact.s +39 -0
  299. clings-3.0.0/exercises/61_riscv_assembly/return42.s +10 -0
  300. clings-3.0.0/exercises/61_riscv_assembly/sum100.s +19 -0
  301. clings-3.0.0/exercises/62_instruction_encoder/Makefile +15 -0
  302. clings-3.0.0/exercises/62_instruction_encoder/README.md +51 -0
  303. clings-3.0.0/exercises/62_instruction_encoder/exercises.toml +13 -0
  304. clings-3.0.0/exercises/62_instruction_encoder/rv_encoder.c +7 -0
  305. clings-3.0.0/exercises/63_disassembler/Makefile +18 -0
  306. clings-3.0.0/exercises/63_disassembler/README.md +37 -0
  307. clings-3.0.0/exercises/63_disassembler/exercises.toml +13 -0
  308. clings-3.0.0/exercises/63_disassembler/rv_disasm.c +7 -0
  309. clings-3.0.0/exercises/64_assembler/Makefile +18 -0
  310. clings-3.0.0/exercises/64_assembler/README.md +37 -0
  311. clings-3.0.0/exercises/64_assembler/exercises.toml +13 -0
  312. clings-3.0.0/exercises/64_assembler/rv_asm.c +7 -0
  313. clings-3.0.0/exercises/64_assembler/test.s +6 -0
  314. clings-3.0.0/exercises/65_elf_generator/Makefile +21 -0
  315. clings-3.0.0/exercises/65_elf_generator/README.md +36 -0
  316. clings-3.0.0/exercises/65_elf_generator/elf_gen.c +7 -0
  317. clings-3.0.0/exercises/65_elf_generator/exercises.toml +13 -0
  318. clings-3.0.0/exercises/66_toolchain_project/Makefile +59 -0
  319. clings-3.0.0/exercises/66_toolchain_project/README.md +42 -0
  320. clings-3.0.0/exercises/66_toolchain_project/exercises.toml +14 -0
  321. clings-3.0.0/exercises/67_c_tokenizer/Makefile +15 -0
  322. clings-3.0.0/exercises/67_c_tokenizer/README.md +43 -0
  323. clings-3.0.0/exercises/67_c_tokenizer/exercises.toml +13 -0
  324. clings-3.0.0/exercises/67_c_tokenizer/test.c +9 -0
  325. clings-3.0.0/exercises/67_c_tokenizer/tokenizer.c +7 -0
  326. clings-3.0.0/exercises/68_expression_parser/Makefile +16 -0
  327. clings-3.0.0/exercises/68_expression_parser/README.md +39 -0
  328. clings-3.0.0/exercises/68_expression_parser/exercises.toml +13 -0
  329. clings-3.0.0/exercises/68_expression_parser/expr_parser.c +7 -0
  330. clings-3.0.0/exercises/69_ast_builder/Makefile +15 -0
  331. clings-3.0.0/exercises/69_ast_builder/README.md +38 -0
  332. clings-3.0.0/exercises/69_ast_builder/ast_builder.c +7 -0
  333. clings-3.0.0/exercises/69_ast_builder/exercises.toml +13 -0
  334. clings-3.0.0/exercises/69_ast_builder/test.c +9 -0
  335. clings-3.0.0/exercises/70_stack_vm/Makefile +15 -0
  336. clings-3.0.0/exercises/70_stack_vm/README.md +41 -0
  337. clings-3.0.0/exercises/70_stack_vm/exercises.toml +13 -0
  338. clings-3.0.0/exercises/70_stack_vm/stack_vm.c +7 -0
  339. clings-3.0.0/exercises/71_tree_interpreter/Makefile +15 -0
  340. clings-3.0.0/exercises/71_tree_interpreter/README.md +41 -0
  341. clings-3.0.0/exercises/71_tree_interpreter/exercises.toml +13 -0
  342. clings-3.0.0/exercises/71_tree_interpreter/interpreter.c +7 -0
  343. clings-3.0.0/exercises/71_tree_interpreter/test.c +13 -0
  344. clings-3.0.0/exercises/72_mini_language/Makefile +21 -0
  345. clings-3.0.0/exercises/72_mini_language/README.md +62 -0
  346. clings-3.0.0/exercises/72_mini_language/exercises.toml +13 -0
  347. clings-3.0.0/exercises/72_mini_language/minilang.c +7 -0
  348. clings-3.0.0/exercises/lessons/73_return_constant/README.md +47 -0
  349. clings-3.0.0/exercises/lessons/73_return_constant/test_return.c +2 -0
  350. clings-3.0.0/exercises/lessons/74_unary_operators/README.md +35 -0
  351. clings-3.0.0/exercises/lessons/74_unary_operators/test_unary.c +2 -0
  352. clings-3.0.0/exercises/lessons/75_binary_arithmetic/README.md +38 -0
  353. clings-3.0.0/exercises/lessons/75_binary_arithmetic/test_arith.c +2 -0
  354. clings-3.0.0/exercises/lessons/76_comparison_logic/README.md +45 -0
  355. clings-3.0.0/exercises/lessons/76_comparison_logic/test_cmp.c +2 -0
  356. clings-3.0.0/exercises/lessons/77_local_variables/README.md +74 -0
  357. clings-3.0.0/exercises/lessons/77_local_variables/test_var.c +6 -0
  358. clings-3.0.0/exercises/lessons/78_assignment/README.md +56 -0
  359. clings-3.0.0/exercises/lessons/78_assignment/test_assign.c +7 -0
  360. clings-3.0.0/exercises/lessons/79_if_else/README.md +54 -0
  361. clings-3.0.0/exercises/lessons/79_if_else/test_if.c +9 -0
  362. clings-3.0.0/exercises/lessons/80_while_for/README.md +64 -0
  363. clings-3.0.0/exercises/lessons/80_while_for/test_for.c +8 -0
  364. clings-3.0.0/exercises/lessons/81_do_while_break/README.md +58 -0
  365. clings-3.0.0/exercises/lessons/81_do_while_break/test_dowhile.c +10 -0
  366. clings-3.0.0/exercises/lessons/82_function_definitions/README.md +68 -0
  367. clings-3.0.0/exercises/lessons/82_function_definitions/test_func.c +8 -0
  368. clings-3.0.0/exercises/lessons/83_function_parameters/README.md +67 -0
  369. clings-3.0.0/exercises/lessons/83_function_parameters/test_func.c +8 -0
  370. clings-3.0.0/exercises/lessons/84_recursive_programs/README.md +57 -0
  371. clings-3.0.0/exercises/lessons/84_recursive_programs/test_recurse.c +9 -0
  372. clings-3.0.0/exercises/lessons/85_global_variables/README.md +61 -0
  373. clings-3.0.0/exercises/lessons/85_global_variables/test_global.c +8 -0
  374. clings-3.0.0/exercises/lessons/86_char_strings/README.md +58 -0
  375. clings-3.0.0/exercises/lessons/86_char_strings/test_char.c +6 -0
  376. clings-3.0.0/exercises/lessons/87_arrays/README.md +58 -0
  377. clings-3.0.0/exercises/lessons/87_arrays/test_array.c +10 -0
  378. clings-3.0.0/exercises/lessons/88_pointers/README.md +57 -0
  379. clings-3.0.0/exercises/lessons/88_pointers/test_pointer.c +7 -0
  380. clings-3.0.0/exercises/lessons/89_pointer_arithmetic/README.md +56 -0
  381. clings-3.0.0/exercises/lessons/89_pointer_arithmetic/test_ptr_arith.c +17 -0
  382. clings-3.0.0/exercises/lessons/89_pointer_arithmetic/test_ptr_neg.c +18 -0
  383. clings-3.0.0/exercises/lessons/90_bubble_sort/README.md +57 -0
  384. clings-3.0.0/exercises/lessons/90_bubble_sort/test_bubble.c +24 -0
  385. clings-3.0.0/exercises/lessons/91_struct_support/README.md +57 -0
  386. clings-3.0.0/exercises/lessons/91_struct_support/test_struct.c +19 -0
  387. clings-3.0.0/exercises/lessons/92_preprocessor/README.md +59 -0
  388. clings-3.0.0/exercises/lessons/92_preprocessor/test_define.c +9 -0
  389. clings-3.0.0/exercises/lessons/93_stdlib_stubs/README.md +74 -0
  390. clings-3.0.0/exercises/lessons/94_arm_backend/README.md +67 -0
  391. clings-3.0.0/exercises/lessons/95_cross_compilation/README.md +67 -0
  392. clings-3.0.0/exercises/lessons/96_josephus_ring_final/README.md +84 -0
  393. clings-3.0.0/exercises/lessons/96_josephus_ring_final/test_josephus.c +35 -0
  394. clings-3.0.0/exercises/nccl-cc/Makefile +54 -0
  395. clings-3.0.0/exercises/nccl-cc/README.md +148 -0
  396. clings-3.0.0/exercises/nccl-cc/bare_rv.ld +33 -0
  397. clings-3.0.0/exercises/nccl-cc/codegen_a64.c +611 -0
  398. clings-3.0.0/exercises/nccl-cc/codegen_arm.c +603 -0
  399. clings-3.0.0/exercises/nccl-cc/codegen_rv.c +553 -0
  400. clings-3.0.0/exercises/nccl-cc/codegen_x86.c +616 -0
  401. clings-3.0.0/exercises/nccl-cc/debug.c +160 -0
  402. clings-3.0.0/exercises/nccl-cc/exercises.toml +359 -0
  403. clings-3.0.0/exercises/nccl-cc/fuzz/gen_prog.c +429 -0
  404. clings-3.0.0/exercises/nccl-cc/fuzz/run_fuzz.sh +111 -0
  405. clings-3.0.0/exercises/nccl-cc/main.c +9 -0
  406. clings-3.0.0/exercises/nccl-cc/nccl_cc.h +233 -0
  407. clings-3.0.0/exercises/nccl-cc/parse.c +1250 -0
  408. clings-3.0.0/exercises/nccl-cc/preprocess.c +331 -0
  409. clings-3.0.0/exercises/nccl-cc/runtime_a64.s +147 -0
  410. clings-3.0.0/exercises/nccl-cc/runtime_arm.s +138 -0
  411. clings-3.0.0/exercises/nccl-cc/runtime_rv.s +34 -0
  412. clings-3.0.0/exercises/nccl-cc/runtime_rv_bare.s +58 -0
  413. clings-3.0.0/exercises/nccl-cc/runtime_rv_io.s +141 -0
  414. clings-3.0.0/exercises/nccl-cc/runtime_x86.s +181 -0
  415. clings-3.0.0/exercises/nccl-cc/test/backends.sh +81 -0
  416. clings-3.0.0/exercises/nccl-cc/test/invalid/bad_token.c +4 -0
  417. clings-3.0.0/exercises/nccl-cc/test/invalid/missing_paren.c +9 -0
  418. clings-3.0.0/exercises/nccl-cc/test/invalid/missing_semicolon.c +5 -0
  419. clings-3.0.0/exercises/nccl-cc/test/invalid/unclosed_brace.c +5 -0
  420. clings-3.0.0/exercises/nccl-cc/test/run_tests.sh +101 -0
  421. clings-3.0.0/exercises/nccl-cc/test/test_arith.c +2 -0
  422. clings-3.0.0/exercises/nccl-cc/test/test_array.c +10 -0
  423. clings-3.0.0/exercises/nccl-cc/test/test_assign.c +7 -0
  424. clings-3.0.0/exercises/nccl-cc/test/test_bigframe.c +29 -0
  425. clings-3.0.0/exercises/nccl-cc/test/test_bitwise.c +43 -0
  426. clings-3.0.0/exercises/nccl-cc/test/test_bubble.c +24 -0
  427. clings-3.0.0/exercises/nccl-cc/test/test_cast.c +8 -0
  428. clings-3.0.0/exercises/nccl-cc/test/test_char.c +6 -0
  429. clings-3.0.0/exercises/nccl-cc/test/test_char_ptr.c +12 -0
  430. clings-3.0.0/exercises/nccl-cc/test/test_cmp.c +2 -0
  431. clings-3.0.0/exercises/nccl-cc/test/test_define.c +9 -0
  432. clings-3.0.0/exercises/nccl-cc/test/test_dowhile.c +10 -0
  433. clings-3.0.0/exercises/nccl-cc/test/test_enum.c +18 -0
  434. clings-3.0.0/exercises/nccl-cc/test/test_fib.c +9 -0
  435. clings-3.0.0/exercises/nccl-cc/test/test_for.c +8 -0
  436. clings-3.0.0/exercises/nccl-cc/test/test_func.c +8 -0
  437. clings-3.0.0/exercises/nccl-cc/test/test_global.c +8 -0
  438. clings-3.0.0/exercises/nccl-cc/test/test_if.c +9 -0
  439. clings-3.0.0/exercises/nccl-cc/test/test_incdec.c +18 -0
  440. clings-3.0.0/exercises/nccl-cc/test/test_init.c +23 -0
  441. clings-3.0.0/exercises/nccl-cc/test/test_josephus.c +35 -0
  442. clings-3.0.0/exercises/nccl-cc/test/test_loop.c +10 -0
  443. clings-3.0.0/exercises/nccl-cc/test/test_lvalue_once.c +25 -0
  444. clings-3.0.0/exercises/nccl-cc/test/test_pointer.c +7 -0
  445. clings-3.0.0/exercises/nccl-cc/test/test_ptr_arith.c +17 -0
  446. clings-3.0.0/exercises/nccl-cc/test/test_ptr_neg.c +18 -0
  447. clings-3.0.0/exercises/nccl-cc/test/test_ptrptr.c +10 -0
  448. clings-3.0.0/exercises/nccl-cc/test/test_recurse.c +9 -0
  449. clings-3.0.0/exercises/nccl-cc/test/test_return.c +2 -0
  450. clings-3.0.0/exercises/nccl-cc/test/test_sizeof.c +15 -0
  451. clings-3.0.0/exercises/nccl-cc/test/test_string.c +10 -0
  452. clings-3.0.0/exercises/nccl-cc/test/test_struct.c +19 -0
  453. clings-3.0.0/exercises/nccl-cc/test/test_switch.c +26 -0
  454. clings-3.0.0/exercises/nccl-cc/test/test_ternary.c +10 -0
  455. clings-3.0.0/exercises/nccl-cc/test/test_unary.c +2 -0
  456. clings-3.0.0/exercises/nccl-cc/test/test_var.c +6 -0
  457. clings-3.0.0/exercises/nccl-cc/tokenize.c +279 -0
  458. clings-3.0.0/exercises/nccl-cc/type.c +295 -0
  459. clings-3.0.0/pyproject.toml +38 -0
@@ -0,0 +1,8 @@
1
+ __pycache__/
2
+ dist/
3
+ *.egg-info/
4
+ .clings/
5
+ .clings-state.txt
6
+ *.exe
7
+ *.o
8
+ *.out
clings-3.0.0/PKG-INFO ADDED
@@ -0,0 +1,95 @@
1
+ Metadata-Version: 2.4
2
+ Name: clings
3
+ Version: 3.0.0
4
+ Summary: Rustlings-style C exercises CLI for OpenCamp C 2026 Summer
5
+ Project-URL: Homepage, https://cnb.cool/q.qq/opencamp-c-2026-summer/clings.cli
6
+ Project-URL: Repository, https://cnb.cool/q.qq/opencamp-c-2026-summer/clings.cli
7
+ Author: OpenCamp C Team
8
+ License-Expression: MIT
9
+ Keywords: c,exercises,learning,rustlings
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Education
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Topic :: Education
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+
21
+ # Clings — C 语言练习系统 CLI
22
+
23
+ > **C 语言版 [Rustlings](https://github.com/rust-lang/rustlings)**:通过修复编译错误、补全代码来学习 C 语言。
24
+ > 配套 [OpenCamp C 2026 Summer](https://cnb.cool/q.qq/opencamp-c-2026-summer) 课程 Unit 1–4,共 **121 道练习**。
25
+
26
+ ## 分支说明
27
+
28
+ | 分支 | 用途 |
29
+ | ---------------------- | ---------------------------------------------------- |
30
+ | **cli** (本分支, 默认) | CLI 工具源码 + 练习数据,CI 自动发布 pip 包 |
31
+ | main | 练习仓库 (学生 clone 用,已废弃,改用 `clings init`) |
32
+
33
+ ## 快速开始
34
+
35
+ ```sh
36
+ # 1. 安装
37
+ pip install clings --index-url https://pypi.cnb.cool/q.qq/opencamp-c-2026-summer/clings-cli/-/packages/simple
38
+
39
+ # 2. 初始化练习 (在任意空目录)
40
+ mkdir my-c-exercises && cd my-c-exercises
41
+ clings init unit1 # 释放 Unit 1 (24课49题)
42
+
43
+ # 3. 开始做题!
44
+ clings # 进入交互式 watch 模式
45
+ ```
46
+
47
+ ## 命令参考
48
+
49
+ ```sh
50
+ clings # 直接进入 watch 模式 (默认)
51
+ clings init [unit1|...|all] # 初始化练习 (从包内释放到当前目录)
52
+ clings watch [selector] # 交互式 watch (保存即验证)
53
+ clings run [exercise] # 运行练习 (省略=下一道, 'random'=随机)
54
+ clings hint [exercise] # 查看提示 (省略=下一道)
55
+ clings list [selector] # 列出练习 + ✔/• 进度状态
56
+ clings check [selector] # 批量验证
57
+ clings reset <exercise> # 重置练习文件
58
+ clings reset progress # 清除全部进度
59
+ clings doctor # 检查环境
60
+ ```
61
+
62
+ ## 开发
63
+
64
+ ```sh
65
+ git clone https://cnb.cool/q.qq/opencamp-c-2026-summer/clings.git
66
+ cd clings/ # 默认在 cli 分支
67
+ pip install -e .
68
+ clings check unit1 --solutions # 验证 49/49
69
+ ```
70
+
71
+ ## CI/CD
72
+
73
+ push 到 `cli` 分支自动触发:
74
+
75
+ 1. **Install & Test**: pip install → clings init all → check unit1 --solutions
76
+ 2. **Build & Publish**: python -m build → twine upload 到 CNB PyPI 制品库
77
+
78
+ ## 架构
79
+
80
+ ```
81
+ clings/ (cli 分支)
82
+ ├── clings.py # CLI 核心 (单文件, 零依赖, Python 3.11+)
83
+ ├── pyproject.toml # pip 打包 (exercises/ 嵌入 wheel)
84
+ ├── clings.toml # units 配置
85
+ ├── .cnb.yml # CI: cli 分支 push → test → publish
86
+ ├── Dockerfile.ci # Ubuntu 24.04 CI 环境
87
+ ├── exercises/ # 121 道练习 (嵌入 pip 包, clings init 释放)
88
+ │ ├── 01_simplest_c_program/
89
+ │ │ ├── exercises.toml # 练习元数据 + 测试用例
90
+ │ │ ├── *.c # 学生源码模板
91
+ │ │ └── README.md # 课程参考
92
+ │ └── ...
93
+ ├── solutions/ # Unit 1 参考答案 (CI 测试用, 不打包)
94
+ └── tools/ # 维护脚本
95
+ ```
clings-3.0.0/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # Clings — C 语言练习系统 CLI
2
+
3
+ > **C 语言版 [Rustlings](https://github.com/rust-lang/rustlings)**:通过修复编译错误、补全代码来学习 C 语言。
4
+ > 配套 [OpenCamp C 2026 Summer](https://cnb.cool/q.qq/opencamp-c-2026-summer) 课程 Unit 1–4,共 **121 道练习**。
5
+
6
+ ## 分支说明
7
+
8
+ | 分支 | 用途 |
9
+ | ---------------------- | ---------------------------------------------------- |
10
+ | **cli** (本分支, 默认) | CLI 工具源码 + 练习数据,CI 自动发布 pip 包 |
11
+ | main | 练习仓库 (学生 clone 用,已废弃,改用 `clings init`) |
12
+
13
+ ## 快速开始
14
+
15
+ ```sh
16
+ # 1. 安装
17
+ pip install clings --index-url https://pypi.cnb.cool/q.qq/opencamp-c-2026-summer/clings-cli/-/packages/simple
18
+
19
+ # 2. 初始化练习 (在任意空目录)
20
+ mkdir my-c-exercises && cd my-c-exercises
21
+ clings init unit1 # 释放 Unit 1 (24课49题)
22
+
23
+ # 3. 开始做题!
24
+ clings # 进入交互式 watch 模式
25
+ ```
26
+
27
+ ## 命令参考
28
+
29
+ ```sh
30
+ clings # 直接进入 watch 模式 (默认)
31
+ clings init [unit1|...|all] # 初始化练习 (从包内释放到当前目录)
32
+ clings watch [selector] # 交互式 watch (保存即验证)
33
+ clings run [exercise] # 运行练习 (省略=下一道, 'random'=随机)
34
+ clings hint [exercise] # 查看提示 (省略=下一道)
35
+ clings list [selector] # 列出练习 + ✔/• 进度状态
36
+ clings check [selector] # 批量验证
37
+ clings reset <exercise> # 重置练习文件
38
+ clings reset progress # 清除全部进度
39
+ clings doctor # 检查环境
40
+ ```
41
+
42
+ ## 开发
43
+
44
+ ```sh
45
+ git clone https://cnb.cool/q.qq/opencamp-c-2026-summer/clings.git
46
+ cd clings/ # 默认在 cli 分支
47
+ pip install -e .
48
+ clings check unit1 --solutions # 验证 49/49
49
+ ```
50
+
51
+ ## CI/CD
52
+
53
+ push 到 `cli` 分支自动触发:
54
+
55
+ 1. **Install & Test**: pip install → clings init all → check unit1 --solutions
56
+ 2. **Build & Publish**: python -m build → twine upload 到 CNB PyPI 制品库
57
+
58
+ ## 架构
59
+
60
+ ```
61
+ clings/ (cli 分支)
62
+ ├── clings.py # CLI 核心 (单文件, 零依赖, Python 3.11+)
63
+ ├── pyproject.toml # pip 打包 (exercises/ 嵌入 wheel)
64
+ ├── clings.toml # units 配置
65
+ ├── .cnb.yml # CI: cli 分支 push → test → publish
66
+ ├── Dockerfile.ci # Ubuntu 24.04 CI 环境
67
+ ├── exercises/ # 121 道练习 (嵌入 pip 包, clings init 释放)
68
+ │ ├── 01_simplest_c_program/
69
+ │ │ ├── exercises.toml # 练习元数据 + 测试用例
70
+ │ │ ├── *.c # 学生源码模板
71
+ │ │ └── README.md # 课程参考
72
+ │ └── ...
73
+ ├── solutions/ # Unit 1 参考答案 (CI 测试用, 不打包)
74
+ └── tools/ # 维护脚本
75
+ ```