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 3 of 20 — ← Prev page 1 2 [3] 4 5 … 20  Next page →


#157128

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-08 23:39 -0800
Message-ID<86im9b5sxg.fsf@linuxsc.com>
In reply to#157083
Anton Shepelev <anton.txt@gmail.com> writes:

> Kaz Kylheku:
>
>> This is a bug;
>
> For the benefit of whoever may be collecting the entries, I
> ask you to post full updated versions of your solutions, in
> addition to, indicating bugs.  It is much easier to copy-
> paste a program form the newsreader than manually to apply
> the indicated changes the previous copy, which is also
> error-prone.

Thank you for this comment.  Also, could people please limit
their source lines to 80 (or better, 79) characters?  Otherwise
various news handling software breaks the lines in places that
are in many cases inconvenient.

Oh, Anton, while I'm thinking of it - use int main( void ) rather
than void main( void ).  When I first compiled your program the
void return type on main() gave an error and I had to edit the
source to fix that.

[toc] | [prev] | [next] | [standalone]


#157227

FromAnton Shepelev <anton.txt@gmail.com>
Date2020-12-12 23:34 +0300
Message-ID<20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com>
In reply to#157128
Tim Rentsch:

> Also, could people please limit their source lines to 80
> (or better, 79) characters?

I always try keep my code within the standard width of 80
characters, so 79 is one character below my natural limit.
It was not hard to adapt my program to it.

> Otherwise various news handling software breaks the lines
> in places that are in many cases inconvenient.

Indeed. In this second fifth of the twenty-first century,
people still fail to design decent newsreaders and e-mail
clients.

> Oh, Anton, while I'm thinking of it -- use
> int main( void ) rather than void main( void ).  When I
> first compiled your program the void return type on main()
> gave an error and I had to edit the source to fix that.

Done.

My latest version refelcts my idea of a conceptually compact
solution with as little repetition as possible. Comment-
stripping is implemented as two connected state machines.
The outer machine takes care of line continuations while the
inner one processes the joined lines of code.

Since the inner machine I needed was a Mealy machine with
only one state whose output depended on the transition, I
converted it into a Moore machine  using a hack that let me
avoid additional states. In order not to introduce
additional state properties, I store them implicit in the
very ordering of the states. The table-driven approach saves
the repetition of the same input and test request in the
handlers of individual states.

/* ----------------------------- No comments -----------------------------V3-*/
/* A program to strip comments from a C source, by Anton Shepelev            */

#include<stdio.h>

/* Machine states ordered according to their role: */
typedef enum t_state
{  S_COD, S_CHR, S_CHR_ESC, S_STR, S_STR_ESC, /* echo   */
   S_IS_CM,                                   /* buffer */
   S_LCM, S_BCM, S_IS_BCM_END, S_BCM_END      /* ignore */  } t_state;

/* A state transition: */
/* TODO: buf is used in one entry only => hardcode: */
typedef struct
{  t_state state; /* current state */
   int     c;     /* input char    */
   t_state next;  /* next state    */  } t_trans;

/* Transition table:                                             */
/* EOF input denotes the fall-back:                              */
/* OPT1: precalculate indices to the first entry for each state. */
/* OPT2: seek transitions in O(1) time as xtab[state][char]      */
t_trans xtab[] =
{ /* state         char   next        */
   { S_COD       , '/' , S_IS_CM      },
   { S_COD       , '"' , S_STR        },
   { S_COD       , '\'', S_CHR        },
   { S_COD       , EOF , S_COD        },
   { S_IS_CM     , '/' , S_LCM        },
   { S_IS_CM     , '*' , S_BCM        },
   { S_IS_CM     , EOF , S_COD        },
   { S_LCM       , '\n', S_COD        },
   { S_LCM       , EOF , S_LCM        },
   { S_BCM       , '*' , S_IS_BCM_END },
   { S_BCM       , EOF , S_BCM        },
   { S_IS_BCM_END, '/' , S_COD        },
   { S_IS_BCM_END, '*' , S_IS_BCM_END }, /* <== thanks to Bart's test case */
   { S_IS_BCM_END, EOF , S_BCM        },
   { S_STR       , '\\', S_STR_ESC    },
   { S_STR       , '"' , S_COD        },
   { S_STR       , EOF , S_STR        },
   { S_STR_ESC   , EOF , S_STR        },
   { S_CHR       , '\\', S_CHR_ESC    },
   { S_CHR       , '\'', S_COD        },
   { S_CHR       , EOF , S_CHR        },
   { S_CHR_ESC   , EOF,  S_CHR        }  };

typedef struct
{  long cont_0; /* consequent line continations before buffered char */
   long cont_1; /* consequent line continations after  buffered char */
   char slash ; /* buffered charcater */  } t_buffer;

