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:57:18 UTC (over 5 years ago)
of course not!...

On Sat, Dec 17, 2011 at 10:55 PM, yonatan braude
<[email protected]>wrote:

> 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:
>>        > [email protected]>
>> 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:
>>        <
>> [email protected]m>
>> 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:
>>        > [email protected]>
>> 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:
>>        <
>> [email protected]m>
>> 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: 4ms