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 11 of 20 — ← Prev page 1 … 9 10 [11] 12 13 … 20 Next page →
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2021-01-22 23:07 +0000 |
| Message-ID | <CUIOH.398569$bZF7.336087@fx30.ams4> |
| In reply to | #158565 |
On 22/01/2021 22:36, Bart wrote:
> On 07/01/2021 09:54, Tim Rentsch wrote:
>> Bart <bc@freeuk.com> writes:
>>
>>> On 09/12/2020 12:21, Bart wrote:
>>>> [...]
>>>
>>> I had to use this program for real today, and that's when I found
>>> out it didn't work!
>>>
>>> This last line should be:
>>>
>>> if (c!='\\' && peekchar=='\"') instring=0;
>>>
>>> otherwise the string continues until the next ' rather than "
>>> character.
>>
>> I made a new version incorporating this change, relative to your
>> version 3 (and am treating it as version 4).
>>
>> This change is an improvement but there are still some important
>> problems. How much other testing have you done?
>
> [Not noticed this post until today.]
>
> Obviously now enough; some ad hoc tests then working on a handful of
> real programs to see if they compile to the same output. But not
> thoroughly checked to see if they were 100% devoid of comments, just a
> quick visual.
>
> Today I did a bigger test (some 250 modules/headers of Seed7), which
> showed up a blatant bug on string and char literals.
>
> (I used 'colouring' of the output to clearly mark what is perceived to
> be a string, block comment etc.)
>
> I fixed that, but then was stuck on this:
>
> "\\"
>
> which can also manifest as:
>
> "\\
> \"
>
> where I decided to give up. I already know any fix would be a hack.
I forgot that that last example would be taken care of elsewhere, so
decided to have a go. I also combined the handling for string and char
handling:
---------------------------------------------------------------------------
// BART#5
#include <stdio.h>
#include <stdlib.h>
int lastoutc=0;
int peekchar, peekchar2;
enum {lcchar=1}; // represents line continuation \<newline>
int nextchar(void) {
int c=peekchar;
peekchar=peekchar2;
peekchar2=getchar();
if (peekchar2==EOF) peekchar2=0;
if (peekchar=='\\' && peekchar2=='\n') {
peekchar=lcchar;
peekchar2=getchar();
}
return c;
}
void outchar(char c) {
if (lastoutc) {
if (lastoutc==lcchar) {
putchar('\\');
putchar('\n');
} else {
putchar(lastoutc);
}
}
lastoutc=c;
}
int nextchar_lt(void) {
int d;
d=nextchar();
while (d=='\\' && peekchar=='\n') {
nextchar();
d=nextchar();
}
return d;
}
int nextchar_lte(void) {
int d;
while (d=='\\' && peekchar=='\n') {
nextchar();
d=nextchar();
}
return d;
}
int commentchar(void){
int c, nlc=0;
while ((c=nextchar())==lcchar) {
++nlc;
}
if (c=='/' || c=='*') return c;
outchar('/');
while (nlc--) outchar(lcchar);
return c;
}
int main(void) {
int inlinecomment=0;
int inblockcomment=0;
int inquote=0;
int c,d;
nextchar();
nextchar();
while (c=nextchar()) {
if (inlinecomment) {
if (c=='\n') {
inlinecomment=0;
outchar(c);
} else {
outchar(' ');
}
} else if (inblockcomment) {
if (c=='*') {
while (peekchar==lcchar) {
nextchar();
}
outchar(' ');
if (peekchar=='/') {
inblockcomment=0;
nextchar();
outchar(' ');
} else {
continue;
}
} else {
outchar((c=='\n' ? c : ' '));
}
} else if (inquote) {
if (c!='\\' && peekchar==inquote || c==inquote) {
inquote=0;
outchar(c);
outchar(nextchar());
} else if (c=='\\') {
outchar(c);
outchar(nextchar());
} else {
outchar(c);
}
} else {
if (c=='/') {
c=commentchar();
if (c=='/') {
inlinecomment=1;
outchar(' ');
continue;
} else if (c=='*') {
inblockcomment=1;
outchar(' ');
continue;
}
}
if (c=='"') {
inquote='"';
outchar(c);
} else if (c=='\'') {
inquote='\'';
outchar(c);
} else {
outchar(c);
}
}
}
outchar(0);
}
--------------------------------------------------------------------
The testing done on this today was:
* Strip sqlite3.c/.h, shell.c and build to shell.exe
* Strip some 300 .c/.h files of Seed7 sources (about 250 are used) and
build to s7.exe
* Check for // and /* comments in both cases by doing a proper search
* Check resulting binaries are identical to non-stripped versions (all
built with the same bcc compiler)
I haven't tested all the corner cases that have been discussed. The
emphasis for me is always on having a useful, working tool.
[toc] | [prev] | [next] | [standalone]
| From | Dave Dunfield <dave.dunfield@gmail.com> |
|---|---|
| Date | 2021-01-22 20:27 -0800 |
| Message-ID | <caaa2fcf-49b1-464a-8ac8-c83714333f18n@googlegroups.com> |
| In reply to | #158566 |
> I forgot that that last example would be taken care of elsewhere, so
> decided to have a go. I also combined the handling for string and char
> handling:
Hey,
Sorry - don't mean to be critical (but that does seem to be
the norm here so I guess I'm "fitting in" :)
--- Consider the source ---
#include <stdio.h>
#define TAB /*
comment */ '\\
t'
main()
{
putc('A', stdout);
putc(TAB, stdout);
putc('B', stdout);
}
-- LCC (GCC) compiles it to 3104 byte .EXE and when run you see ---
A B
---
--- my little REMCOM.C (just posted a couple days ago) produces ---
#include <stdio.h>
#define TAB '\\
t'
main()
{
putc('A', stdout);
putc(TAB, stdout);
putc('B', stdout);
}
-- LCC (GCC) compiles it to a 3104 byte .EXE and when run you see ---
A B
---
--- The program you posted produces ---
#include <stdio.h>
#define TAB
'\\
t'
main()
{
putc('A', stdout);
putc(TAB, stdout);
putc('B', stdout);
}
--- LCC (GCC) errors on it with ---
Error x.c: 3 unrecognized declaration
Error x.c: 8 illegal expression
Error x.c: 8 found 'int' expected a function
Error x.c: 8 type error in argument 1 to `putc'; found 'void' expected 'int'
Error x.c: 8 insufficient number of arguments to `putc'
1 error
---
--- Here is the output of my "CSTATS" utility for my REMCOM.C ---
Characters:
in file(s) : 2851
in comments : 1762
whitespace : 549
significant : 540
Lines:
in file(s) : 105
blank/comment: 31
significant : 74
Cism's:
'{'s : 14
'}'s : 14
';'s : 33
comments : 48
---
--- Here is the output of my "CSTATS" for the program you posted ---
Characters:
in file(s) : 1781
in comments : 0
whitespace : 120
significant : 1661
Lines:
in file(s) : 136
blank/comment: 14
significant : 122
Cism's:
'{'s : 35
'}'s : 35
';'s : 64
comments : 0
Regards,
Dave
Search "Dave's Old Computers" see my "personal" at bottom!
[toc] | [prev] | [next] | [standalone]
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2021-01-23 13:05 +0000 |
| Message-ID | <RaVOH.1644670$OEna.443885@fx49.ams4> |
| In reply to | #158567 |
On 23/01/2021 04:27, Dave Dunfield wrote:
>> I forgot that that last example would be taken care of elsewhere, so
>> decided to have a go. I also combined the handling for string and char
>> handling:
>
> Hey,
>
> Sorry - don't mean to be critical (but that does seem to be
> the norm here so I guess I'm "fitting in" :)
That's fine. I used to test other people's contributions too and point
out problems!
> --- Consider the source ---
> #include <stdio.h>
> #define TAB /*
> comment */ '\\
> t'
> main()
> {
> putc('A', stdout);
> putc(TAB, stdout);
> putc('B', stdout);
> }
> --- The program you posted produces ---
> #include <stdio.h>
> #define TAB
> '\\
> t'
The issue here is with /*...*/ comments, not the \\ part.
I made a decision to convert /*ABC*/ to all spaces, eg. 7 spaces here,
but because this could screw up layout, I also decided to keep newlines
within the comment.
Clearly, this causes a problem with examples like yours.
The fix is easy; just comment out this line (line 99 I think):
outchar((c=='\n' ? c : ' '));
(A single space will have been output when /* is detected.)
This however can cause a problem: on both of my big test programs: while
they both still appear to work when compiled, there are differences in
the binary executables.
With Seed7, it is because of macros like this:
fatal_memory_error(SOURCE_POSITION(2111));
(I don't know about SQLite.) Removing newlines within /*...*/ comments
screws up line numbering.
Possibly, converting them into all spaces, including newlines, would fix
that. But then code like this:
a = /*
<1000 lines of comments>
*/ b;
would turn into:
a = <possibly 10s of 1000s spaces) b;
which would affect readability, and cause problems with editors and even
compilers that have a line-length limit.
[toc] | [prev] | [next] | [standalone]
| From | Dave Dunfield <dave.dunfield@gmail.com> |
|---|---|
| Date | 2021-01-23 07:45 -0800 |
| Message-ID | <b27537f4-836e-48b6-a014-0a78403b1414n@googlegroups.com> |
| In reply to | #158571 |
> > Sorry - don't mean to be critical (but that does seem to be
> > the norm here so I guess I'm "fitting in" :)
> That's fine. I used to test other people's contributions too and point
> out problems!
That's good to hear.
> The issue here is with /*...*/ comments, not the \\ part.
I knew that, I just tossed some code I'd been using to test mine at yours
and when it failed to compile, didn't take the time to trim to only the cause.
I knew you'd figure it out :)
> This however can cause a problem: on both of my big test programs: while
> they both still appear to work when compiled, there are differences in
> the binary executables.
>
> With Seed7, it is because of macros like this:
>
> fatal_memory_error(SOURCE_POSITION(2111));
>
> (I don't know about SQLite.) Removing newlines within /*...*/ comments
> screws up line numbering.
I'm not into those enough to make a definitive statement, but I would think that
if the program depends on it's source enough that differences in comments
and/or whitespace would affect it, I (personally, IMHO and all that) would think that
that should be OK - the new source is NOT the original source, it just has to be
equivalent to it to a compiler. For programs dependent on their own source as described
above, I think it should be ok/reasonable for them to reflect the new modified source.
Simple example:
----- original source ---
#include <stdio.h>
/*
* Several
* Comment
* Lines
*/
main()
{
printf("%u\n", __LINE__);
}
---- Compiled "as is" it prints ---
10
--- Compiled "after running through my REMCOM" it prints ---
5
---------------------------------------------------------------
This is of course because the line number containing the __LINE__
macro is different in the comment removed source.
IMHO this is normal/expected.
I (of course) expect that others will disagree with me (and I'm equally
sure that other (in some cases the same) people would disagree if I
stated that such programs should reflect the original source not the
one that was compiled) - clearly another case of "you can't win".
Regards.
Dave
Search "Dave's Old Computers" see my "personal" at bottom!
[toc] | [prev] | [next] | [standalone]
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2021-01-23 16:49 +0000 |
| Message-ID | <esYOH.314896$L_49.59406@fx22.ams4> |
| In reply to | #158572 |
On 23/01/2021 15:45, Dave Dunfield wrote:
>
>> (I don't know about SQLite.) Removing newlines within /*...*/ comments
>> screws up line numbering.
>
> I'm not into those enough to make a definitive statement, but I would think that
> if the program depends on it's source enough that differences in comments
> and/or whitespace would affect it, I (personally, IMHO and all that) would think that
> that should be OK - the new source is NOT the original source, it just has to be
> equivalent to it to a compiler. For programs dependent on their own source as described
> above, I think it should be ok/reasonable for them to reflect the new modified source.
The 'problems' are minor:
* If the binaries generated were identical, then you know you haven't
broken anything. But if different, you don't have that assurance.
* If for some reason you have to send comment-stripped source to someone
else, then if they have refer to the source by line number, their line
numbers will be different from yours.
It's possible to think up other situations. But I've find a way around
it I think.
If newlines within /*...*/ are converted to \newline instead of being
ignored, this preserves the line numbering. But it means source code
having /extra/ \newline sequences compared to before. It depends on the
specification.
On my program, it means replacing that deleted line with:
if (c=='\n') {outchar('\\'); outchar(c);}
It means the first few lines of your version:
--------------------------------
/*
* whole line comments could easily be absent and should not
* count against to 25 lime function body limit.
*
* Assumes a valid 'C' program as input, will not detect
* certain errors affecting comments, quotes or escapes.
*
* Dave Dunfield - Feb 2021
*/
#include <stdio.h>
--------------------------------
being turned into:
--------------------------------
\
\
\
\
\
\
\
\
#include <stdio.h>
--------------------------------
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2021-01-23 11:22 -0800 |
| Message-ID | <86eeibmpae.fsf@linuxsc.com> |
| In reply to | #158571 |
Bart <bc@freeuk.com> writes:
> On 23/01/2021 04:27, Dave Dunfield wrote:
>
>>> I forgot that that last example would be taken care of elsewhere, so
>>> decided to have a go. I also combined the handling for string and char
>>> handling:
>>
>> Hey,
>>
>> Sorry - don't mean to be critical (but that does seem to be
>> the norm here so I guess I'm "fitting in" :)
>
> That's fine. I used to test other people's contributions too and point
> out problems!
>
>
>> --- Consider the source ---
>> #include <stdio.h>
>> #define TAB /*
>> comment */ '\\
>> t'
>> main()
>> {
>> putc('A', stdout);
>> putc(TAB, stdout);
>> putc('B', stdout);
>> }
>>
>> --- The program you posted produces ---
>> #include <stdio.h>
>> #define TAB
>> '\\
>> t'
>
> The issue here is with /*...*/ comments, not the \\ part.
>
> I made a decision to convert /*ABC*/ to all spaces, eg. 7 spaces here,
> but because this could screw up layout, I also decided to keep
> newlines within the comment.
>
> Clearly, this causes a problem with examples like yours.
I have written a decommenting program that leaves characters
outside of comments in their original character and line positions
(including dealing with cases in preprocessor lines like the one
shown above). It is decidedly a more challenging program to
write, which is one reason I suggested replacing removed comments
by a single space. (That is just for /**/ comments; new style
comments can simply be removed entirely, except of course for
the newline at the end, which properly speaking is not part of
the comment.)
> The fix is easy; just comment out this line (line 99 I think):
>
> outchar((c=='\n' ? c : ' '));
>
> (A single space will have been output when /* is detected.)
In your latest program, there are five occurrences of
outchar(' ');
all of which have to do with replacing comments with spaces.
In addition to commenting out the outchar() call on line 99,
if all of the "outchar(' ')" calls are commented out, _except_
the one inside the "if (peekchar=='/')", then the program
should behave in the way suggested and preferred for this
exercise, which is to say removed /**/ comments shall be
replaced by a single space.
[toc] | [prev] | [next] | [standalone]
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2021-01-23 16:53 +0000 |
| Message-ID | <MwYOH.1561101$LMma.1347713@fx47.ams4> |
| In reply to | #158567 |
On 23/01/2021 04:27, Dave Dunfield wrote:
> --- Here is the output of my "CSTATS" for the program you posted ---
> Characters:
> in file(s) : 1781
> in comments : 0
> whitespace : 120
> significant : 1661
> Lines:
> in file(s) : 136
> blank/comment: 14
> significant : 122
> Cism's:
> '{'s : 35
> '}'s : 35
> ';'s : 64
> comments : 0
This only counts /* */ comments? My code had one // comment not
including the // BART#5.
[toc] | [prev] | [next] | [standalone]
| From | Dave Dunfield <dave.dunfield@gmail.com> |
|---|---|
| Date | 2021-01-23 09:55 -0800 |
| Message-ID | <668b3d69-98bb-4bbc-89b2-40fcf502d87dn@googlegroups.com> |
| In reply to | #158579 |
> This only counts /* */ comments? My code had one // comment not > including the // BART#5. I had removed the two // comments from your code because I first tried PPC a program (I didn't write) to "pretty print C" - I view the group in google-groups/CHROME which removes all formatting, but PPC is old enough that it does't handle // comments. It didn't like the code for some other reason and then I decided to just use CSTAT - but forgot put the two comments back - sorry. Also, total character will be wrong for your because when I cut/paste code from gg/chrome all whichspace turns into single spaces .. but I don't think total chars is really significant. Dave Search "Dave's Old Computers" see my "personal" at bottom!
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2021-01-23 21:35 -0800 |
| Message-ID | <86wnw2lwwn.fsf@linuxsc.com> |
| In reply to | #158566 |
Bart <bc@freeuk.com> writes:
[...]
> // BART#5
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int lastoutc=0;
> int peekchar, peekchar2;
>
> enum {lcchar=1}; // represents line continuation \<newline>
>
> int nextchar(void) {
> int c=peekchar;
> peekchar=peekchar2;
> peekchar2=getchar();
> if (peekchar2==EOF) peekchar2=0;
>
> if (peekchar=='\\' && peekchar2=='\n') {
> peekchar=lcchar;
> peekchar2=getchar();
> }
>
> return c;
> }
Turning <backslant><newline> into a pseudo-character (lcchar) is
a clever idea.
> [...]
>
> int main(void) {
> int inlinecomment=0;
> int inblockcomment=0;
> int inquote=0;
> int c,d;
>
> nextchar();
> nextchar();
>
> while (c=nextchar()) {
> [...]
> } else if (inquote) {
> if (c!='\\' && peekchar==inquote || c==inquote) {
> inquote=0;
> outchar(c);
> outchar(nextchar());
> } else if (c=='\\') {
> outchar(c);
> outchar(nextchar());
> } else {
> outchar(c);
> }
> } else {
> [...]
> }
> outchar(0);
> }
A few observations on the code for string/character constants:
(1) There are no tests done for lcchar.
(2) There are no tests done for <newline>
(3) The code under "} else if (c=='\\') {" doesn't check to
see if the next character is either lcchar or <newline>.
(4) In the initial if() test, when c==inquote, the character
after the end of the string/character constant is output
without checking it. What should happen on this input
"\\"/*comment*/"\\"
and what actually does happen?
[toc] | [prev] | [next] | [standalone]
| From | Bart <bc@freeuk.com> |
|---|---|
| Date | 2021-01-24 18:17 +0000 |
| Message-ID | <WQiPH.1688647$OEna.1218806@fx49.ams4> |
| In reply to | #158595 |
On 24/01/2021 05:35, Tim Rentsch wrote:
> Bart <bc@freeuk.com> writes:
> (4) In the initial if() test, when c==inquote, the character
> after the end of the string/character constant is output
> without checking it. What should happen on this input
>
> "\\"/*comment*/"\\"
>
> and what actually does happen?
>
I've redone string handling and the current version is below; it also
gets rid of some junk that was present before, as well as removing
extraneous spaces from the output as suggested. Block comments reduce to
one space.
It passes the usual real-code tests, but again have only done adhoc
tests, like yours above, I as don't have a set of test cases readily to
hand.
--------------------------------------------------------
// BART#6
#include <stdio.h>
#include <stdlib.h>
int lastoutc=0;
int peekchar, peekchar2;
enum {lcchar=1}; // represents line continuation \<newline>
int nextchar(void) {
int c=peekchar;
peekchar=peekchar2;
peekchar2=getchar();
if (peekchar2==EOF) peekchar2=0;
if (peekchar=='\\' && peekchar2=='\n') {
peekchar=lcchar;
peekchar2=getchar();
}
return c;
}
void outchar(char c) {
if (lastoutc) {
if (lastoutc==lcchar) {
putchar('\\');
putchar('\n');
} else {
putchar(lastoutc);
}
}
lastoutc=c;
}
int commentcharnext(void){
int c, nlc=0;
while ((c=nextchar())==lcchar) {
++nlc;
}
if (c=='/' || c=='*') return c;
outchar('/');
while (nlc--) outchar(lcchar);
return c;
}
int main(void) {
int inlinecomment=0;
int inblockcomment=0;
int inquote=0;
int c,d;
nextchar();
nextchar();
while (c=nextchar()) {
if (inlinecomment) {
if (c=='\n') {
inlinecomment=0;
outchar(c);
}
} else if (inblockcomment) {
if (c=='*') {
while (peekchar==lcchar) {
nextchar();
}
if (peekchar=='/') {
inblockcomment=0;
nextchar();
} else {
continue;
}
}
} else if (inquote) {
if (c==inquote) {
outchar(c);
inquote=0;
} else if (c=='\\') {
outchar(c);
while (peekchar==lcchar) {
outchar(nextchar());
}
outchar(nextchar());
} else {
outchar(c);
}
} else {
if (c=='/') {
c=commentcharnext();
if (c=='/') {
inlinecomment=1;
outchar(' ');
continue;
} else if (c=='*') {
inblockcomment=1;
outchar(' ');
continue;
}
}
if (c=='"' || c=='\'') {
inquote=c;
outchar(c);
} else {
outchar(c);
}
}
}
outchar(0);
}
--------------------------------------------------------
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2021-01-27 07:57 -0800 |
| Message-ID | <867dnyl6e9.fsf@linuxsc.com> |
| In reply to | #158601 |
Bart <bc@freeuk.com> writes: > On 24/01/2021 05:35, Tim Rentsch wrote: > >> Bart <bc@freeuk.com> writes: >> >> (4) In the initial if() test, when c==inquote, the character >> after the end of the string/character constant is output >> without checking it. What should happen on this input >> >> "\\"/*comment*/"\\" >> >> and what actually does happen? > > I've redone string handling and the current version is below; it also > gets rid of some junk that was present before, as well as removing > extraneous spaces from the output as suggested. Block comments reduce > to one space. [...] Much better.
[toc] | [prev] | [next] | [standalone]
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Date | 2021-01-23 11:28 -0800 |
| Message-ID | <86a6szmp0r.fsf@linuxsc.com> |
| In reply to | #158565 |
Bart <bc@freeuk.com> writes: > On 07/01/2021 09:54, Tim Rentsch wrote: > >> Bart <bc@freeuk.com> writes: >> >>> On 09/12/2020 12:21, Bart wrote: >>> >>>> [...] >>> >>> I had to use this program for real today, and that's when I found >>> out it didn't work! >>> >>> This last line should be: >>> >>> if (c!='\\' && peekchar=='\"') instring=0; >>> >>> otherwise the string continues until the next ' rather than " >>> character. >> >> I made a new version incorporating this change, relative to your >> version 3 (and am treating it as version 4). >> >> This change is an improvement but there are still some important >> problems. How much other testing have you done? > > [Not noticed this post until today.] > > Obviously now enough; some ad hoc tests then working on a handful of > real programs to see if they compile to the same output. But not > thoroughly checked to see if they were 100% devoid of comments, just a > quick visual. > > Today I did a bigger test (some 250 modules/headers of Seed7), which > showed up a blatant bug on string and char literals. > > (I used 'colouring' of the output to clearly mark what is perceived to > be a string, block comment etc.) > > I fixed that, but then was stuck on this: > > "\\" > > which can also manifest as: > > "\\ > \" > > where I decided to give up. I already know any fix would be a > hack. This task doesn't seem to have any easy, elegant solutions. It may not have any obvious solutions, but it does have a solution that is easy to understand and also easy to make work correctly. Not a lot of code either.
[toc] | [prev] | [next] | [standalone]
| From | "jfbod...@gmail.com" <jfbode1029@gmail.com> |
|---|---|
| Date | 2020-12-08 11:30 -0800 |
| Message-ID | <c1b8ef86-36f5-41f3-9022-fe78ba2a7461n@googlegroups.com> |
| In reply to | #156943 |
On Saturday, December 5, 2020 at 10:25:36 AM UTC-6, 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.
Here's my pathetic contribution. Table-driven state machine, trades memory for nested switch logic.
Knocked it out in about 45 minutes or so - given time I could probably think of a way to minimize
the memory footprint (probably with a sparse matrix), but I'm not willing to spend that much time on
it.
----
#include <stdio.h>
/**
* Strip comments from an input stream, write the result to an output stream.
* Leading/trailing whitespace is not compressed.
*
* Uses a table-driven state machine. States are:
*
* TEXT - not currently in a comment, output the character just read
* SLASH - saw what may be the beginning of an open comment token, do not output
* SLASH_END - saw something other than a * or / following a slash, output a / followed by the current character
* MULTI_STAR - saw what may be the beginning of a close multi-line comment token, do not output
* MULTI - currently in a multi-line comment, do not output the last character read
* MULTI_END - saw a complete close multi-line comment token, do not output
* SINGLE - currently in a single-line comment, do not output
*
* Table is indexed by state and character, giving us the new state.
*/
void stripComments( FILE *in, FILE *out )
{
int c;
enum state { TEXT, SLASH, SLASH_END, MULTI_STAR, MULTI, MULTI_END, SINGLE, NUM_STATES } curState = TEXT;
/**
* Initialize the state table so that everything transitions to TEXT - this is going to be
* true for almost all combinations.
*/
enum state transitions[NUM_STATES][256] = { { TEXT } };
/**
* If we're in a MULTI or SINGLE comment state, only a small
* set of characters bring us out of that state, so we initialize
* those rows to keep us in the comment state for all characters.
*/
for ( size_t i = 0; i < 256; i++ )
{
transitions[MULTI][i] = MULTI;
transitions[MULTI_STAR][i] = MULTI;
transitions[SINGLE][i] = SINGLE;
transitions[SLASH][i] = SLASH_END;
}
/**
* Set up the transitions to new states.
*/
transitions[MULTI]['*'] = MULTI_STAR;
transitions[MULTI_STAR]['/'] = MULTI_END;
transitions[TEXT]['/'] = SLASH;
transitions[SLASH]['/'] = SINGLE;
transitions[SLASH]['*'] = MULTI;
transitions[SINGLE]['\n'] = TEXT;
/**
* Read from the input stream until we see EOF. Output
* anything that's not in a comment.
*/
while ( ( c = fgetc( in ) ) != EOF )
{
curState = transitions[curState][c];
switch( curState )
{
/**
* This state is a bit of a hack. Since a single /
* may be the beginning of an open comment token, we
* don't want to write it to the output stream until
* we're sure it isn't part of a comment, but we don't
* know that until we read the next character. So we
* have this special state to tell us to write a /
* before writing the character we last read.
*/
case SLASH_END:
fputc( '/', out );
fputc( c, out );
break;
case TEXT:
fputc( c, out );
break;
default:
break;
}
}
}
int main( int argc, char **argv )
{
stripComments( stdin, stdout );
return 0;
}
----
[toc] | [prev] | [next] | [standalone]
| From | Kaz Kylheku <563-365-8930@kylheku.com> |
|---|---|
| Date | 2020-12-08 20:31 +0000 |
| Message-ID | <20201208121657.222@kylheku.com> |
| In reply to | #157095 |
On 2020-12-08, jfbod...@gmail.com <jfbode1029@gmail.com> wrote: > Here's my pathetic contribution. Table-driven state machine, trades > memory for nested switch logic. Take heart; a table-driven machine could easily use *less* memory than a representation of the same state machine in code. That code representation requires additional instructions in proportion to the size of the state machine, and those could be using an inefficient encoding compared to a compact table. This could matter. There could be situations where your table dispatcher fits entirely into the instruction cache, and the associated table data into the L1 cache, whereas solutions based on code blow the instruction cache.
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-08 22:17 +0100 |
| Message-ID | <rqoqgj$vc$2@dont-email.me> |
| In reply to | #157098 |
Le 08/12/2020 à 21:31, Kaz Kylheku a écrit : > On 2020-12-08, jfbod...@gmail.com <jfbode1029@gmail.com> wrote: >> Here's my pathetic contribution. Table-driven state machine, trades >> memory for nested switch logic. > > Take heart; a table-driven machine could easily use *less* memory than a > representation of the same state machine in code. That code > representation requires additional instructions in proportion to the > size of the state machine, and those could be using an inefficient encoding > compared to a compact table. > > This could matter. There could be situations where your table > dispatcher fits entirely into the instruction cache, and the associated > table data into the L1 cache, whereas solutions based on code blow the > instruction cache. > In the case of my solution, the total size of my code is 1K, small enough to fit in any instruction cache of modern machines.
[toc] | [prev] | [next] | [standalone]
| From | jacobnavia <jacob@jacob.remcomp.fr> |
|---|---|
| Date | 2020-12-08 22:15 +0100 |
| Message-ID | <rqoqds$vc$1@dont-email.me> |
| In reply to | #157095 |
Le 08/12/2020 à 20:30, jfbod...@gmail.com a écrit : Hi You have to eliminate text in character strings and character constants first. Your program takes char *p = "/*"; as the start of a comment
[toc] | [prev] | [next] | [standalone]
| From | "jfbod...@gmail.com" <jfbode1029@gmail.com> |
|---|---|
| Date | 2020-12-08 13:28 -0800 |
| Message-ID | <e85c63d1-7fbb-4f5f-bd46-ec0988867f6an@googlegroups.com> |
| In reply to | #157101 |
On Tuesday, December 8, 2020 at 3:15:57 PM UTC-6, jacobnavia wrote: > Le 08/12/2020 à 20:30, jfbod...@gmail.com a écrit : > > Hi > You have to eliminate text in character strings and character constants > first. Your program takes char *p = "/*"; as the start of a comment Bummer. I may fix that at some point, I may not.
[toc] | [prev] | [next] | [standalone]
| From | "jfbod...@gmail.com" <jfbode1029@gmail.com> |
|---|---|
| Date | 2020-12-09 12:05 -0800 |
| Message-ID | <e0c946cb-a3b7-42d4-9aca-508368237890n@googlegroups.com> |
| In reply to | #157103 |
On Tuesday, December 8, 2020 at 3:28:53 PM UTC-6, jfbod...@gmail.com wrote:
> On Tuesday, December 8, 2020 at 3:15:57 PM UTC-6, jacobnavia wrote:
> > Le 08/12/2020 à 20:30, jfbod...@gmail.com a écrit :
> >
> > Hi
> > You have to eliminate text in character strings and character constants
> > first. Your program takes char *p = "/*"; as the start of a comment
> Bummer. I may fix that at some point, I may not.
Version 0.2 - should handle comment tokens in single- and double-quoted strings. I've done some very limited testing,
so don't be surprised if you come up with something that breaks it.
#include <stdio.h>
/**
* Strip comments from an input stream, write the result to an output stream.
* Whitespace is not compressed.
*
* Uses a table-driven state machine. States are:
*
* TEXT - not currently in a comment, output the character just read
* SQUOTE - currently in a single-quoted string, output the character just read even if it's part of a comment token
* ESC_SQUOTE - saw a backslash in a single-quoted string, output it, do not revert to text state if next character is quote
* DQUOTE - currently in a double-quoted string, output the character just read even if it's part of a comment token
* ESC_DQUOTE - saw a backslash in a double-quoted string, output it, do not revert to text state if next character is quote
* SLASH - saw what may be the beginning of an open comment token, do not output
* SLASH_END - saw something other than a * or / following a slash, output a / followed by the current character
* MULTI_STAR - saw what may be the beginning of a close multi-line comment token, do not output
* MULTI - currently in a multi-line comment, do not output the last character read
* MULTI_END - saw a complete close multi-line comment token, do not output
* SINGLE - currently in a single-line comment, do not output
*
* Table is indexed by state and character, giving us the new state.
*/
void stripComments( FILE *in, FILE *out )
{
int c;
enum state { TEXT, SLASH, SLASH_END, SQUOTE, DQUOTE, ESC_SQUOTE, ESC_DQUOTE, MULTI_STAR, MULTI, MULTI_END, SINGLE, NUM_STATES } curState = TEXT;
/**
* Initialize the state table so that everything transitions to TEXT - this is going to be
* true for almost all combinations.
*/
enum state transitions[NUM_STATES][256] = { { TEXT } };
/**
* If we're in a MULTI or SINGLE comment state, only a small
* set of characters bring us out of that state, so we initialize
* those rows to keep us in the comment state for all characters.
* Similar reasoning for the SQUOTE and DQUOTE states.
*/
for ( size_t i = 0; i < 256; i++ )
{
transitions[MULTI][i] = MULTI;
transitions[MULTI_STAR][i] = MULTI;
transitions[SINGLE][i] = SINGLE;
transitions[SLASH][i] = SLASH_END;
transitions[SQUOTE][i] = SQUOTE;
transitions[DQUOTE][i] = DQUOTE;
transitions[ESC_SQUOTE][i] = SQUOTE;
transitions[ESC_DQUOTE][i] = DQUOTE;
}
/**
* Set up the transitions to new states.
*/
transitions[MULTI]['*'] = MULTI_STAR;
transitions[MULTI_STAR]['/'] = MULTI_END;
transitions[TEXT]['/'] = SLASH;
transitions[TEXT]['"'] = DQUOTE;
transitions[TEXT]['\''] = SQUOTE;
transitions[SLASH]['/'] = SINGLE;
transitions[SLASH]['*'] = MULTI;
transitions[SINGLE]['\n'] = TEXT;
transitions[SQUOTE]['\\'] = ESC_SQUOTE;
transitions[DQUOTE]['\\'] = ESC_DQUOTE;
transitions[DQUOTE]['"'] = TEXT;
transitions[SQUOTE]['\''] = TEXT;
/**
* Read from the input stream until we see EOF. Output
* anything that's not in a comment.
*/
while ( ( c = fgetc( in ) ) != EOF )
{
curState = transitions[curState][c];
switch( curState )
{
/**
* This state is a bit of a hack. Since a single /
* may be the beginning of an open comment token, we
* don't want to write it to the output stream until
* we're sure it isn't part of a comment, but we don't
* know that until we read the next character. So we
* have this special state to tell us to write a /
* before writing the character we last read.
*/
case SLASH_END:
fputc( '/', out );
case SQUOTE:
case ESC_SQUOTE:
case DQUOTE:
case ESC_DQUOTE:
case TEXT:
fputc( c, out );
break;
default:
break;
}
}
}
int main( int argc, char **argv )
{
stripComments( stdin, stdout );
return 0;
}
[toc] | [prev] | [next] | [standalone]
| From | Anton Shepelev <anton.txt@gmail.com> |
|---|---|
| Date | 2020-12-13 00:04 +0300 |
| Message-ID | <20201213000420.e0133ed2544fec4859742c53@gmail.com> |
| In reply to | #157161 |
jfbode1029: > Version 0.2 - should handle comment tokens in single- and > double-quoted strings. I've done some very limited > testing, so don't be surprised if you come up with > something that breaks it. Doesn't seem to work with the following input between `---' markers: --- /\ /a --- The text a/*b*/c your program converts into ac, without the mandatory space in place of the comment. `a' and `c' shall remain different tokens. But you have an effient implementation of a transition table :-) -- () ascii ribbon campaign -- against html e-mail /\ http://preview.tinyurl.com/qcy6mjc [archived]
[toc] | [prev] | [next] | [standalone]
| From | Lew Pitcher <lew.pitcher@digitalfreehold.ca> |
|---|---|
| Date | 2020-12-08 21:38 +0000 |
| Message-ID | <rqorod$974$1@dont-email.me> |
| In reply to | #157101 |
On Tue, 08 Dec 2020 22:15:40 +0100, jacobnavia wrote: > Le 08/12/2020 à 20:30, jfbod...@gmail.com a écrit : > > Hi You have to eliminate text in character strings and character > constants first. Your program takes char *p = "/*"; as the start of a > comment Same issue, but with multibyte character constants, as in int p = '/*'; -- Lew Pitcher "In Skills, We Trust"
[toc] | [prev] | [next] | [standalone]
Page 11 of 20 — ← Prev page 1 … 9 10 [11] 12 13 … 20 Next page →
Back to top | Article view | comp.lang.c
csiph-web