static void flush_cont( long * n, char print )
{  long i;
   if( print )
      for( i = 0; i < *n; i += 1 )
      {  putchar('\\'); putchar('\n');  }
   *n = 0;
}

static void output( t_buffer *buf, char print, int c  )
{  flush_cont( &buf->cont_0, 1 );

   if( buf->slash )
   {  if( print ) putchar( '/' );
      buf->slash = 0;
   }

   flush_cont( &buf->cont_1, print );

   if( print && c != EOF )
   {  putchar( c );  }
}

/* Perform a step on the state machine: */
static void step( t_state *state, int c, t_buffer *buf )
{  t_trans *trans;
   t_state  prevstate;
   int      i;

   i = 0;
   while( 1 )
   {  trans = &xtab[i];
      i     = i + 1;

      if( trans->state != *state ) continue;
      if( trans->c     !=  c     )
      if( trans->c     !=  EOF   ) continue;
      break;
   }
   prevstate = *state;
   *state = trans->next;

   /* Replace a block comment with a space: */
   if( prevstate == S_IS_BCM_END && *state == S_COD )
   {  c = ' ';  }

   if( *state == S_IS_CM ) buf->slash = 1;
   else                    output( buf, *state < S_IS_CM, c );
}

int main( void )
{  int      c, p, i;
   char     cont;
   t_buffer buf;
   t_state  state;

   cont       = 0;
   buf.cont_0 = 0;
   buf.cont_1 = 0;
   buf.slash  = 0;
   state      = S_COD;
   c          = '\0';
   while( 1 )
   {  p = c;
      c = getc( stdin );

      if( p == '\\' && c == '\n' )
      {  cont = 1; continue; }

      if( cont )
      {       if( state <  S_IS_CM ) buf.cont_0 += 1;
         else if( state == S_IS_CM ) buf.cont_1 += 1;
         cont   = 0;
         continue;
      }

      if( p != '\0' )
      {  step( &state, p, &buf );  }

      if( p == EOF )
      {  break;  }
   }
}

[toc] | [prev] | [next] | [standalone]


#157245

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-12 19:28 -0800
Message-ID<86h7oq1j24.fsf@linuxsc.com>
In reply to#157227
Anton Shepelev <anton.txt@gmail.com> writes:

> My latest version refelcts my idea of a conceptually compact
> solution with as little repetition as possible.  Comment-
> stripping is implemented as two connected state machines.
> The outer machine takes care of line continuations while the
> inner one processes the joined lines of code.  [...]

I have not yet looked at this in detail but I did save a copy
for the assemblage of all posted programs.  May have more
later.

[toc] | [prev] | [next] | [standalone]


#157867

Fromkegs@provalid.com (Kent Dickey)
Date2020-12-29 10:34 -0600
Message-ID<taadnWJ7Q5Y_x3bCnZ2dnUU7-fXNnZ2d@giganews.com>
In reply to#157227
In article <20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com>,
Anton Shepelev  <anton.txt@gmail.com> wrote:
>My latest version refelcts my idea of a conceptually compact
>solution with as little repetition as possible. Comment-
>stripping is implemented as two connected state machines.
>The outer machine takes care of line continuations while the
>inner one processes the joined lines of code.
>
>Since the inner machine I needed was a Mealy machine with
>only one state whose output depended on the transition, I
>converted it into a Moore machine  using a hack that let me
>avoid additional states. In order not to introduce
>additional state properties, I store them implicit in the
>very ordering of the states. The table-driven approach saves
>the repetition of the same input and test request in the
>handlers of individual states.

I haven't looked this over yet, but it fails two of my tests:

Test '/* mixing */ "quotes /* so there */ '/* hmm */ " /* last one */
Line 36 "/* mixing */ 'quotes /* so there */ "/* hmm */ ' /* last one */

I believe the proper answer for those two lines is:

Test '/* mixing */ "quotes /* so there */ '  " /* last one */
Line 36 "/* mixing */ 'quotes /* so there */ "  ' /* last one */

This code gives:

Test '/* mixing */ "quotes   '/* hmm */ " /* last one */
Line 36 "/* mixing */ 'quotes   "/* hmm */ ' /* last one */

Kent

[toc] | [prev] | [next] | [standalone]


#157881

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-29 20:05 -0800
Message-ID<86im8kueel.fsf@linuxsc.com>
In reply to#157867
kegs@provalid.com (Kent Dickey) writes:

