Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: yonatan braude <jak.plopelor <at> gmail.com>
Subject: Re: Python-il Digest, Vol 48, Issue 5
Newsgroups: gmane.comp.python.israel
Date: Saturday 17th December 2011 20:55:52 UTC (over 5 years ago)
I think

 f = lambda:g();g=(
... f()


On Sat, Dec 17, 2011 at 6:32 PM,  wrote:

> Send Python-il mailing list submissions to
>        [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
> or, via email, send a message with subject or body 'help' to
>        [email protected]
>
> You can reach the person managing the list at
>        [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Python-il digest..."
>
>
> Today's Topics:
>
>   1. Re: Silly Python riddle (asaf greenberg)
>   2. Re: Silly Python riddle (Omer Zak)
>   3. Re: Silly Python riddle (Ram Rachum)
>   4. Re: Silly Python riddle (Shai Berger)
>   5. Re: Silly Python riddle (Ram Rachum)
>   6. Re: Silly Python riddle (Ram Rachum)
>   7. Re: Silly Python riddle (Alon Levy)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 17 Dec 2011 16:27:24 +0200
> From: asaf greenberg 
> Subject: Re: [Python-il] Silly Python riddle
> To: [email protected]
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="us-ascii"
>
> An HTML attachment was scrubbed...
> URL: <
> http://hamakor.org.il/pipermail/python-il/attachments/20111217/3fae3528/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 2
> Date: Sat, 17 Dec 2011 16:38:42 +0200
> From: Omer Zak <[email protected]>
> Subject: Re: [Python-il] Silly Python riddle
> To: Python User Group 
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="UTF-8"
>
> Another attempt at golfing down the solution:
> >>> f=lambda:g(0);g=(id)
> >>> f()
> 10482512
>
> The solution is '0);g=(id', 8 characters long.
> If there is a built-in function whose name is 1-character long, then the
> solution can be made to be 7 characters long.
>
>
> On Sat, 2011-12-17 at 14:55 +0200, Omer Zak wrote:
> > I do not have Python 2.7, so I did the following on Python 2.6.6.
> > >>> f = lambda: g(); g = lambda:()
> > >>> f()
> > ()
> > >>>
> >
> > In other words, '???' is replaced by '); g = lambda:('
> >
> > --- Omer
> >
> >
> > On Sat, 2011-12-17 at 14:14 +0200, Ram Rachum wrote:
> > > Here's a silly Python riddle for you.
> > >
> > >
> > > Today I opened up a Python 2.7 shell, and ran two commands in it.
> > >
> > >
> > >         >>> f = lambda: g(???)
> > >         >>> f()
> > >
> > > (Note that these are the only commands that I ran. You're not allowed
> > > to run any other commands before them.)
> > >
> > >
> > > The riddle: What's the shortest thing you can put instead of ??? so
my
> > > second command would not raise an exception?
> >
> >
>
> --
> $ python
> >>> type(type(type))
>           My own blog is at http://www.zak.co.il/tddpirate/
> My opinions, as expressed in this E-mail message, are mine alone.
> They do not represent the official policy of any organization with which
> I may be affiliated in any way.
> WARNING TO SPAMMERS:  at http://www.zak.co.il/spamwarning.html
>
>
>
> ------------------------------
>
> Message: 3
> Date: Sat, 17 Dec 2011 16:41:14 +0200
> From: Ram Rachum 
> Subject: Re: [Python-il] Silly Python riddle
> To: Omer Zak <[email protected]>
> Cc: Python User Group 
> Message-ID:
>       
 >
> Content-Type: text/plain; charset="iso-8859-1"
>
> Haha, I didn't think of all those creative answers when I asked this
> riddle! I'm sure happy that none of them (so far!) have reached 7
> characters, which is the length of my solution.
>
> On Sat, Dec 17, 2011 at 4:38 PM, Omer Zak <[email protected]> wrote:
>
> > Another attempt at golfing down the solution:
> > >>> f=lambda:g(0);g=(id)
> > >>> f()
> > 10482512
> >
> > The solution is '0);g=(id', 8 characters long.
> > If there is a built-in function whose name is 1-character long, then
the
> > solution can be made to be 7 characters long.
> >
> >
> > On Sat, 2011-12-17 at 14:55 +0200, Omer Zak wrote:
> > > I do not have Python 2.7, so I did the following on Python 2.6.6.
> > > >>> f = lambda: g(); g = lambda:()
> > > >>> f()
> > > ()
> > > >>>
> > >
> > > In other words, '???' is replaced by '); g = lambda:('
> > >
> > > --- Omer
> > >
> > >
> > > On Sat, 2011-12-17 at 14:14 +0200, Ram Rachum wrote:
> > > > Here's a silly Python riddle for you.
> > > >
> > > >
> > > > Today I opened up a Python 2.7 shell, and ran two commands in it.
> > > >
> > > >
> > > >         >>> f = lambda: g(???)
> > > >         >>> f()
> > > >
> > > > (Note that these are the only commands that I ran. You're not
allowed
> > > > to run any other commands before them.)
> > > >
> > > >
> > > > The riddle: What's the shortest thing you can put instead of ??? so
> my
> > > > second command would not raise an exception?
> > >
> > >
> >
> > --
> > $ python
> > >>> type(type(type))
> >           My own blog is at http://www.zak.co.il/tddpirate/
> > My opinions, as expressed in this E-mail message, are mine alone.
> > They do not represent the official policy of any organization with
which
> > I may be affiliated in any way.
> > WARNING TO SPAMMERS:  at http://www.zak.co.il/spamwarning.html
> >
> > _______________________________________________
> > Python-il mailing list
> > [email protected]
> > http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://hamakor.org.il/pipermail/python-il/attachments/20111217/920f617f/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 4
> Date: Sat, 17 Dec 2011 17:01:29 +0200
> From: Shai Berger 
> Subject: Re: [Python-il] Silly Python riddle
> To: [email protected]
> Message-ID: <[email protected]>
> Content-Type: Text/Plain; CHARSET=US-ASCII
>
> On Saturday 17 December 2011, Ram Rachum wrote:
> > Here's a silly Python riddle for you.
> >
> > Today I opened up a Python 2.7 shell, and ran two commands in it.
> >
> > >>> f = lambda: g(???)
> > >>> f()
> >
> > (Note that these are the only commands that I ran. You're not allowed
to
> > run any other commands before them.)
> >
> > The riddle: What's the shortest thing you can put instead of *???* so
my
> > second command would not raise an exception?
> >
> I have a cheating solution that goes down to 3: """
>
> It's cheating because your second line is not a command (and in fact, it
> makes
> the whole thing not yet a commnd):
>
> >>> f = lambda: g(""")
> ... f()
> ...
>
> But still, at this point, no exception has been raised.
>
>
> ------------------------------
>
> Message: 5
> Date: Sat, 17 Dec 2011 17:03:55 +0200
> From: Ram Rachum 
> Subject: Re: [Python-il] Silly Python riddle
> To: Shai Berger 
> Cc: [email protected]
> Message-ID:
>       
 >
> Content-Type: text/plain; charset="iso-8859-1"
>
> On Sat, Dec 17, 2011 at 5:01 PM, Shai Berger  wrote:
>
> > On Saturday 17 December 2011, Ram Rachum wrote:
> > > Here's a silly Python riddle for you.
> > >
> > > Today I opened up a Python 2.7 shell, and ran two commands in it.
> > >
> > > >>> f = lambda: g(???)
> > > >>> f()
> > >
> > > (Note that these are the only commands that I ran. You're not allowed
> to
> > > run any other commands before them.)
> > >
> > > The riddle: What's the shortest thing you can put instead of *???* so
> my
> > > second command would not raise an exception?
> > >
> > I have a cheating solution that goes down to 3: """
> >
> > It's cheating because your second line is not a command (and in fact,
it
> > makes
> > the whole thing not yet a commnd):
> >
> > >>> f = lambda: g(""")
> > ... f()
> > ...
> >
> > But still, at this point, no exception has been raised.
> >
> >
> Yeah, that's a good cheat :)
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://hamakor.org.il/pipermail/python-il/attachments/20111217/3d984b5a/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 6
> Date: Sat, 17 Dec 2011 18:27:38 +0200
> From: Ram Rachum 
> Subject: Re: [Python-il] Silly Python riddle
> To: Shai Berger , python-il
>        
> Message-ID:
>       
 >
> Content-Type: text/plain; charset="iso-8859-1"
>
> On Sat, Dec 17, 2011 at 6:14 PM, Shai Berger  wrote:
> >
> >  >
> > > (Note that these are the only commands that I ran. You're not allowed
> to
> > > run any other commands before them.)
> > >
> > > The riddle: What's the shortest thing you can put instead of *???* so
> my
> > > second command would not raise an exception?
> > >
> > >
> > ???= (yield)
> >
> > right?
> >
> > (mailed privately, to avoid ruining the fun...)
> >
>
> Yep!!! I just almost finished writing the email to tell everyone that
when
> I got your answer.
>
> Congrats for solving the riddle Shai.
>
> So as Shai said, the solution is:
>
>
> > **>>> f = lambda: g(*(yield)*)
> > >>> f()
>
>
> Funny, isn't it? I was surprised to see that the `yield` keyword can be
> used in a lambda function.
>
> So when you type `f()`, it just returns a generator. If you'll try to
> exhaust it, an exception will be raised because `g` doesn't exist, but
> that's a new line :)
>
> It's funny that in this case, Python seems to throw away the value of the
> lambda function! As we know, the `yield` keyword actually forms a
statement
> whose value is `None`, unless you used the generator's `.send` instead of
> `.next`. So you could also use `.send` to send in whatever value you want
> into the lambda function, and Python will just throw it away. Unless I'm
> missing something.
>
> So that's the only case I can think of where Python completely throws
away
> the value of a lambda function.
>
>
> Another funny thing that I learned from this riddle is that when you do a
> function invocation in Python, Python accesses the function *before* it
> looks at the arguments.
>
> So if were to do:
>
> adfgadgof(1 / 0)
>
>
> Python will complain about the non-existent function before it even sees
> the division-by-zero.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://hamakor.org.il/pipermail/python-il/attachments/20111217/a26b4ec7/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 7
> Date: Sat, 17 Dec 2011 18:34:11 +0200
> From: Alon Levy 
> Subject: Re: [Python-il] Silly Python riddle
> To: Ram Rachum 
> Cc: python-il , Shai Berger
>        
> Message-ID:
>       
 >
> Content-Type: text/plain; charset=UTF-8
>
> cute and interesting.
>
> On Sat, Dec 17, 2011 at 6:27 PM, Ram Rachum  wrote:
> > On Sat, Dec 17, 2011 at 6:14 PM, Shai Berger  wrote:
> >>
> >> >
> >> > (Note that these are the only commands that I ran. You're not
allowed
> to
> >> > run any other commands before them.)
> >> >
> >> > The riddle: What's the shortest thing you can put instead of *???*
so
> my
> >>
> >> > second command would not raise an exception?
> >> >
> >> >
> >> ???= (yield)
> >>
> >> right?
> >>
> >> (mailed privately, to avoid ruining the fun...)
> >
> >
> > Yep!!! I just almost finished writing the email to tell everyone that
> when I
> > got your answer.
> >
> > Congrats for solving the riddle Shai.
> >
> > So as Shai said, the solution is:
> >
> >>
> >> >>> f = lambda: g((yield))
> >> >>> f()
> >
> >
> > Funny, isn't it? I was surprised to see that the `yield` keyword can be
> used
> > in a lambda function.
> >
> > So when you type `f()`, it just returns a generator. If you'll try to
> > exhaust it, an exception will be raised because `g` doesn't exist, but
> > that's a new line :)
> >
> > It's funny that in this case, Python seems to throw away the value of
the
> > lambda function! As we know, the `yield` keyword actually forms a
> statement
> > whose value is `None`, unless you used the generator's `.send` instead
of
> > `.next`. So you could also use `.send` to send in whatever value you
want
> > into the lambda function, and Python will just throw it away. Unless
I'm
> > missing something.
> >
> > So that's the only case I can think of where Python completely throws
> away
> > the value of a lambda function.
> >
> >
> > Another funny thing that I learned from this riddle is that when you do
a
> > function invocation in Python, Python accesses the function before?it
> looks
> > at the arguments.
> >
> > So if were to do:
> >
> >> adfgadgof(1 / 0)
> >
> >
> > Python will complain about the non-existent function before it even
sees
> the
> > division-by-zero.
> >
> > _______________________________________________
> > Python-il mailing list
> > [email protected]
> > http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
> >
>
>
>
> --
> Alon Levy
>
>
> ------------------------------
>
> _______________________________________________
> Python-il mailing list
> [email protected]
> http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
>
>
> End of Python-il Digest, Vol 48, Issue 5
> ****************************************
>
 
CD: 8ms