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


Groups > sci.physics > #644478

Re: 2 lines, 2^2 states, easily modified to 3^2 states.

From owl <owl@rooftop.invalid>
Newsgroups comp.os.linux.advocacy, sci.physics
Subject Re: 2 lines, 2^2 states, easily modified to 3^2 states.
Date 2017-08-05 05:42 +0000
Organization O.W.L.
Message-ID <azb32.b904ta@rooftop.invalid> (permalink)
References (2 earlier) <Jeff-Relf.Me@Aug.4--1.48pm.Seattle.2017> <om2v602ceo@news4.newsguy.com> <Jeff-Relf.Me@Aug.4--6.20pm.Seattle.2017> <szbagi03.ab@rooftop.invalid> <Jeff-Relf.Me@Aug.4--9.39pm.Seattle.2017>

Cross-posted to 2 groups.

Show all headers | View raw


In comp.os.linux.advocacy Jeff-Relf.Me wrote:
> You ( Owl ) replied ( to me ):
> > >   int x = 0, F, B ;
> > >   while ( x++ < 100 ) printf("\n"), F = !(x%3), B = !(x%5), printf(
> > >     F && B ? "FizBuz" : F ? "Fiz" : B ? "Buz" : "%d", x );
> > 
> > Because nothing says "readable" and "maintainable" like a bunch of nested
> > ternary operations....  Try it with four values, where your state count 
> > goes to 16.  See how "readable" that is with your approach.
> 
> How about ? :
> 
>   int x = 0 ;  char *Say[4] = { "%d\n", "Buz\n", "Fiz\n", "FizBuz\n" };
>   while ( x++ < 100 ) printf( Say[ 2*!(x%3) + !(x%5) ], x );
> 
> 2 lines, 2^2 states, easily modified to 3^2 states.

Better, but you're still hard-coding values.  And 2^3 will need an 8-member
array and 2^4 will need 16.  See my other post showing 2^4.


> Full Answer:  http://Jeff-Relf.Me/FizBuz.HTM 
> 
> The I/O is the limiting factor, not "x%3", so:
> 
>   int x = 0 ;  char *Say[4] = { "%d\n", "Buz\n", "Fiz\n", "FizBuz\n" };
>   while ( x++ < 100 ) printf( Say[ 2*!(x%3) + !(x%5) ], x );
> 
> 2 lines, 2^2 states, easily modified to 2^3 states:
> 
>    4*!(x%3) + 2*!(x%5) + !(x%7)
> 

You're still limited by just having printf() pointing into an array
of strings.  I use an array of function pointers so that you can do
something other than printf() -- or in addition to printf() --
for different combinations.

For example, here a match on all four values calls zenity to
display a dialog alerting on a match:

http://imgur.com/a/rHRmP

/*void onetwofoureight(int x){printf("FizzBuzzGoozKaaz\n");}
*/
void onetwofoureight(int x)
{
   char cmd[100]={0};
   printf("FizzBuzzGoozKaaz\n");
   sprintf(cmd,"zenity --info --text=\"Found a FizzBuzzGoozKaaz at %d\"",x);
   system(cmd);
}

Back to sci.physics | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:11 -0700
  Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:47 -0700
  Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:52 -0700
    Re: Mozilla ThunderBird. Snit <usenet@gallopinginsanity.com> - 2017-08-04 10:43 -0700
      Re: FizzBuzz is a trick question. Snit <usenet@gallopinginsanity.com> - 2017-08-04 11:47 -0700
        Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:51 -0700
        Re: I'm the best c coder here. Snit <usenet@gallopinginsanity.com> - 2017-08-04 14:03 -0700
        Re: I'm the best c coder here. "F. Russell" <fr@random.info> - 2017-08-04 23:15 +0000
          Re: I'm the best c coder here. benj <benj@nobody.net> - 2017-08-04 19:35 -0400
            Re: I'm the best c coder here. "F. Russell" <fr@random.info> - 2017-08-05 16:08 +0000
          Re: Fabian seldom writes code, much less test it. owl <owl@rooftop.invalid> - 2017-08-05 03:09 +0000
            Re: 2 lines, 2^2 states, easily modified to 3^2 states. owl <owl@rooftop.invalid> - 2017-08-05 05:42 +0000
          Re: Fabian seldom writes code, much less test it. "F. Russell" <fr@random.info> - 2017-08-05 13:37 +0000
          Re: Fabian seldom writes code, much less test it. "F. Russell" <fr@random.info> - 2017-08-05 14:25 +0000
        Re: I'm the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 03:22 +0000
          Re: I'm _still_ the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 06:12 +0000
          Re: Owl's FizBuzGozKaz branches 5 times more often. owl <owl@rooftop.invalid> - 2017-08-05 15:40 +0000
          Re: I'm _still_ the best c coder here. moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-05 22:16 +0000
            Re: I increment things at the _start_ of a loop. moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-07 03:24 +0000
              Re: I increment things at the _start_ of a loop. Snit <usenet@gallopinginsanity.com> - 2017-08-06 20:35 -0700
              Re: "while ( x++ < 100 )" isn't "obscure". moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-07 04:59 +0000
          Re: I'm the best c coder here. chrisv <chrisv@nospam.invalid> - 2017-08-07 06:59 -0500
        Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Doomsdrzej <.m@nsn.s> - 2017-08-05 11:52 -0400
          Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-05 09:55 -0700

csiph-web