> In article <20201212233442.8debf749db7ca9bee3ec7bcd@gmail.com>,
> Anton Shepelev  <anton.txt@gmail.com> wrote:
>
>> My latest version refelcts my idea of a conceptually compact
>> solution with as little repetition as possible.  Comment-
>> stripping is implemented as two connected state machines.
>> The outer machine takes care of line continuations while the
>> inner one processes the joined lines of code.
>>
>> Since the inner machine I needed was a Mealy machine with
>> only one state whose output depended on the transition, I
>> converted it into a Moore machine  using a hack that let me
>> avoid additional states.  In order not to introduce
>> additional state properties, I store them implicit in the
>> very ordering of the states.  The table-driven approach saves
>> the repetition of the same input and test request in the
>> handlers of individual states.
>
> I haven't looked this over yet, but it fails two of my tests:
>
> Test '/* mixing */ "quotes /* so there */ '/* hmm */ " /* last one */
> Line 36 "/* mixing */ 'quotes /* so there */ "/* hmm */ ' /* last one */

Note that this input is not lexically well-formed.  The first
line has a string starting with " that is not finished by the end
of that line.  Also the second line has a character constant
starting with ' that is not finished by the end of that line.
(tested with gcc -E -)

[toc] | [prev] | [next] | [standalone]


#156978

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-06 06:03 -0800
Message-ID<86360jkp4h.fsf@linuxsc.com>
In reply to#156946
Kaz Kylheku <563-365-8930@kylheku.com> writes:

> On 2020-12-05, Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>
>> as it's sensible.  Use no 'goto' statements.  Limit function
>> bodies to no more than 25 lines.
>
> How about versions, A and B, of this exercise:
>
> A - Use no goto statements.

As long as version A is done, also doing a version B
is certainly welcome.

> B - Use nothing but goto statements (and essential function calls).

I take this to mean the code does not use any for's, switch's,
while's (including do/while), break's, or continue's.  A program
all of whose statements are 'goto' statements isn't very
interesting.

[toc] | [prev] | [next] | [standalone]


#156961

Fromdfs <nospam@dfs.com>
Date2020-12-05 13:58 -0500
Message-ID<5MQyH.103588$lo15.100353@fx35.iad>
In reply to#156943
On 12/05/2020 11:25 AM, Tim Rentsch wrote:
> Prompted by some recent discussion regarding 'goto' statements and
> state machines, I would like to propose a programming exercise.
> (It is perhaps a bit too large to be called an exercise, but not so
> difficult that it deserves the label of challenge.  On the other
> hand there are some constraints so maybe challenge is apropos.  In
> any case somewhere in between those two bounds.)
> 
> Short problem statement:  a C program to remove comments from C
> source input.
> 
> Specifics:  Remove both /*...*/ and //... style comments.  Don't
> worry about trigraphs.  Read from stdin, write to stdout, and
> diagnostics (if any) go to stderr.  If EOF is seen inside a
> comment, do something sensible but it doesn't matter what as long
> as it's sensible.  Use no 'goto' statements.  Limit function
> bodies to no more than 25 lines.
> 
> Other:  feel free to handle corner cases as you see fit, as long
> as there is some description of what choice was made.
> 
> Hopefully it will be a fun exercise.  It isn't trivial but it
> shouldn't take too long either.


Shortest code "wins"?

I'm sure you know this challenge can't provide a reliable result if 
comment lines beginning with /* or // contain source code.

Do you have a 'tricky' block of code and comments to work from?


[toc] | [prev] | [next] | [standalone]


#156963

FromJorgen Grahn <grahn+nntp@snipabacken.se>
Date2020-12-05 21:37 +0000
Message-ID<slrnrsnvck.2ptb.grahn+nntp@frailea.sa.invalid>
In reply to#156961
On Sat, 2020-12-05, dfs wrote:
> On 12/05/2020 11:25 AM, Tim Rentsch wrote:
>> Prompted by some recent discussion regarding 'goto' statements and
>> state machines, I would like to propose a programming exercise.
>> (It is perhaps a bit too large to be called an exercise, but not so
>> difficult that it deserves the label of challenge.  On the other
>> hand there are some constraints so maybe challenge is apropos.  In
>> any case somewhere in between those two bounds.)
>> 
>> Short problem statement:  a C program to remove comments from C
>> source input.
>> 
>> Specifics:  Remove both /*...*/ and //... style comments.  Don't
>> worry about trigraphs.  Read from stdin, write to stdout, and
>> diagnostics (if any) go to stderr.  If EOF is seen inside a
>> comment, do something sensible but it doesn't matter what as long
>> as it's sensible.  Use no 'goto' statements.  Limit function
>> bodies to no more than 25 lines.
>> 
>> Other:  feel free to handle corner cases as you see fit, as long
>> as there is some description of what choice was made.
>> 
>> Hopefully it will be a fun exercise.  It isn't trivial but it
>> shouldn't take too long either.
>
>
> Shortest code "wins"?

He didn't say anything about that, and code size isn't a good
indicator of anything, so I'd say "no".

