[Python-il] Python-il Digest, Vol 48, Issue 5

yonatan braude jak.plopelor at gmail.com
Sat Dec 17 22:57:18 IST 2011


of course not!...

On Sat, Dec 17, 2011 at 10:55 PM, yonatan braude <jak.plopelor at gmail.com>wrote:

> I think
>
>  f = lambda:g();g=(
> ... f()
>
>
> On Sat, Dec 17, 2011 at 6:32 PM, <python-il-request at hamakor.org.il> wrote:
>
>> Send Python-il mailing list submissions to
>>        python-il at hamakor.org.il
>>
>> 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
>>        python-il-request at hamakor.org.il
>>
>> You can reach the person managing the list at
>>        python-il-owner at hamakor.org.il
>>
>> 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 <asafgreenberg at gmail.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: python-il at hamakor.org.il
>> Message-ID: <4EECA6CC.8050700 at gmail.com>
>> 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 <w1 at zak.co.il>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: Python User Group <python-il at hamakor.org.il>
>> Message-ID: <1324132722.3846.18.camel at c4>
>> 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))
>> <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 <ram at rachum.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: Omer Zak <w1 at zak.co.il>
>> Cc: Python User Group <python-il at hamakor.org.il>
>> Message-ID:
>>        <CANXboVYLqt8UVrhYGP=C-18P=xTTnWjrbu6JJFfKO4C2=
>> 5rdzw at mail.gmail.com>
>> 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 <w1 at zak.co.il> 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))
>> > <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
>> > Python-il at hamakor.org.il
>> > 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 <shai at platonix.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: python-il at hamakor.org.il
>> Message-ID: <201112171701.29250.shai at platonix.com>
>> 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 <ram at rachum.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: Shai Berger <shai at platonix.com>
>> Cc: python-il at hamakor.org.il
>> Message-ID:
>>        <
>> CANXboVaAgUyrhoHtvdVXckBM25QnYQhjRqzKrCRvPfvbveh8Ew at mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> On Sat, Dec 17, 2011 at 5:01 PM, Shai Berger <shai at platonix.com> 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 <ram at rachum.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: Shai Berger <shai at platonix.com>, python-il
>>        <python-il at hamakor.org.il>
>> Message-ID:
>>        <CANXboVbypSFHwp=
>> XyGSbs1R9ArZCp+eUCtP945bffeM6LfcLJg at mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> On Sat, Dec 17, 2011 at 6:14 PM, Shai Berger <shai at platonix.com> 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 <alonlevy1 at gmail.com>
>> Subject: Re: [Python-il] Silly Python riddle
>> To: Ram Rachum <ram at rachum.com>
>> Cc: python-il <python-il at hamakor.org.il>, Shai Berger
>>        <shai at platonix.com>
>> Message-ID:
>>        <
>> CALijEpYiZu7z2dJCtvTeexi1OjgoLZkHTf7tzwos_PZ12MJekQ at mail.gmail.com>
>> Content-Type: text/plain; charset=UTF-8
>>
>> cute and interesting.
>>
>> On Sat, Dec 17, 2011 at 6:27 PM, Ram Rachum <ram at rachum.com> wrote:
>> > On Sat, Dec 17, 2011 at 6:14 PM, Shai Berger <shai at platonix.com> 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
>> > Python-il at hamakor.org.il
>> > http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
>> >
>>
>>
>>
>> --
>> Alon Levy
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> Python-il mailing list
>> Python-il at hamakor.org.il
>> http://hamakor.org.il/cgi-bin/mailman/listinfo/python-il
>>
>>
>> End of Python-il Digest, Vol 48, Issue 5
>> ****************************************
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://hamakor.org.il/pipermail/python-il/attachments/20111217/e7a06c1f/attachment-0001.htm>


More information about the Python-il mailing list