Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.os.linux.advocacy > #425956
| From | owl <owl@rooftop.invalid> |
|---|---|
| Newsgroups | comp.os.linux.advocacy |
| Subject | Re: 2 lines, 2^2 states, easily modified to 3^2 states. |
| Date | 2017-08-05 17:33 +0000 |
| Organization | O.W.L. |
| Message-ID | <sab3abzx003.a@rooftop.invalid> (permalink) |
| References | (4 earlier) <Jeff-Relf.Me@Aug.4--6.20pm.Seattle.2017> <szbagi03.ab@rooftop.invalid> <Jeff-Relf.Me@Aug.4--9.39pm.Seattle.2017> <azb32.b904ta@rooftop.invalid> <es2dnUvp0MqXfxjEnZ2dnUU7-TnNnZ2d@giganews.com> |
Marek Novotny <marek.novotny@marspolar.com> wrote:
> On 2017-08-05, owl <owl@rooftop.invalid> wrote:
>> 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);
>> }
>
> It reminds me of a time when I was writing a script to determine the
> distro type the user was using. It grew and grew and I kept looking for
> better ways to determine it in many different distros. It's a lot easier
> if I know for a fact that every user is RHEL and Ubuntu. If not ...
>
> FizzBuzz reminds me of this issue. Right now, you know there are four
> outcomes. Just the number, Fizz, Buzz and FizzBuzz. So no matter what it
> simple to write almost anything that will solve that. But then the
> question comes up, what if there are 8 things or 16 thing or 256
> things...
>
> I scripts I started to use arrays, even if for one item. My thinking is
> that if I need to expand it to two or more, the array is already there.
> So I tend to like that kind of thinking. I'll play with FizzBuzz some
> more.
>
> I was reading another question that comes up about 25 horses and on
> YouTube I think the guy saying the answer has it all wrong. There are a
> bunch of tech questions that can come up. Obviously I know programmers
> but don't wish to ask for their help and I don't wish to look for the
> answer online. I'd rather fail and learn from that failure. I think
> writing programs and utils is a process. You start simple and then once
> you have an answer, even a bad answer, you can then ask yourself how to
> make it better.
>
> Who hasn't looked at code they wrote 6 months ago or a year ago and
> didn't think it was crap? There was this one guy doing a lecture and he
> was going on and on about how awful this code was. And then he realized
> he wrote it years ago. It was his own code. He just didn't recognize it anymore
> because he got better and better and started adopting better thinking.
>
> It all has to start from somewhere.
>
> The first array I wrote in a shell script looked something like this:
>
> array[1]="hello"
> array[4]="good bye"
>
> And believe it or not, there are some pluses to doing it this way. I
> absolutely control the specific placement of the element in the array.
> But obviously, most will simply do this:
>
> array=("hello" "goodbye")
>
> As silly as that was I still appreciate it. If I were you, I wouldn't
> worry too much what others opine about your code. Consider their point,
> decide if you agree or disagree and do whatever you think is best.
>
We can't let sc be left out in the cold.
http://imgur.com/a/14HAV
anon@lowtide:~/code/sc/fb$ cat fb.sc
set numeric extfun craction = 1 color colorerr
format A 23 0 0
color 6 = @green;@black
color a1:a100 6
leftstring A1 = @if(a1=0,"",@if(!(A1%3),@if(!(A1%5),"fizzbuzz","fizz"),@if(!(A1%5),"buzz","")))
yank a1:a1
pullcopy a2:a100
fill b1:b100 1 1
yank b1:b100
goto a1
pullmerge
erase b1:b100
goto A1 A0
anon@lowtide:~/code/sc/fb$
Or just leave it empty and have it do it as you type:
http://imgur.com/a/XiVsZ
anon@lowtide:~/code/sc/fb$ cat bf.sc
set numeric extfun craction = 1 color colorerr
format A 23 0 0
color 6 = @green;@black
color a1:a100 6
leftstring A1 = @if(a1=0,"",@if(!(A1%3),@if(!(A1%5),"fizzbuzz","fizz"),@if(!(A1%5),"buzz","")))
yank a1:a1
pullcopy a2:a100
goto A1 A0
anon@lowtide:~/code/sc/fb$
Back to comp.os.linux.advocacy | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: FizzBuzz: an Interview Question ( for programmers ). fr314159@gmail.com - 2017-08-02 11:14 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-02 20:19 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-02 21:06 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-02 21:37 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 01:46 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-03 04:32 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 05:01 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-03 05:06 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 05:15 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 05:02 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-04 13:52 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 14:00 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 12:56 -0500
Re: FizzBuzz: an Interview Question ( for programmers ). Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 11:03 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 18:05 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 11:08 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). Snit <usenet@gallopinginsanity.com> - 2017-08-04 11:23 -0700
Re: Marek Novotny is a command line jockey. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 14:24 -0500
Re: Marek Novotny is a command line jockey. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:45 -0700
Re: This is better, no ? Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 15:24 -0500
Re: Marek Novotny is a command line jockey. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:38 -0700
Re: My code is twice as fast as Owl's. owl <owl@rooftop.invalid> - 2017-08-03 03:12 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). "F. Russell" <fr@random.info> - 2017-08-02 23:04 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). "F. Russell" <fr@random.info> - 2017-08-02 23:25 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 01:50 +0000
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 04:41 +0000
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 05:17 +0000
Re: What's easier to read/maintain ? owl <owl@rooftop.invalid> - 2017-08-03 05:57 +0000
Re: Fabian's code is always slower. fr314159@gmail.com - 2017-08-03 08:21 -0700
Re: Fabian's code is always slower. Steve Carroll <fretwizzer@gmail.com> - 2017-08-03 09:24 -0700
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 18:41 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Snit <usenet@gallopinginsanity.com> - 2017-08-03 13:49 -0700
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. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 08:54 -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: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. fr314159@gmail.com - 2017-08-04 12:57 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:02 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 20:02 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:11 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 20:17 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:42 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-04 23:06 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 23:32 +0000
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: Who'd use "x++", in a loop, to find FizzBuzzGoozKaaz ? owl <owl@rooftop.invalid> - 2017-08-05 07:30 +0000
Re: 2 lines, 2^2 states, easily modified to 3^2 states. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-05 10:19 -0500
Re: 2 lines, 2^2 states, easily modified to 3^2 states. Steve Carroll <fretwizzer@gmail.com> - 2017-08-05 10:13 -0700
Re: 2 lines, 2^2 states, easily modified to 3^2 states. owl <owl@rooftop.invalid> - 2017-08-05 17:33 +0000
Re: Fabian seldom writes code, much less test it. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 22:24 -0500
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 the best c coder here. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 22:35 -0500
Re: I'm the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 04:08 +0000
Re: I reduced Owl's 43 lines to 5. owl <owl@rooftop.invalid> - 2017-08-05 07:25 +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. owl <owl@rooftop.invalid> - 2017-08-05 06:12 +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. Steve Carroll <fretwizzer@gmail.com> - 2017-08-06 11:04 -0700
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: I'm the best c coder here. Steve Carroll <fretwizzer@gmail.com> - 2017-08-08 10:23 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. DFS <nospam@dfs.com> - 2017-08-04 17:56 -0400
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-04 23:04 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-04 16:09 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. fellatiohornblower@renlott.org - 2017-08-04 20:13 -0400
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-05 13:50 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-05 15:23 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-05 10:06 -0700
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
Re: Fabian's code is always slower. Takuya Saitoh <taka0038@gmail.com> - 2017-08-06 22:37 -0700
csiph-web