It's a nice problem. (Unfortunately I'm participating in Advent of
Code already, and together with hobby projects that takes up all my
programming attention.)

/Jorgen

-- 
  // Jorgen Grahn <grahn@  Oo  o.   .     .
\X/     snipabacken.se>   O  o   .

[toc] | [prev] | [next] | [standalone]


#156979

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-06 06:13 -0800
Message-ID<86y2ibja47.fsf@linuxsc.com>
In reply to#156963
Jorgen Grahn <grahn+nntp@snipabacken.se> writes:

> On Sat, 2020-12-05, dfs wrote:
>
>> On 12/05/2020 11:25 AM, Tim Rentsch wrote:
>>
>>> Prompted by some recent discussion regarding 'goto' statements and
>>> state machines, I would like to propose a programming exercise.
>>> (It is perhaps a bit too large to be called an exercise, but not so
>>> difficult that it deserves the label of challenge.  On the other
>>> hand there are some constraints so maybe challenge is apropos.  In
>>> any case somewhere in between those two bounds.)
>>>
>>> Short problem statement:  a C program to remove comments from C
>>> source input.
>>>
>>> Specifics:  Remove both /*...*/ and //... style comments.  Don't
>>> worry about trigraphs.  Read from stdin, write to stdout, and
>>> diagnostics (if any) go to stderr.  If EOF is seen inside a
>>> comment, do something sensible but it doesn't matter what as long
>>> as it's sensible.  Use no 'goto' statements.  Limit function
>>> bodies to no more than 25 lines.
>>>
>>> Other:  feel free to handle corner cases as you see fit, as long
>>> as there is some description of what choice was made.
>>>
>>> Hopefully it will be a fun exercise.  It isn't trivial but it
>>> shouldn't take too long either.
>>
>> Shortest code "wins"?
>
> He didn't say anything about that, and code size isn't a good
> indicator of anything, so I'd say "no".

Right.

> It's a nice problem.

Thank you sir.  Always good to hear.

> (Unfortunately I'm participating in Advent of Code already, and
> together with hobby projects that takes up all my programming
> attention.)

Sorry to hear you won't have time for this one, but good luck
with your other efforts.

[toc] | [prev] | [next] | [standalone]


#156990

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-12-06 18:00 +0100
Message-ID<rqj2nj$fqm$1@dont-email.me>
In reply to#156979
Le 06/12/2020 à 15:13, Tim Rentsch a écrit :
>You haven't seen my contribution I suppose?

[toc] | [prev] | [next] | [standalone]


#156996

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-06 12:31 -0800
Message-ID<86lfeak763.fsf@linuxsc.com>
In reply to#156990
jacobnavia <jacob@jacob.remcomp.fr> writes:

> You haven't seen my contribution I suppose?

I see that you have posted two different versions, and have
dutifully made copies of both, but have not yet looked at either
in detail.  The same holds for other peoples' postings also.

[toc] | [prev] | [next] | [standalone]


#156981

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-06 06:26 -0800
Message-ID<86tuszj9hz.fsf@linuxsc.com>
In reply to#156961
dfs <nospam@dfs.com> writes:

> On 12/05/2020 11:25 AM, Tim Rentsch wrote:
>
>> Prompted by some recent discussion regarding 'goto' statements and
>> state machines, I would like to propose a programming exercise.
>> (It is perhaps a bit too large to be called an exercise, but not so
>> difficult that it deserves the label of challenge.  On the other
>> hand there are some constraints so maybe challenge is apropos.  In
>> any case somewhere in between those two bounds.)
>>
>> Short problem statement:  a C program to remove comments from C
>> source input.
>>
>> Specifics:  Remove both /*...*/ and //... style comments.  Don't
>> worry about trigraphs.  Read from stdin, write to stdout, and
>> diagnostics (if any) go to stderr.  If EOF is seen inside a
>> comment, do something sensible but it doesn't matter what as long
>> as it's sensible.  Use no 'goto' statements.  Limit function
>> bodies to no more than 25 lines.
>>
>> Other:  feel free to handle corner cases as you see fit, as long
>> as there is some description of what choice was made.
>>
>> Hopefully it will be a fun exercise.  It isn't trivial but it
>> shouldn't take too long either.
>
> Shortest code "wins"?

I really don't intend grading them at all.  My interest is to see
how different people approach the problem, considering the stated
limitations.  As far as my own reactions go, there are several
ways I might judge the quality of a program, but program length
is not high on the list of any of those.

