Velocity Reviews > python coding contest

# python coding contest

Mark Dickinson
Guest
Posts: n/a

 12-31-2005
Here's a variant of André's brilliant idea that's
119 characters long, and fully printable:

j=''.join;seven_seg=lambda z:j(j(' _ | |_ _|_|'
[ord('^r|=Zm.:v\r'[int(a)])%u*2:][:3]for a in z)
+"\n"for u in(3,7,)

Mark

Christoph Zwerschke
Guest
Posts: n/a

 12-31-2005
Mark Dickinson wrote:
> Here's a variant of André's brilliant idea that's
> 119 characters long, and fully printable:
>
> j=''.join;seven_seg=lambda z:j(j(' _ | |_ _|_|'
> [ord('^r|=Zm.:v\r'[int(a)])%u*2:][:3]for a in z)
> +"\n"for u in(3,7,)

You have an escaped CR (\r) as the last character in your string.

Here is a 118 character fully printable variant without the \r:

j=''.join;seven_seg=lambda x:j(j(' _ |_|_ _|
|'[ord('^rm=3|4:sť'[int(c)])%d*2:][:3]for c in x)+"\n"for d in(3,8,7))

Note that there is only one non-ascii character in the code.

However, André's final solution is one character shorter (117).

-- Christoph

Just
Guest
Posts: n/a

 12-31-2005
In article <dp4rkq\$s45\$(E-Mail Removed)>,
Christoph Zwerschke <(E-Mail Removed)> wrote:

> Mark Dickinson wrote:
> > Here's a variant of André's brilliant idea that's
> > 119 characters long, and fully printable:
> >
> > j=''.join;seven_seg=lambda z:j(j(' _ | |_ _|_|'
> > [ord('^r|=Zm.:v\r'[int(a)])%u*2:][:3]for a in z)
> > +"\n"for u in(3,7,)

>
> You have an escaped CR (\r) as the last character in your string.

Which is perfectly printable.

> Here is a 118 character fully printable variant without the \r:
>
> j=''.join;seven_seg=lambda x:j(j(' _ |_|_ _|
> |'[ord('^rm=3|4:sť'[int(c)])%d*2:][:3]for c in x)+"\n"for d in(3,8,7))
>
> Note that there is only one non-ascii character in the code.

Which isn't. So I'm not sure what the point is you're trying to make.

Just

Just
Guest
Posts: n/a

 12-31-2005
In article <(E-Mail Removed)4all.nl>,
Just <(E-Mail Removed)> wrote:

> In article <dp4rkq\$s45\$(E-Mail Removed)>,
> Christoph Zwerschke <(E-Mail Removed)> wrote:
>
> > Mark Dickinson wrote:
> > > Here's a variant of André's brilliant idea that's
> > > 119 characters long, and fully printable:
> > >
> > > j=''.join;seven_seg=lambda z:j(j(' _ | |_ _|_|'
> > > [ord('^r|=Zm.:v\r'[int(a)])%u*2:][:3]for a in z)
> > > +"\n"for u in(3,7,)

> >
> > You have an escaped CR (\r) as the last character in your string.

>
> Which is perfectly printable.
>
> > Here is a 118 character fully printable variant without the \r:
> >
> > j=''.join;seven_seg=lambda x:j(j(' _ |_|_ _|
> > |'[ord('^rm=3|4:sť'[int(c)])%d*2:][:3]for c in x)+"\n"for d in(3,8,7))
> >
> > Note that there is only one non-ascii character in the code.

>
> Which isn't. So I'm not sure what the point is you're trying to make.

Duh, sorry, it's early. 118 is better than 119. Printable or not
Still, a 119 bytes version that is fully printable is pretty cool.

Just

Christoph Zwerschke
Guest
Posts: n/a

 12-31-2005
Just wrote:
> Duh, sorry, it's early. 118 is better than 119. Printable or not
> Still, a 119 bytes version that is fully printable is pretty cool.

No, you're right, I also somehow missed the point. I believed "ť" to be
"printable" (opposed to control char's) but technically speaking, the
consensus is that "printable" restricts to 7-bit-ascii (in Python,
string.printable does not even change if you change the locale setting,
contrary to string.letters; this is a bit unclear in the Python docs).

Mark's point was that his solution was purely 7-bit-ascii printable and
as such it was good although it was one byte more.

In the next contest, there should be subcategories for solutions that
are 7-bit-printable and/or have no imports.

-- Christoph