python coding contest
tim.hochberg at ieee.org
Fri Dec 30 17:29:31 CET 2005
Shane Hathaway wrote:
> Andrew Durdin wrote:
>>On 12/28/05, Shane Hathaway <shane at hathawaymix.org> wrote:
>>>I just found a 125 character solution. It's actually faster and more
>>>readable than the 133 character solution (though it's still obscure.)
>>Having spent a good deal of time and effort, and not getting below 144
>>characters, I am now very eager to see how these shorter versions
>>work, particularly the 6 120-character solutions. I also expect that
>>someone (I'll certainly give it a try) will produce a yet shorter
>>version after the contest closes, based on the knowledge from the
> Roberto Alsina fully documented his 120 byte solution here:
> My 120 byte solution is equivalent. Many others probably did the same
> thing. Python's philosophy of one way to do it seems to be leading us
> all down the same road.
> However, it still feels like there's room for improvement. I have a 123
> byte solution based on a fairly repetitive 21 character string; if I
> could compress the representation of the string, it could win.
Apparently there was as someone put out a 119 byte solution. I can't get
to Roberto's code at present (perhaps he's suffering a bandwidth
crisis?), but it seems that my 120 character solution is different. It
sounds like he encoded his as a row at a time and did two loops one for
each character and one for each row. I encoded the data per character
and did three loops one per column, one per character and one per row.
I'm sure that's not clear, so here's the code:
for n in i for j in(2,1,4))+'\n'for s in(6,0,3))
I've replaced the unprintable characters and added some preemptive
linebreaks so that hopefully this won't get too munged. It's all clear
now, right? Two hints: 6,0,3->row, 2,1,4->column and the 6 and 1 have to
be where they are to exploit the property that the top row only ever has
a center character in it. That way things can be encoded in 7-bits and
fit in a character string that Python likes. The order of the other loop
indices is mostly accidental but not all permutations may work.
I'm off to try to figure out how to do it the other way now, before the
code gets revealed.
More information about the Python-list