> I'm sure you know this challenge can't provide a reliable result if
> comment lines beginning with /* or // contain source code.

It surprises me that you say that.  To me it seems obvious that
comments can be removed unambiguously, because C compilers do it.

> Do you have a 'tricky' block of code and comments to work from?

Part of the problem is to figure out what needs doing, so I feel
like showing a bunch of test cases would be, at least to an
extent, giving the game away.  Assuming of course that is what
you meant.. or did you mean something else?

[toc] | [prev] | [next] | [standalone]


#156964

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-12-05 23:32 +0100
Message-ID<rqh1p9$unj$1@dont-email.me>
In reply to#156943
Le 05/12/2020 à 17:25, Tim Rentsch a écrit :
> Prompted by some recent discussion regarding 'goto' statements and
> state machines, I would like to propose a programming exercise.
> (It is perhaps a bit too large to be called an exercise, but not so
> difficult that it deserves the label of challenge.  On the other
> hand there are some constraints so maybe challenge is apropos.  In
> any case somewhere in between those two bounds.)
> 
> Short problem statement:  a C program to remove comments from C
> source input.
> 
> Specifics:  Remove both /*...*/ and //... style comments.  Don't
> worry about trigraphs.  Read from stdin, write to stdout, and
> diagnostics (if any) go to stderr.  If EOF is seen inside a
> comment, do something sensible but it doesn't matter what as long
> as it's sensible.  Use no 'goto' statements.  Limit function
> bodies to no more than 25 lines.
> 
> Other:  feel free to handle corner cases as you see fit, as long
> as there is some description of what choice was made.
> 
> Hopefully it will be a fun exercise.  It isn't trivial but it
> shouldn't take too long either.
> 
Here is a version full of bugs (not well tested)
---------------------------------------------------cut here
#include <stdio.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
     if (argc < 2) { // print usage
         fprintf(stderr,"Usage: nocomments <file>\n");
         return 3;
     }
     FILE *f=fopen(argv[1],"r");
     if (f == NULL) { // Error can't open
         fprintf(stderr,"Impossible to open %s\n",argv[1]);
         return 4;
     }
     int c = fgetc(f);
     while (c != EOF) { // Until the end of the file
         // There are 3 characters that have a special action required:
         // 1) The / character that could introduce a comment
         // 2) The " character that introduces a string
         // 3) the ' character that introduces a character constant
         if (c == '/') { // test for a comment
             c = fgetc(f);
             if (c == EOF) return 2;
             if (c == '/') { // this is a comment until the end of the line
                 while (c != '\n' && c != EOF) {
                     c = fgetc(f); // ignore everything
                 }
                 if (c == EOF) return 2;
                 putchar(c); // Put the new line char
             }
             else if (c == '*') { // Multi line comment
                 while (c != EOF) {
                     c = fgetc(f);
                     if (c == EOF) return 2;
                     else if (c == '*') {
                         c = fgetc(f);
                         if (c == '/') break;
                     }
                 }
                 if (c == EOF) return 2;
             }
             else { // That was a lone /
                 putchar('/');
                 putchar(c);
             }
         }
         else if (c == '"') { // String
             putchar(c);
             c = fgetc(f);
             if (c == EOF) return 2;
             while (c != EOF && c != '"') {
                 putchar(c);
                 if (c == '\\') {
                     c = fgetc(f);
                     if (c == EOF) return 2;
                     putchar(c);
                     if (c == 'x' || c == 'X' || c == 'u' || c == 'U') {
                         c = fgetc(f);
                         while (isxdigit(c) && c != EOF) {
                             putchar(c);
                             c = fgetc(f);
                         }
                         if (c == EOF)
                             return 2;
                     }
                 }
                 c = fgetc(f);
             }
             putchar(c); // put the closing double quote
         }
         else if (c == '\'') { // Character constant
             putchar(c);
             c = fgetc(f);
             while (c != '\'' && c != EOF) {
                 if (c == '\\') { // escaped char
                     putchar(c);
                     c = fgetc(f);
                     if (c == EOF) return 2;
                     putchar(c);
                     if (c == 'x' || c == 'X' || c == 'u' || c == 'U') {
                         // Not all posible character escapes are tested 
here
                         c = fgetc(f);
                         while (isxdigit(c) && c != EOF) {
                             putchar(c);
                             c = fgetc(f);
                         }
                         if (c == EOF)
                             return 2;
                     }
                 }
                 else putchar(c);
                 c = fgetc(f);
             }
             if (c == EOF) return 2;
             else putchar(c);
         }
         else putchar(c);
         c = fgetc(f);
     }
     return 0;
}

[toc] | [prev] | [next] | [standalone]


#156984

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-12-06 17:18 +0100
Message-ID<rqj080$um4$1@dont-email.me>
In reply to#156964
Here is an impoved version, with more comments and comments generated by 
the line splicing feature.

