Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #156943 > unrolled thread
| Started by | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| First post | 2020-12-05 08:25 -0800 |
| Last post | 2021-01-06 23:07 -0800 |
| Articles | 20 on this page of 399 — 24 participants |
Back to article view | Back to comp.lang.c
Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-05 08:25 -0800
Re: Programming exercise/challenge Sjouke Burry <burrynulnulfour@ppllaanneett.nnll> - 2020-12-05 17:33 +0100
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-06 11:58 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-30 09:40 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-30 18:20 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-31 01:04 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-02 22:05 +0300
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-02 14:48 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-02 19:17 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-02 19:04 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-30 21:44 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-31 02:54 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-03 09:49 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-04 00:15 +0300
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-03 21:57 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-03 23:00 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-04 00:00 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-04 20:04 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-05 07:15 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-07 22:30 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-04 18:42 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-04 21:23 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-04 23:41 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 16:39 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 16:58 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 17:08 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-05 17:11 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 17:24 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-05 17:52 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 18:30 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-05 19:56 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-06 14:51 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-05 17:49 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 18:34 +0000
Re: Programming exercise/challenge Bonita Montero <Bonita.Montero@gmail.com> - 2020-12-05 19:40 +0100
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 18:47 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-05 23:19 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-05 23:56 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-08 02:26 +0000
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-08 16:04 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:39 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-12 23:34 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 19:28 -0800
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-29 10:34 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-29 20:05 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-06 06:03 -0800
Re: Programming exercise/challenge dfs <nospam@dfs.com> - 2020-12-05 13:58 -0500
Re: Programming exercise/challenge Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-12-05 21:37 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-06 06:13 -0800
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-06 18:00 +0100
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-06 12:31 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-06 06:26 -0800
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-05 23:32 +0100
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-06 17:18 +0100
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-06 17:51 +0100
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-06 22:27 +0000
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-07 09:37 +0100
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-07 07:36 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 22:49 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-06 17:51 +0000
Re: Programming exercise/challenge dfs <nospam@dfs.com> - 2020-12-06 13:03 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-06 23:53 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-06 19:53 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-06 23:38 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-07 00:17 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 02:09 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-07 01:03 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 12:05 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-07 12:25 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 13:33 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-07 14:18 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-07 14:31 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-07 12:58 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:03 -0800
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-07 07:12 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 21:55 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 22:59 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 22:55 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 07:45 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 11:26 -0800
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-12-24 12:24 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-24 17:19 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-27 05:16 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-27 04:17 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-27 08:27 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-29 19:18 -0800
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-07 05:15 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 13:42 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 22:53 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 01:49 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-10 22:35 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 21:17 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-12 21:44 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 19:46 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-13 12:21 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 11:35 -0800
Re: Programming exercise/challenge Rosario19 <Ros@invalid.invalid> - 2020-12-31 00:46 +0100
Re: Programming exercise/challenge Rosario19 <Ros@invalid.invalid> - 2020-12-31 00:52 +0100
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-31 00:34 -0800
Re: Programming exercise/challenge Rosario19 <Ros@invalid.invalid> - 2021-01-01 08:23 +0100
Re: Programming exercise/challenge Rosario19 <Ros@invalid.invalid> - 2021-01-01 10:09 +0100
Re: Programming exercise/challenge Rosario19 <Ros@invalid.invalid> - 2021-01-01 11:38 +0100
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-01 08:24 -0800
Re: Programming exercise/challenge "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2020-12-07 07:03 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-08 02:16 +0300
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 02:39 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:18 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:17 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-08 00:27 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:20 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-07 13:44 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-07 14:01 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-07 22:16 +0000
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-07 15:10 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-08 01:07 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-08 00:34 +0000
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-08 18:17 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-09 00:56 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 02:30 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-09 15:14 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-09 15:44 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-12 23:56 +0300
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-12 13:29 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 00:46 +0300
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-12 13:59 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 14:17 +0300
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-13 12:58 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-13 20:57 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-14 20:44 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-23 11:15 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-23 23:45 +0300
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-23 21:36 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-24 09:11 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 15:30 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-24 23:18 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-24 23:56 -0800
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2020-12-28 12:01 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-29 19:31 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 14:47 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-08 01:59 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:26 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-07 19:02 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-08 01:15 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-07 20:38 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-08 02:19 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-08 11:44 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-08 07:32 -0500
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-08 14:40 +0000
Re: Programming exercise/challenge "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2020-12-08 06:52 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-08 17:31 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-08 20:16 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-08 20:48 +0000
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-08 15:34 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 02:54 +0300
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 12:33 +0300
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 12:43 +0300
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-09 01:52 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 00:28 +0300
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-12 21:40 +0000
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-12 13:48 -0800
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-09 01:46 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:29 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-08 10:45 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-08 17:16 +0000
Re: Programming exercise/challenge "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2020-12-08 06:39 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-07 17:48 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-07 21:03 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 03:02 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 08:02 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-09 16:49 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 13:33 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-09 19:57 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-10 01:45 +0000
Re: Programming exercise/challenge Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-12-10 02:15 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 11:24 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 21:57 -0500
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-10 03:32 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-10 08:19 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 11:04 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-24 19:34 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-08 02:22 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 03:04 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-09 11:59 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 08:11 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 00:02 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-10 15:12 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 10:36 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-10 22:11 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-10 23:34 +0000
Re: Programming exercise/challenge "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2020-12-10 20:11 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 21:06 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 03:03 +0300
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-08 21:21 -0500
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 12:50 +0300
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2020-12-09 08:16 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-08 23:32 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-09 12:21 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-02 19:15 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-07 01:54 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-22 22:36 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-22 23:07 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-22 20:27 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-23 13:05 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 07:45 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-23 16:49 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 11:22 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-23 16:53 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 09:55 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 21:35 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-24 18:17 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 07:57 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 11:28 -0800
Re: Programming exercise/challenge "jfbod...@gmail.com" <jfbode1029@gmail.com> - 2020-12-08 11:30 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-08 20:31 +0000
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-08 22:17 +0100
Re: Programming exercise/challenge jacobnavia <jacob@jacob.remcomp.fr> - 2020-12-08 22:15 +0100
Re: Programming exercise/challenge "jfbod...@gmail.com" <jfbode1029@gmail.com> - 2020-12-08 13:28 -0800
Re: Programming exercise/challenge "jfbod...@gmail.com" <jfbode1029@gmail.com> - 2020-12-09 12:05 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 00:04 +0300
Re: Programming exercise/challenge Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-12-08 21:38 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 03:25 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-09 01:00 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-09 03:09 +0000
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 00:35 +0300
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-12 22:57 +0000
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-12 23:43 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 19:47 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 23:27 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-12-13 14:44 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 11:47 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 03:36 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-09 14:51 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 11:35 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-10 02:33 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 00:05 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-10 14:59 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-10 20:32 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-12 23:45 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 19:24 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-13 00:17 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-12 19:23 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2020-12-09 19:31 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 12:01 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-09 12:25 -0800
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-23 01:00 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-24 14:34 -0800
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-26 23:03 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-27 06:29 -0800
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-28 11:52 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-29 00:38 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-28 15:29 +0300
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-28 17:12 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-28 23:54 -0800
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-29 10:26 -0600
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-29 10:37 -0600
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-29 19:59 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-12-30 09:17 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2020-12-31 16:54 +0300
Re: Programming exercise/challenge kegs@provalid.com (Kent Dickey) - 2020-12-31 09:16 -0600
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2020-12-31 15:56 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-07 02:41 -0800
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-12-31 13:01 -0800
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-12-31 14:15 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-01 08:03 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-01 07:42 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-02 21:59 +0300
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-02 14:52 -0500
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-01-02 12:30 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-02 18:17 -0500
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-02 19:22 -0500
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-01-02 17:48 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-02 22:35 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-02 18:02 -0800
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-01-03 00:42 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-04 20:12 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-04 07:04 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-04 20:22 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 04:24 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-05 06:22 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 08:55 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-05 20:22 +0300
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-05 20:27 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-05 14:20 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-05 17:23 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 10:18 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-05 18:57 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 12:58 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-05 17:31 -0500
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-05 17:50 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 19:33 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-05 23:02 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 21:00 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-06 07:42 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-06 08:55 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-06 13:29 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-06 14:09 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-06 22:11 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-07 03:10 -0800
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-07 06:40 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-09 06:27 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-10 04:32 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-11 06:58 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-11 14:40 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-15 09:46 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-17 04:13 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-17 14:18 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-17 18:02 +0000
Re: Programming exercise/challenge Richard Damon <Richard@Damon-Family.org> - 2021-01-17 15:12 -0500
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-17 21:39 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-20 10:57 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-21 11:37 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-22 00:30 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-22 09:09 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-22 13:47 -0500
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-22 19:00 +0000
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-22 19:42 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-22 21:16 +0000
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-22 16:41 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 17:46 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 09:51 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-23 18:38 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 04:52 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-23 15:45 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 09:04 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-23 23:10 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 15:39 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-23 15:59 +0000
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-25 11:40 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 09:47 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-23 18:32 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-23 17:26 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-24 01:55 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 08:40 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-23 20:51 -0800
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-01-24 02:28 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-24 03:49 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-24 15:38 +0300
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-01-24 14:04 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-25 07:26 -0800
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-25 16:58 +0100
Re: Programming exercise/challenge luser droog <luser.droog@gmail.com> - 2021-01-25 09:14 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 07:32 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-27 16:24 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-28 00:11 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@g{oogle}mail.com> - 2021-01-28 12:25 +0300
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-28 06:18 -0500
Re: Programming exercise/challenge Anton Shepelev <anton.txt@g{oogle}mail.com> - 2021-01-28 16:54 +0300
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-28 09:15 -0500
Re: Programming exercise/challenge Anton Shepelev <anton.txt@g{oogle}mail.com> - 2021-01-28 20:07 +0300
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-28 15:58 -0500
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-29 00:07 +0300
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-28 16:17 -0500
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-29 00:03 +0300
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-01-28 03:37 -0800
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-28 22:50 +0000
Re: Programming exercise/challenge Anton Shepelev <anton.txt@gmail.com> - 2021-01-30 23:14 +0300
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-30 20:49 +0000
Re: Programming exercise/challenge M Joshua Ryan <luser.droog@gmail.com> - 2021-01-28 00:05 -0600
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-27 11:51 -0800
Re: Programming exercise/challenge Bart <bc@freeuk.com> - 2021-01-25 17:22 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-25 12:21 -0800
Re: Programming exercise/challenge Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-01-25 14:27 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-25 19:41 -0800
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-26 04:46 +0000
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-26 06:30 -0800
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-26 15:46 +0100
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-27 03:43 -0800
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-27 13:43 +0100
Re: Programming exercise/challenge Anton Shepelev <anton.txt@g{oogle}mail.com> - 2021-01-27 17:51 +0300
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-27 11:02 -0500
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-27 17:03 +0100
Re: Programming exercise/challenge Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-01-27 07:21 -0800
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-27 17:09 +0100
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-27 17:04 +0000
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-28 10:41 +0100
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-28 18:25 +0000
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-28 10:44 +0100
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-28 21:33 +0000
Re: Programming exercise/challenge David Brown <david.brown@hesbynett.no> - 2021-01-29 10:39 +0100
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-25 23:52 -0500
Re: Programming exercise/challenge Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-01-26 11:37 +0000
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 08:04 -0800
Re: Programming exercise/challenge Anton Shepelev <anton.txt@g{oogle}mail.com> - 2021-01-27 19:16 +0300
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 23:38 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-27 13:43 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-28 03:16 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-28 06:42 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-28 13:01 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-06 13:35 -0500
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-06 19:27 +0000
Re: Programming exercise/challenge Kaz Kylheku <563-365-8930@kylheku.com> - 2021-01-06 21:25 +0000
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-06 00:37 -0500
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-06 04:34 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-06 11:54 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-05 15:28 -0800
Re: Programming exercise/challenge James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-01-05 13:27 -0500
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-05 15:43 -0800
Re: Programming exercise/challenge Dave Dunfield <dave.dunfield@gmail.com> - 2021-01-05 20:10 -0800
Re: Programming exercise/challenge Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-01-06 23:07 -0800
Page 3 of 20 — ← Prev page 1 2 [3] 4 5 … 20 Next page →
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-08 23:39 -0800 |
| Message-ID | <86im9b5sxg.fsf@linuxsc.com> |
| In reply to | #157083 |
Anton Shepelev <anton.txt@gmail.com> writes: > Kaz Kylheku: > >> This is a bug; > > For the benefit of whoever may be collecting the entries, I > ask you to post full updated versions of your solutions, in > addition to, indicating bugs. It is much easier to copy- > paste a program form the newsreader than manually to apply > the indicated changes the previous copy, which is also > error-prone. Thank you for this comment. Also, could people please limit their source lines to 80 (or better, 79) characters? Otherwise various news handling software breaks the lines in places that are in many cases inconvenient. Oh, Anton, while I'm thinking of it - use int main( void ) rather than void main( void ). When I first compiled your program the void return type on main() gave an error and I had to edit the source to fix that.
[toc] | [prev] | [next] | [standalone]
| From | Anton Shepelev <anton.txt@gmail.com> |
|---|---|
| Date | 2020-12-12 23:34 +0300 |
| Message-ID | <20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com> |
| In reply to | #157128 |
Tim Rentsch:
> Also, could people please limit their source lines to 80
> (or better, 79) characters?
I always try keep my code within the standard width of 80
characters, so 79 is one character below my natural limit.
It was not hard to adapt my program to it.
> Otherwise various news handling software breaks the lines
> in places that are in many cases inconvenient.
Indeed. In this second fifth of the twenty-first century,
people still fail to design decent newsreaders and e-mail
clients.
> Oh, Anton, while I'm thinking of it -- use
> int main( void ) rather than void main( void ). When I
> first compiled your program the void return type on main()
> gave an error and I had to edit the source to fix that.
Done.
My latest version refelcts my idea of a conceptually compact
solution with as little repetition as possible. Comment-
stripping is implemented as two connected state machines.
The outer machine takes care of line continuations while the
inner one processes the joined lines of code.
Since the inner machine I needed was a Mealy machine with
only one state whose output depended on the transition, I
converted it into a Moore machine using a hack that let me
avoid additional states. In order not to introduce
additional state properties, I store them implicit in the
very ordering of the states. The table-driven approach saves
the repetition of the same input and test request in the
handlers of individual states.
/* ----------------------------- No comments -----------------------------V3-*/
/* A program to strip comments from a C source, by Anton Shepelev */
#include<stdio.h>
/* Machine states ordered according to their role: */
typedef enum t_state
{ S_COD, S_CHR, S_CHR_ESC, S_STR, S_STR_ESC, /* echo */
S_IS_CM, /* buffer */
S_LCM, S_BCM, S_IS_BCM_END, S_BCM_END /* ignore */ } t_state;
/* A state transition: */
/* TODO: buf is used in one entry only => hardcode: */
typedef struct
{ t_state state; /* current state */
int c; /* input char */
t_state next; /* next state */ } t_trans;
/* Transition table: */
/* EOF input denotes the fall-back: */
/* OPT1: precalculate indices to the first entry for each state. */
/* OPT2: seek transitions in O(1) time as xtab[state][char] */
t_trans xtab[] =
{ /* state char next */
{ S_COD , '/' , S_IS_CM },
{ S_COD , '"' , S_STR },
{ S_COD , '\'', S_CHR },
{ S_COD , EOF , S_COD },
{ S_IS_CM , '/' , S_LCM },
{ S_IS_CM , '*' , S_BCM },
{ S_IS_CM , EOF , S_COD },
{ S_LCM , '\n', S_COD },
{ S_LCM , EOF , S_LCM },
{ S_BCM , '*' , S_IS_BCM_END },
{ S_BCM , EOF , S_BCM },
{ S_IS_BCM_END, '/' , S_COD },
{ S_IS_BCM_END, '*' , S_IS_BCM_END }, /* <== thanks to Bart's test case */
{ S_IS_BCM_END, EOF , S_BCM },
{ S_STR , '\\', S_STR_ESC },
{ S_STR , '"' , S_COD },
{ S_STR , EOF , S_STR },
{ S_STR_ESC , EOF , S_STR },
{ S_CHR , '\\', S_CHR_ESC },
{ S_CHR , '\'', S_COD },
{ S_CHR , EOF , S_CHR },
{ S_CHR_ESC , EOF, S_CHR } };
typedef struct
{ long cont_0; /* consequent line continations before buffered char */
long cont_1; /* consequent line continations after buffered char */
char slash ; /* buffered charcater */ } t_buffer;
static void flush_cont( long * n, char print )
{ long i;
if( print )
for( i = 0; i < *n; i += 1 )
{ putchar('\\'); putchar('\n'); }
*n = 0;
}
static void output( t_buffer *buf, char print, int c )
{ flush_cont( &buf->cont_0, 1 );
if( buf->slash )
{ if( print ) putchar( '/' );
buf->slash = 0;
}
flush_cont( &buf->cont_1, print );
if( print && c != EOF )
{ putchar( c ); }
}
/* Perform a step on the state machine: */
static void step( t_state *state, int c, t_buffer *buf )
{ t_trans *trans;
t_state prevstate;
int i;
i = 0;
while( 1 )
{ trans = &xtab[i];
i = i + 1;
if( trans->state != *state ) continue;
if( trans->c != c )
if( trans->c != EOF ) continue;
break;
}
prevstate = *state;
*state = trans->next;
/* Replace a block comment with a space: */
if( prevstate == S_IS_BCM_END && *state == S_COD )
{ c = ' '; }
if( *state == S_IS_CM ) buf->slash = 1;
else output( buf, *state < S_IS_CM, c );
}
int main( void )
{ int c, p, i;
char cont;
t_buffer buf;
t_state state;
cont = 0;
buf.cont_0 = 0;
buf.cont_1 = 0;
buf.slash = 0;
state = S_COD;
c = '\0';
while( 1 )
{ p = c;
c = getc( stdin );
if( p == '\\' && c == '\n' )
{ cont = 1; continue; }
if( cont )
{ if( state < S_IS_CM ) buf.cont_0 += 1;
else if( state == S_IS_CM ) buf.cont_1 += 1;
cont = 0;
continue;
}
if( p != '\0' )
{ step( &state, p, &buf ); }
if( p == EOF )
{ break; }
}
}
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-12 19:28 -0800 |
| Message-ID | <86h7oq1j24.fsf@linuxsc.com> |
| In reply to | #157227 |
Anton Shepelev <anton.txt@gmail.com> writes: > My latest version refelcts my idea of a conceptually compact > solution with as little repetition as possible. Comment- > stripping is implemented as two connected state machines. > The outer machine takes care of line continuations while the > inner one processes the joined lines of code. [...] I have not yet looked at this in detail but I did save a copy for the assemblage of all posted programs. May have more later.
[toc] | [prev] | [next] | [standalone]
| From | kegs@provalid.com (Kent Dickey) |
|---|---|
| Date | 2020-12-29 10:34 -0600 |
| Message-ID | <taadnWJ7Q5Y_x3bCnZ2dnUU7-fXNnZ2d@giganews.com> |
| In reply to | #157227 |
In article <20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com>, Anton Shepelev <anton.txt@gmail.com> wrote: >My latest version refelcts my idea of a conceptually compact >solution with as little repetition as possible. Comment- >stripping is implemented as two connected state machines. >The outer machine takes care of line continuations while the >inner one processes the joined lines of code. > >Since the inner machine I needed was a Mealy machine with >only one state whose output depended on the transition, I >converted it into a Moore machine using a hack that let me >avoid additional states. In order not to introduce >additional state properties, I store them implicit in the >very ordering of the states. The table-driven approach saves >the repetition of the same input and test request in the >handlers of individual states. I haven't looked this over yet, but it fails two of my tests: Test '/* mixing */ "quotes /* so there */ '/* hmm */ " /* last one */ Line 36 "/* mixing */ 'quotes /* so there */ "/* hmm */ ' /* last one */ I believe the proper answer for those two lines is: Test '/* mixing */ "quotes /* so there */ ' " /* last one */ Line 36 "/* mixing */ 'quotes /* so there */ " ' /* last one */ This code gives: Test '/* mixing */ "quotes '/* hmm */ " /* last one */ Line 36 "/* mixing */ 'quotes "/* hmm */ ' /* last one */ Kent
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-29 20:05 -0800 |
| Message-ID | <86im8kueel.fsf@linuxsc.com> |
| In reply to | #157867 |
kegs@provalid.com (Kent Dickey) writes: > In article <20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com>, > Anton Shepelev <anton.txt@gmail.com> wrote: > >> My latest version refelcts my idea of a conceptually compact >> solution with as little repetition as possible. Comment- >> stripping is implemented as two connected state machines. >> The outer machine takes care of line continuations while the >> inner one processes the joined lines of code. >> >> Since the inner machine I needed was a Mealy machine with >> only one state whose output depended on the transition, I >> converted it into a Moore machine using a hack that let me >> avoid additional states. In order not to introduce >> additional state properties, I store them implicit in the >> very ordering of the states. The table-driven approach saves >> the repetition of the same input and test request in the >> handlers of individual states. > > I haven't looked this over yet, but it fails two of my tests: > > Test '/* mixing */ "quotes /* so there */ '/* hmm */ " /* last one */ > Line 36 "/* mixing */ 'quotes /* so there */ "/* hmm */ ' /* last one */ Note that this input is not lexically well-formed. The first line has a string starting with " that is not finished by the end of that line. Also the second line has a character constant starting with ' that is not finished by the end of that line. (tested with gcc -E -)
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-06 06:03 -0800 |
| Message-ID | <86360jkp4h.fsf@linuxsc.com> |
| In reply to | #156946 |
Kaz Kylheku <563-365-8930@kylheku.com> writes: > On 2020-12-05, Tim Rentsch <tr.17687@z991.linuxsc.com> wrote: > >> as it's sensible. Use no 'goto' statements. Limit function >> bodies to no more than 25 lines. > > How about versions, A and B, of this exercise: > > A - Use no goto statements. As long as version A is done, also doing a version B is certainly welcome. > B - Use nothing but goto statements (and essential function calls). I take this to mean the code does not use any for's, switch's, while's (including do/while), break's, or continue's. A program all of whose statements are 'goto' statements isn't very interesting.
[toc] | [prev] | [next] | [standalone]
| From | dfs <nospam@dfs.com> |
|---|---|
| Date | 2020-12-05 13:58 -0500 |
| Message-ID | <5MQyH.103588$lo15.100353@fx35.iad> |
| In reply to | #156943 |
On 12/05/2020 11:25 AM, Tim Rentsch wrote: > Prompted by some recent discussion regarding 'goto' statements and > state machines, I would like to propose a programming exercise. > (It is perhaps a bit too large to be called an exercise, but not so > difficult that it deserves the label of challenge. On the other > hand there are some constraints so maybe challenge is apropos. In > any case somewhere in between those two bounds.) > > Short problem statement: a C program to remove comments from C > source input. > > Specifics: Remove both /*...*/ and //... style comments. Don't > worry about trigraphs. Read from stdin, write to stdout, and > diagnostics (if any) go to stderr. If EOF is seen inside a > comment, do something sensible but it doesn't matter what as long > as it's sensible. Use no 'goto' statements. Limit function > bodies to no more than 25 lines. > > Other: feel free to handle corner cases as you see fit, as long > as there is some description of what choice was made. > > Hopefully it will be a fun exercise. It isn't trivial but it > shouldn't take too long either. Shortest code "wins"? I'm sure you know this challenge can't provide a reliable result if comment lines beginning with /* or // contain source code. Do you have a 'tricky' block of code and comments to work from?
[toc] | [prev] | [next] | [standalone]
| From | Jorgen Grahn <grahn+nntp@snipabacken.se> |
|---|---|
| Date | 2020-12-05 21:37 +0000 |
| Message-ID | <slrnrsnvck.2ptb.grahn+nntp@frailea.sa.invalid> |
| In reply to | #156961 |
On Sat, 2020-12-05, dfs wrote: > On 12/05/2020 11:25 AM, Tim Rentsch wrote: >> Prompted by some recent discussion regarding 'goto' statements and >> state machines, I would like to propose a programming exercise. >> (It is perhaps a bit too large to be called an exercise, but not so >> difficult that it deserves the label of challenge. On the other >> hand there are some constraints so maybe challenge is apropos. In >> any case somewhere in between those two bounds.) >> >> Short problem statement: a C program to remove comments from C >> source input. >> >> Specifics: Remove both /*...*/ and //... style comments. Don't >> worry about trigraphs. Read from stdin, write to stdout, and >> diagnostics (if any) go to stderr. If EOF is seen inside a >> comment, do something sensible but it doesn't matter what as long >> as it's sensible. Use no 'goto' statements. Limit function >> bodies to no more than 25 lines. >> >> Other: feel free to handle corner cases as you see fit, as long >> as there is some description of what choice was made. >> >> Hopefully it will be a fun exercise. It isn't trivial but it >> shouldn't take too long either. > > > Shortest code "wins"? He didn't say anything about that, and code size isn't a good indicator of anything, so I'd say "no". It's a nice problem. (Unfortunately I'm participating in Advent of Code already, and together with hobby projects that takes up all my programming attention.) /Jorgen -- // Jorgen Grahn <grahn@ Oo o. . . \X/ snipabacken.se> O o .
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-06 06:13 -0800 |
| Message-ID | <86y2ibja47.fsf@linuxsc.com> |
| In reply to | #156963 |
Jorgen Grahn <grahn+nntp@snipabacken.se> writes: > On Sat, 2020-12-05, dfs wrote: > >> On 12/05/2020 11:25 AM, Tim Rentsch wrote: >> >>> Prompted by some recent discussion regarding 'goto' statements and >>> state machines, I would like to propose a programming exercise. >>> (It is perhaps a bit too large to be called an exercise, but not so >>> difficult that it deserves the label of challenge. On the other >>> hand there are some constraints so maybe challenge is apropos. In >>> any case somewhere in between those two bounds.) >>> >>> Short problem statement: a C program to remove comments from C >>> source input. >>> >>> Specifics: Remove both /*...*/ and //... style comments. Don't >>> worry about trigraphs. Read from stdin, write to stdout, and >>> diagnostics (if any) go to stderr. If EOF is seen inside a >>> comment, do something sensible but it doesn't matter what as long >>> as it's sensible. Use no 'goto' statements. Limit function >>> bodies to no more than 25 lines. >>> >>> Other: feel free to handle corner cases as you see fit, as long >>> as there is some description of what choice was made. >>> >>> Hopefully it will be a fun exercise. It isn't trivial but it >>> shouldn't take too long either. >> >> Shortest code "wins"? > > He didn't say anything about that, and code size isn't a good > indicator of anything, so I'd say "no". Right. > It's a nice problem. Thank you sir. Always good to hear. > (Unfortunately I'm participating in Advent of Code already, and > together with hobby projects that takes up all my programming > attention.) Sorry to hear you won't have time for this one, but good luck with your other efforts.
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-06 18:00 +0100 |
| Message-ID | <rqj2nj$fqm$1@dont-email.me> |
| In reply to | #156979 |
Le 06/12/2020 à 15:13, Tim Rentsch a écrit : >You haven't seen my contribution I suppose?
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-06 12:31 -0800 |
| Message-ID | <86lfeak763.fsf@linuxsc.com> |
| In reply to | #156990 |
jacobnavia <jacob@jacob.remcomp.fr> writes: > You haven't seen my contribution I suppose? I see that you have posted two different versions, and have dutifully made copies of both, but have not yet looked at either in detail. The same holds for other peoples' postings also.
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-06 06:26 -0800 |
| Message-ID | <86tuszj9hz.fsf@linuxsc.com> |
| In reply to | #156961 |
dfs <nospam@dfs.com> writes: > On 12/05/2020 11:25 AM, Tim Rentsch wrote: > >> Prompted by some recent discussion regarding 'goto' statements and >> state machines, I would like to propose a programming exercise. >> (It is perhaps a bit too large to be called an exercise, but not so >> difficult that it deserves the label of challenge. On the other >> hand there are some constraints so maybe challenge is apropos. In >> any case somewhere in between those two bounds.) >> >> Short problem statement: a C program to remove comments from C >> source input. >> >> Specifics: Remove both /*...*/ and //... style comments. Don't >> worry about trigraphs. Read from stdin, write to stdout, and >> diagnostics (if any) go to stderr. If EOF is seen inside a >> comment, do something sensible but it doesn't matter what as long >> as it's sensible. Use no 'goto' statements. Limit function >> bodies to no more than 25 lines. >> >> Other: feel free to handle corner cases as you see fit, as long >> as there is some description of what choice was made. >> >> Hopefully it will be a fun exercise. It isn't trivial but it >> shouldn't take too long either. > > Shortest code "wins"? I really don't intend grading them at all. My interest is to see how different people approach the problem, considering the stated limitations. As far as my own reactions go, there are several ways I might judge the quality of a program, but program length is not high on the list of any of those. > I'm sure you know this challenge can't provide a reliable result if > comment lines beginning with /* or // contain source code. It surprises me that you say that. To me it seems obvious that comments can be removed unambiguously, because C compilers do it. > Do you have a 'tricky' block of code and comments to work from? Part of the problem is to figure out what needs doing, so I feel like showing a bunch of test cases would be, at least to an extent, giving the game away. Assuming of course that is what you meant.. or did you mean something else?
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-05 23:32 +0100 |
| Message-ID | <rqh1p9$unj$1@dont-email.me> |
| In reply to | #156943 |
Le 05/12/2020 à 17:25, Tim Rentsch a écrit :
> Prompted by some recent discussion regarding 'goto' statements and
> state machines, I would like to propose a programming exercise.
> (It is perhaps a bit too large to be called an exercise, but not so
> difficult that it deserves the label of challenge. On the other
> hand there are some constraints so maybe challenge is apropos. In
> any case somewhere in between those two bounds.)
>
> Short problem statement: a C program to remove comments from C
> source input.
>
> Specifics: Remove both /*...*/ and //... style comments. Don't
> worry about trigraphs. Read from stdin, write to stdout, and
> diagnostics (if any) go to stderr. If EOF is seen inside a
> comment, do something sensible but it doesn't matter what as long
> as it's sensible. Use no 'goto' statements. Limit function
> bodies to no more than 25 lines.
>
> Other: feel free to handle corner cases as you see fit, as long
> as there is some description of what choice was made.
>
> Hopefully it will be a fun exercise. It isn't trivial but it
> shouldn't take too long either.
>
Here is a version full of bugs (not well tested)
---------------------------------------------------cut here
#include <stdio.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
if (argc < 2) { // print usage
fprintf(stderr,"Usage: nocomments <file>\n");
return 3;
}
FILE *f=fopen(argv[1],"r");
if (f == NULL) { // Error can't open
fprintf(stderr,"Impossible to open %s\n",argv[1]);
return 4;
}
int c = fgetc(f);
while (c != EOF) { // Until the end of the file
// There are 3 characters that have a special action required:
// 1) The / character that could introduce a comment
// 2) The " character that introduces a string
// 3) the ' character that introduces a character constant
if (c == '/') { // test for a comment
c = fgetc(f);
if (c == EOF) return 2;
if (c == '/') { // this is a comment until the end of the line
while (c != '\n' && c != EOF) {
c = fgetc(f); // ignore everything
}
if (c == EOF) return 2;
putchar(c); // Put the new line char
}
else if (c == '*') { // Multi line comment
while (c != EOF) {
c = fgetc(f);
if (c == EOF) return 2;
else if (c == '*') {
c = fgetc(f);
if (c == '/') break;
}
}
if (c == EOF) return 2;
}
else { // That was a lone /
putchar('/');
putchar(c);
}
}
else if (c == '"') { // String
putchar(c);
c = fgetc(f);
if (c == EOF) return 2;
while (c != EOF && c != '"') {
putchar(c);
if (c == '\\') {
c = fgetc(f);
if (c == EOF) return 2;
putchar(c);
if (c == 'x' || c == 'X' || c == 'u' || c == 'U') {
c = fgetc(f);
while (isxdigit(c) && c != EOF) {
putchar(c);
c = fgetc(f);
}
if (c == EOF)
return 2;
}
}
c = fgetc(f);
}
putchar(c); // put the closing double quote
}
else if (c == '\'') { // Character constant
putchar(c);
c = fgetc(f);
while (c != '\'' && c != EOF) {
if (c == '\\') { // escaped char
putchar(c);
c = fgetc(f);
if (c == EOF) return 2;
putchar(c);
if (c == 'x' || c == 'X' || c == 'u' || c == 'U') {
// Not all posible character escapes are tested
here
c = fgetc(f);
while (isxdigit(c) && c != EOF) {
putchar(c);
c = fgetc(f);
}
if (c == EOF)
return 2;
}
}
else putchar(c);
c = fgetc(f);
}
if (c == EOF) return 2;
else putchar(c);
}
else putchar(c);
c = fgetc(f);
}
return 0;
}
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-06 17:18 +0100 |
| Message-ID | <rqj080$um4$1@dont-email.me> |
| In reply to | #156964 |
Here is an impoved version, with more comments and comments generated by
the line splicing feature.
#include <stdio.h>
#include <ctype.h>
/* This program will eliminate comments from a C source file given in
the command
line. It returns 5 if an abnormal eof was found in a single line
comment,
6 if EOF was found in a multi-line comment, 7 if EOF appeared within
a string,
8 if EOF occurred within a character qquote sequence.
If all is OK the result is zero.
*/
int main(int argc,char *argv[])
{
if (argc < 2) { // print usage
fprintf(stderr,"Usage: nocomments <file>\n");
return 3;
}
FILE *f=fopen(argv[1],"r");
// Note that this file is never closed. We rely on the operating
system to
// close it for us.
if (f == NULL) { // Error can't open
fprintf(stderr,"Impossible to open %s\n",argv[1]);
return 4;
}
int c = fgetc(f);
while (c != EOF) { // Until the end of the file
// There are 3 characters that have a special action required:
// 1) The / character that could introduce a comment
// 2) The " character that introduces a string
// 3) the ' character that introduces a character constant
if (c == '/') { // test for a comment
c = fgetc(f);
if (c == EOF) return 5;
if (c == '/') { // this is a comment until the end of the line
while (c != '\n' && c != EOF) {
c = fgetc(f); // ignore everything
}
if (c == EOF) return 5;
putchar(c); // Put the new line char
}
else if (c == '*') { // Multi line comment
while (c != EOF) {
c = fgetc(f);
if (c == EOF) return 6;
else if (c == '*') {
c = fgetc(f);
if (c == '/') break;
}
}
if (c == EOF) return 6;
// Note that we do NOT echo the '/' since it belongs to
the comment
}
else if (c == '\\') {
c = fgetc(f);
if (c == '\n') {
c = fgetc(f);
if (c== '/') {
while (c != EOF && c != '\n') {
c = fgetc(f);
}
if (c == EOF) return 5;
}
else { putchar('\\'); }
}
putchar(c);
}
else { // That was a lone /
putchar('/');
putchar(c);
}
}
else if (c == '"') { // String
putchar(c);
c = fgetc(f);
if (c == EOF) return 2;
while (c != EOF && c != '"') {
putchar(c);
if (c == '\\') {
c = fgetc(f);
if (c == EOF) return 7;
putchar(c);
}
c = fgetc(f); // Read the next char of the string
}
if (c == EOF) return 7;
putchar(c); // put the closing double quote
}
else if (c == '\'') { // Character constant
putchar(c);
c = fgetc(f);
while (c != '\'' && c != EOF) {
if (c == '\\') { // escaped char
putchar(c);
c = fgetc(f);
if (c == EOF) return 8;
}
putchar(c); // Not an escaped char, just a normal one
c = fgetc(f);
}
if (c == EOF) return 8;
else putchar(c); // Put the closing quote
}
else putchar(c); // All other characters besides '/', '"', and
' are echoed back
c = fgetc(f); // Read next character of the source file
}
return 0; // No errors
}
#include <stdio.h>
#include <ctype.h>
/* This program will eliminate comments from a C source file given in
the command
line. It returns 5 if an abnormal eof was found in a single line
comment,
6 if EOF was found in a multi-line comment, 7 if EOF appeared within
a string,
8 if EOF occurred within a character qquote sequence.
If all is OK the result is zero.
*/
int main(int argc,char *argv[])
{
if (argc < 2) { // print usage
fprintf(stderr,"Usage: nocomments <file>\n");
return 3;
}
FILE *f=fopen(argv[1],"r");
// Note that this file is never closed. We rely on the operating
system to
// close it for us.
if (f == NULL) { // Error can't open
fprintf(stderr,"Impossible to open %s\n",argv[1]);
return 4;
}
int c = fgetc(f);
while (c != EOF) { // Until the end of the file
// There are 3 characters that have a special action required:
// 1) The / character that could introduce a comment
// 2) The " character that introduces a string
// 3) the ' character that introduces a character constant
if (c == '/') { // test for a comment
c = fgetc(f);
if (c == EOF) return 5;
if (c == '/') { // this is a comment until the end of the line
while (c != '\n' && c != EOF) {
c = fgetc(f); // ignore everything
}
if (c == EOF) return 5;
putchar(c); // Put the new line char
}
else if (c == '*') { // Multi line comment
while (c != EOF) {
c = fgetc(f);
if (c == EOF) return 6;
else if (c == '*') {
c = fgetc(f);
if (c == '/') break;
}
}
if (c == EOF) return 6;
// Note that we do NOT echo the '/' since it belongs to
the comment
}
else if (c == '\\') {
c = fgetc(f);
if (c == '\n') {
c = fgetc(f);
if (c== '/') {
while (c != EOF && c != '\n') {
c = fgetc(f);
}
if (c == EOF) return 5;
}
else { putchar('\\'); }
}
putchar(c);
}
else { // That was a lone /
putchar('/');
putchar(c);
}
}
else if (c == '"') { // String
putchar(c);
c = fgetc(f);
if (c == EOF) return 2;
while (c != EOF && c != '"') {
putchar(c);
if (c == '\\') {
c = fgetc(f);
if (c == EOF) return 7;
putchar(c);
}
c = fgetc(f); // Read the next char of the string
}
if (c == EOF) return 7;
putchar(c); // put the closing double quote
}
else if (c == '\'') { // Character constant
putchar(c);
c = fgetc(f);
while (c != '\'' && c != EOF) {
if (c == '\\') { // escaped char
putchar(c);
c = fgetc(f);
if (c == EOF) return 8;
}
putchar(c); // Not an escaped char, just a normal one
c = fgetc(f);
}
if (c == EOF) return 8;
else putchar(c); // Put the closing quote
}
else putchar(c); // All other characters besides '/', '"', and
' are echoed back
c = fgetc(f); // Read next character of the source file
}
return 0; // No errors
}
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-06 17:51 +0100 |
| Message-ID | <rqj274$cds$1@dont-email.me> |
| In reply to | #156984 |
Sorry, and error in cut/paste and the text appears twice!
[toc] | [prev] | [next] | [standalone]
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2020-12-06 22:27 +0000 |
| Message-ID | <1VczH.179018$GyS9.167571@fx04.ams4> |
| In reply to | #156984 |
On 06/12/2020 16:18, jacobnavia wrote: > Here is an impoved version, with more comments and comments generated by > the line splicing feature. > > #include <stdio.h> > #include <ctype.h> > /* This program will eliminate comments from a C source file given in > the command <snip> Strangely this has the same issue as Kaz's version. Given this input: ---------------------------------------------------------- #define TKFLG_DONTFOLD 0x100 /* Omit constant folding optimizations */ /************** End of parse.h ***********************************************/ /************** Continuing where we left off in sqliteInt.h ******************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <stddef.h> /* ** Use a macro to replace memcpy() if compiled with SQLITE_INLINE_MEMCPY. ** This allows better measurements of where memcpy() is used when running ** cachegrind. But this macro version of memcpy() is very slow so it ** should not be used in production. This is a performance measurement ** hack only. */ #ifdef SQLITE_INLINE_MEMCPY ---------------------------------------------------------- The output is: ---------------------------------------------------------- #define TKFLG_DONTFOLD 0x100 #ifdef SQLITE_INLINE_MEMCPY ---------------------------------------------------------- (Full file: https://www.sqlite.org/download.html, first source code link.)
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-07 09:37 +0100 |
| Message-ID | <rqkpkh$ni5$1@dont-email.me> |
| In reply to | #156998 |
I corrected that. The problem is that if I read a '*', I read the next character to see if it is a '/' that would close the multi-line comment. If it is NOT, I ignore the character and just go on reading the next character. If the next character is a '/' I ignore it too since it wasn't after a '*', that I discarded! Solution: Just make an ungetc. Corrected version is posted soon.
[toc] | [prev] | [next] | [standalone]
| From | Richard Damon <Richard@Damon-Family.org> |
|---|---|
| Date | 2020-12-07 07:36 -0500 |
| Message-ID | <klpzH.51365$Oa.49632@fx16.iad> |
| In reply to | #157013 |
On 12/7/20 3:37 AM, jacobnavia wrote: > I corrected that. The problem is that if I read a '*', I read the next > character to see if it is a '/' that would close the multi-line comment. > If it is NOT, I ignore the character and just go on reading the next > character. If the next character is a '/' I ignore it too since it > wasn't after a '*', that I discarded! > > Solution: Just make an ungetc. Corrected version is posted soon. Been thinking a bit of the problem, and this shows one of the traps in it. We are asked to remove the comments but the lines ending in \ being connected together aren't in general comments, so unless they are inside comments need to be retained, so we can't just remove them at an inner level or we are doing an transformation that wasn't in the spec.
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2020-12-08 22:49 -0800 |
| Message-ID | <86tusv79ug.fsf@linuxsc.com> |
| In reply to | #157023 |
Richard Damon <Richard@Damon-Family.org> writes: > On 12/7/20 3:37 AM, jacobnavia wrote: > >> I corrected that. The problem is that if I read a '*', I read the next >> character to see if it is a '/' that would close the multi-line comment. >> If it is NOT, I ignore the character and just go on reading the next >> character. If the next character is a '/' I ignore it too since it >> wasn't after a '*', that I discarded! >> >> Solution: Just make an ungetc. Corrected version is posted soon. > > Been thinking a bit of the problem, and this shows one of the traps in > it. We are asked to remove the comments but the lines ending in \ being > connected together aren't in general comments, so unless they are inside > comments need to be retained, so we can't just remove them at an inner > level or we are doing an transformation that wasn't in the spec. Right.
[toc] | [prev] | [next] | [standalone]
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Date | 2020-12-06 17:51 +0000 |
| Message-ID | <871rg2rffu.fsf@bsb.me.uk> |
| In reply to | #156943 |
Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
> Prompted by some recent discussion regarding 'goto' statements and
> state machines, I would like to propose a programming exercise.
> (It is perhaps a bit too large to be called an exercise, but not so
> difficult that it deserves the label of challenge. On the other
> hand there are some constraints so maybe challenge is apropos. In
> any case somewhere in between those two bounds.)
>
> Short problem statement: a C program to remove comments from C
> source input.
Apologies for non-C code but I could not resist...
In all the goto/no goto discussion it's easy to lose track of the fact
the C does not necessarily have the best primitives for constructing
this sort of program. I don't mean things like, say, complex regular
expressions, or built-in grammar parsing (al la Perl6). I mean basic
language constructs.
Here is a solution in Haskell. It is deliberately not very "Haskelly"
because I want to keep the code really simple for programmers unfamiliar
with the language.
main = do input <- getContents
putStr (stripComments (logicalLines input))
stripComments [] = []
stripComments ('/' : '/' : rest) = stripComments (dropWhile (/= '\n') rest)
stripComments ('/' : '*' : rest) = ' ' : stripComments (nestedComment rest)
stripComments (c : rest) = c : if c == '\'' || c == '"'
then skipQuote c rest
else stripComments rest
nestedComment ('*' : '/' : rest) = rest
nestedComment (c : rest) = nestedComment rest
nestedComment [] = error "Unterminated comment"
skipQuote q ('\\' : c : rest) = '\\' : c : skipQuote q rest
skipQuote q (c : rest) = c : if c == q
then stripComments rest
else skipQuote q rest
skipQuote q [] = error "Unterminated literal"
logicalLines ('\\' : '\n' : rest) = logicalLines rest
logicalLines (c : rest) = c : logicalLines rest
logicalLines [] = []
(Notes: string are lists and : is the list "cons" operation. [] is the
empty list. Function application is by juxtaposition: f x and is the
highest priority operator. Functions are defined by cases that are
written using simple pattern matching. For example, stripComments [] =
[] means return nothing when passed nothing.)
Obviously for some there will be a high language barrier, but I think
it's worth having a go at following what's happening.
Haskell has two big advantages for this exercise: pattern matched cases
and lazy evaluation. The case-by-case definition lets you say, very
clearly, how to handle each situation, and the lazy evaluation means you
can chain function calls to make processing pipelines like this:
putStr (strip (logicalLines input))
This means output the string of characters that result from stripping
comments from the logical lines, but at no time is the whole input in
memory. Characters are fetched as needed to satisfy each function call.
Originally, I just wrote stripComments, but when I decided to include
logical line processing (C's \<newline> "continuation" mechanism) it was
trivial to put it in. If I want to do trigraphs, that, too, would be a
simple addition to the pipeline. (There is even an operator to make
this simpler, but I did not want to add too many peculiar symbols.)
I am now tempted to try to write a C version that preserves as much of
what I see as the clarity and simplicity of this solution. I am not as
hopeful as I'd like to be about that!
--
Ben.
[toc] | [prev] | [next] | [standalone]
Page 3 of 20 — ← Prev page 1 2 [3] 4 5 … 20 Next page →
Back to top | Article view | comp.lang.c
csiph-web