Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #156943 > unrolled thread

Programming exercise/challenge

Started byTim Rentsch <tr.17687@z991.linuxsc.com>
First post2020-12-05 08:25 -0800
Last post2021-01-06 23:07 -0800
Articles 20 on this page of 399 — 24 participants

Back to article view | Back to comp.lang.c


Contents

  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 →


#158566

FromBart <bc@freeuk.com>
Date2021-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]


#158567

FromDave Dunfield <dave.dunfield@gmail.com>
Date2021-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]


#158571

FromBart <bc@freeuk.com>
Date2021-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]


#158572

FromDave Dunfield <dave.dunfield@gmail.com>
Date2021-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]


#158577

FromBart <bc@freeuk.com>
Date2021-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]


#158586

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-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]


#158579

FromBart <bc@freeuk.com>
Date2021-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]


#158583

FromDave Dunfield <dave.dunfield@gmail.com>
Date2021-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]


#158595

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-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]


#158601

FromBart <bc@freeuk.com>
Date2021-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]


#158652

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-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]


#158587

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-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]


#157095

From"jfbod...@gmail.com" <jfbode1029@gmail.com>
Date2020-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]


#157098

FromKaz Kylheku <563-365-8930@kylheku.com>
Date2020-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]


#157102

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-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]


#157101

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-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]


#157103

From"jfbod...@gmail.com" <jfbode1029@gmail.com>
Date2020-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]


#157161

From"jfbod...@gmail.com" <jfbode1029@gmail.com>
Date2020-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]


#157230

FromAnton Shepelev <anton.txt@gmail.com>
Date2020-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]


#157104

FromLew Pitcher <lew.pitcher@digitalfreehold.ca>
Date2020-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