#include <stdio.h>
#include <ctype.h>
/* This program will eliminate comments from a C source file given in 
the command
    line. It returns 5 if an abnormal eof was found in a single line 
comment,
    6 if EOF was found in a multi-line comment, 7 if EOF appeared within 
a string,
    8 if EOF occurred within a character qquote sequence.
    If all is OK the result is zero.
*/
int main(int argc,char *argv[])
{
     if (argc < 2) { // print usage
         fprintf(stderr,"Usage: nocomments <file>\n");
         return 3;
     }
     FILE *f=fopen(argv[1],"r");
     // Note that this file is never closed. We rely on the operating 
system to
     // close it for us.
     if (f == NULL) { // Error can't open
         fprintf(stderr,"Impossible to open %s\n",argv[1]);
         return 4;
     }
     int c = fgetc(f);
     while (c != EOF) { // Until the end of the file
         // There are 3 characters that have a special action required:
         // 1) The / character that could introduce a comment
         // 2) The " character that introduces a string
         // 3) the ' character that introduces a character constant
         if (c == '/') { // test for a comment
             c = fgetc(f);
             if (c == EOF) return 5;
             if (c == '/') { // this is a comment until the end of the line
                 while (c != '\n' && c != EOF) {
                     c = fgetc(f); // ignore everything
                 }
                 if (c == EOF) return 5;
                 putchar(c); // Put the new line char
             }
             else if (c == '*') { // Multi line comment
                 while (c != EOF) {
                     c = fgetc(f);
                     if (c == EOF) return 6;
                     else if (c == '*') {
                         c = fgetc(f);
                         if (c == '/') break;
                     }
                 }
                 if (c == EOF) return 6;
                 // Note that we do NOT echo the '/' since it belongs to 
the comment
             }
             else if (c == '\\') {
                 c = fgetc(f);
                 if (c == '\n') {
                     c = fgetc(f);
                     if (c== '/') {
                         while (c != EOF && c != '\n') {
                             c = fgetc(f);
                         }
                         if (c == EOF) return 5;
                     }
                     else { putchar('\\'); }
                 }
                 putchar(c);
             }
             else { // That was a lone /
                 putchar('/');
                 putchar(c);
             }
         }
         else if (c == '"') { // String
             putchar(c);
             c = fgetc(f);
             if (c == EOF) return 2;
             while (c != EOF && c != '"') {
                 putchar(c);
                 if (c == '\\') {
                     c = fgetc(f);
                     if (c == EOF) return 7;
                     putchar(c);
                 }
                 c = fgetc(f); // Read the next char of the string
             }
             if (c == EOF) return 7;
             putchar(c); // put the closing double quote
         }
         else if (c == '\'') { // Character constant
             putchar(c);
             c = fgetc(f);
             while (c != '\'' && c != EOF) {
                 if (c == '\\') { // escaped char
                     putchar(c);
                     c = fgetc(f);
                     if (c == EOF) return 8;
                 }
                 putchar(c); // Not an escaped char, just a normal one
                 c = fgetc(f);
             }
             if (c == EOF) return 8;
             else putchar(c); // Put the closing quote
         }
         else putchar(c); // All other characters besides '/', '"', and 
' are echoed back
         c = fgetc(f);   // Read next character of the source file
     }
     return 0; // No errors
}
#include <stdio.h>
#include <ctype.h>
/* This program will eliminate comments from a C source file given in 
the command
    line. It returns 5 if an abnormal eof was found in a single line 
comment,
    6 if EOF was found in a multi-line comment, 7 if EOF appeared within 
a string,
    8 if EOF occurred within a character qquote sequence.
    If all is OK the result is zero.
*/
int main(int argc,char *argv[])
{
     if (argc < 2) { // print usage
         fprintf(stderr,"Usage: nocomments <file>\n");
         return 3;
     }
     FILE *f=fopen(argv[1],"r");
     // Note that this file is never closed. We rely on the operating 
system to
     // close it for us.
     if (f == NULL) { // Error can't open
         fprintf(stderr,"Impossible to open %s\n",argv[1]);
         return 4;
     }
     int c = fgetc(f);
     while (c != EOF) { // Until the end of the file
         // There are 3 characters that have a special action required:
         // 1) The / character that could introduce a comment
         // 2) The " character that introduces a string
         // 3) the ' character that introduces a character constant
         if (c == '/') { // test for a comment
             c = fgetc(f);
             if (c == EOF) return 5;
             if (c == '/') { // this is a comment until the end of the line
                 while (c != '\n' && c != EOF) {
                     c = fgetc(f); // ignore everything
                 }
                 if (c == EOF) return 5;
                 putchar(c); // Put the new line char
             }
             else if (c == '*') { // Multi line comment
                 while (c != EOF) {
                     c = fgetc(f);
                     if (c == EOF) return 6;
                     else if (c == '*') {
                         c = fgetc(f);
                         if (c == '/') break;
                     }
                 }
                 if (c == EOF) return 6;
                 // Note that we do NOT echo the '/' since it belongs to 
the comment
             }
             else if (c == '\\') {
                 c = fgetc(f);
                 if (c == '\n') {
                     c = fgetc(f);
                     if (c== '/') {
                         while (c != EOF && c != '\n') {
                             c = fgetc(f);
                         }
                         if (c == EOF) return 5;
                     }
                     else { putchar('\\'); }
                 }
                 putchar(c);
             }
             else { // That was a lone /
                 putchar('/');
                 putchar(c);
             }
         }
         else if (c == '"') { // String
             putchar(c);
             c = fgetc(f);
             if (c == EOF) return 2;
             while (c != EOF && c != '"') {
                 putchar(c);
                 if (c == '\\') {
                     c = fgetc(f);
                     if (c == EOF) return 7;
                     putchar(c);
                 }
                 c = fgetc(f); // Read the next char of the string
             }
             if (c == EOF) return 7;
             putchar(c); // put the closing double quote
         }
         else if (c == '\'') { // Character constant
             putchar(c);
             c = fgetc(f);
             while (c != '\'' && c != EOF) {
                 if (c == '\\') { // escaped char
                     putchar(c);
                     c = fgetc(f);
                     if (c == EOF) return 8;
                 }
                 putchar(c); // Not an escaped char, just a normal one
                 c = fgetc(f);
             }
             if (c == EOF) return 8;
             else putchar(c); // Put the closing quote
         }
         else putchar(c); // All other characters besides '/', '"', and 
' are echoed back
         c = fgetc(f);   // Read next character of the source file
     }
     return 0; // No errors
}

