Sorry, I just realised even that won't work as in modifies the state regardless.
> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Thursday, 23 May 2002 12:36 > To: [EMAIL PROTECTED] > Subject: RE: shortest test for truth & false assignment > > > Scott, > > I don't believe that you'll be able to shorten: > if($a){$a=0;do_something()} > any further unless you're able to use the flip-flop instead of $a: > if($|--){do_something()} > > All suggestions so far have been longer. > > hth > ty > > > -----Original Message----- > > From: Scott Wiersdorf [mailto:[EMAIL PROTECTED]] > > Sent: Thursday, 23 May 2002 05:05 > > To: [EMAIL PROTECTED] > > Subject: shortest test for truth & false assignment > > > > > > Hello fwp'ers, > > > > Here's a golfish problem that I thought some people might enjoy: > > > > What is the shortest way to test a variable for truth and > then set its > > value to false such that the truth test still succeeds? > > > > For example, I have a global variable $a (given) that is somehow set > > to true. I want to test it for truth and do something: > > > > <snip> > > $a = 1; > > > > ... > > > > if( $a ) { > > $a = 0; > > do_something(); > > } > > > > ## and now $a is false > > ... > > </snip> > > > > You can't do this: > > > > if( $a = $a ? 0 : $a ) { > > do_something(); > > ... > > } > > > > because the whole expression becomes false when $a is assigned 0. > > > > My shortest try is this (10 characters w/o whitespace): > > > > if( $a%2 .. $a-- ) { > > do_something(); > > ... > > } > > > > Assuming warnings and stricture, can anyone find a shorter > > test/assignment? It doesn't have to be numeric (i.e., bit strings or > > any true/false values will work). > > > > Good luck! > > > > Scott > > -- > > Scott Wiersdorf > > [EMAIL PROTECTED] > > >