[toc] | [prev] | [next] | [standalone]


#156988

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-12-06 17:51 +0100
Message-ID<rqj274$cds$1@dont-email.me>
In reply to#156984
Sorry, and error in cut/paste and the text appears twice!

[toc] | [prev] | [next] | [standalone]


#156998

FromBart <bc@freeuk.com>
Date2020-12-06 22:27 +0000
Message-ID<1VczH.179018$GyS9.167571@fx04.ams4>
In reply to#156984
On 06/12/2020 16:18, jacobnavia wrote:
> Here is an impoved version, with more comments and comments generated by 
> the line splicing feature.
> 
> #include <stdio.h>
> #include <ctype.h>
> /* This program will eliminate comments from a C source file given in 
> the command

<snip>

Strangely this has the same issue as Kaz's version. Given this input:

----------------------------------------------------------
#define TKFLG_DONTFOLD       0x100  /* Omit constant folding 
optimizations */

/************** End of parse.h 
***********************************************/
/************** Continuing where we left off in sqliteInt.h 
******************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stddef.h>

/*
** Use a macro to replace memcpy() if compiled with SQLITE_INLINE_MEMCPY.
** This allows better measurements of where memcpy() is used when running
** cachegrind.  But this macro version of memcpy() is very slow so it
** should not be used in production.  This is a performance measurement
** hack only.
*/
#ifdef SQLITE_INLINE_MEMCPY
----------------------------------------------------------

The output is:

----------------------------------------------------------
#define TKFLG_DONTFOLD       0x100



#ifdef SQLITE_INLINE_MEMCPY
----------------------------------------------------------

(Full file: https://www.sqlite.org/download.html, first source code link.)

[toc] | [prev] | [next] | [standalone]


#157013

Fromjacobnavia <jacob@jacob.remcomp.fr>
Date2020-12-07 09:37 +0100
Message-ID<rqkpkh$ni5$1@dont-email.me>
In reply to#156998
I corrected that. The problem is that if I read a '*', I read the next 
character to see if it is a '/' that would close the multi-line comment. 
If it is NOT, I ignore the character and just go on reading the next 
character. If the next character is a '/' I ignore it too since it 
wasn't after a '*', that I discarded!

Solution: Just make an ungetc. Corrected version is posted soon.

[toc] | [prev] | [next] | [standalone]


#157023

FromRichard Damon <Richard@Damon-Family.org>
Date2020-12-07 07:36 -0500
Message-ID<klpzH.51365$Oa.49632@fx16.iad>
In reply to#157013
On 12/7/20 3:37 AM, jacobnavia wrote:
> I corrected that. The problem is that if I read a '*', I read the next
> character to see if it is a '/' that would close the multi-line comment.
> If it is NOT, I ignore the character and just go on reading the next
> character. If the next character is a '/' I ignore it too since it
> wasn't after a '*', that I discarded!
> 
> Solution: Just make an ungetc. Corrected version is posted soon.

Been thinking a bit of the problem, and this shows one of the traps in
it. We are asked to remove the comments but the lines ending in \ being
connected together aren't in general comments, so unless they are inside
comments need to be retained, so we can't just remove them at an inner
level or we are doing an transformation that wasn't in the spec.

[toc] | [prev] | [next] | [standalone]


#157117

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2020-12-08 22:49 -0800
Message-ID<86tusv79ug.fsf@linuxsc.com>
In reply to#157023
Richard Damon <Richard@Damon-Family.org> writes:

> On 12/7/20 3:37 AM, jacobnavia wrote:
>
>> I corrected that.  The problem is that if I read a '*', I read the next
>> character to see if it is a '/' that would close the multi-line comment.
>> If it is NOT, I ignore the character and just go on reading the next
>> character.  If the next character is a '/' I ignore it too since it
>> wasn't after a '*', that I discarded!
>>
>> Solution:  Just make an ungetc.  Corrected version is posted soon.
>
> Been thinking a bit of the problem, and this shows one of the traps in
> it.  We are asked to remove the comments but the lines ending in \ being
> connected together aren't in general comments, so unless they are inside
> comments need to be retained, so we can't just remove them at an inner
> level or we are doing an transformation that wasn't in the spec.

Right.

[toc] | [prev] | [next] | [standalone]


#156992

FromBen Bacarisse <ben.usenet@bsb.me.uk>
Date2020-12-06 17:51 +0000
Message-ID<871rg2rffu.fsf@bsb.me.uk>
In reply to#156943
Tim Rentsch <tr.17687@z991.linuxsc.com> writes:

> Prompted by some recent discussion regarding 'goto' statements and
> state machines, I would like to propose a programming exercise.
> (It is perhaps a bit too large to be called an exercise, but not so
> difficult that it deserves the label of challenge.  On the other
> hand there are some constraints so maybe challenge is apropos.  In
> any case somewhere in between those two bounds.)
>
> Short problem statement:  a C program to remove comments from C
> source input.

Apologies for non-C code but I could not resist...

In all the goto/no goto discussion it's easy to lose track of the fact
the C does not necessarily have the best primitives for constructing
this sort of program.  I don't mean things like, say, complex regular
expressions, or built-in grammar parsing (al la Perl6).  I mean basic
language constructs.

Here is a solution in Haskell.  It is deliberately not very "Haskelly"
because I want to keep the code really simple for programmers unfamiliar
with the language.

main = do input <- getContents
          putStr (stripComments (logicalLines input))

stripComments []                 = []
stripComments ('/' : '/' : rest) = stripComments (dropWhile (/= '\n') rest)
stripComments ('/' : '*' : rest) = ' ' : stripComments (nestedComment rest)
stripComments (c   :       rest) =  c : if c == '\'' || c == '"'
                                        then skipQuote c rest
                                        else stripComments rest

nestedComment ('*' : '/' : rest) = rest
nestedComment (c   :       rest) = nestedComment rest
nestedComment []                 = error "Unterminated comment"

skipQuote q ('\\' : c : rest) = '\\' : c : skipQuote q rest
skipQuote q (c    :     rest) = c : if c == q
                                    then stripComments rest
                                    else skipQuote q rest
skipQuote q []                =  error "Unterminated literal"

logicalLines ('\\' : '\n' : rest) =     logicalLines rest
logicalLines (c    :        rest) = c : logicalLines rest
logicalLines []                   = []

(Notes: string are lists and : is the list "cons" operation.  [] is the
empty list.  Function application is by juxtaposition: f x and is the
highest priority operator.  Functions are defined by cases that are
written using simple pattern matching.  For example, stripComments [] =
[] means return nothing when passed nothing.)

Obviously for some there will be a high language barrier, but I think
it's worth having a go at following what's happening.

Haskell has two big advantages for this exercise: pattern matched cases
and lazy evaluation.  The case-by-case definition lets you say, very
clearly, how to handle each situation, and the lazy evaluation means you
can chain function calls to make processing pipelines like this:

  putStr (strip (logicalLines input))

This means output the string of characters that result from stripping
comments from the logical lines, but at no time is the whole input in
memory.  Characters are fetched as needed to satisfy each function call.

Originally, I just wrote stripComments, but when I decided to include
logical line processing (C's \<newline> "continuation" mechanism) it was
trivial to put it in.  If I want to do trigraphs, that, too, would be a
simple addition to the pipeline.  (There is even an operator to make
this simpler, but I did not want to add too many peculiar symbols.)

I am now tempted to try to write a C version that preserves as much of
what I see as the clarity and simplicity of this solution.  I am not as
hopeful as I'd like to be about that!

-- 
Ben.

[toc] | [prev] | [next] | [standalone]


Page 3 of 20 — ← Prev page 1 2 [3] 4 5 … 20  Next page →

Back to top | Article view | comp.lang.c


csiph-web