# Codegolf - Pascals Triangle

My take on the latest problem from http://www.codegolf.com

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")}

56 bytes.

Best regards,

Michael

Michael U.
R&D Team
ISIS Information Systems Austria
tel: +43 2236 27551-219, fax: +43 2236 21081
e-mail: [email protected]

My take on the latest problem from http://www.codegolf.com

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")} That’s very impressive - I like the way you’ve implemented the filter
like box kernel (summing adjacent array entries) - I wouldn’t have
imagined the k=i would bind tighter than the k+k.

On 8/11/06, Kev J. [email protected] wrote:

like box kernel (summing adjacent array entries) - I wouldn’t have
Kev

Unfortunately, the p method puts things in “” on stdout, which would
cause your code to fail the acceptance test. -Harold

On 11 Aug 2006, at 15:58, [email protected] wrote:

My take on the latest problem from http://www.codegolf.com

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")} That’s very impressive - I like the way you’ve implemented the
filter
like box kernel (summing adjacent array entries) - I wouldn’t have
imagined the k=i would bind tighter than the k+k.

a=[]
34.times{k=0;p (a.map!{|i|k+k=i}<<1).join(" ")}

I never use puts, and in this case using p saves you 3 characters -
yay for micro-tuning Kev

Kev J. wrote:

like box kernel (summing adjacent array entries) - I wouldn’t have

This does not produce the same output on my system;

“1 2 1”

1 2 1

Since the output format is fixed in codegolf.com, unfortunately
this is not a solution.

Best regards,

Michael

Michael U.
R&D Team
ISIS Information Systems Austria
tel: +43 2236 27551-219, fax: +43 2236 21081
e-mail: [email protected]

You can make it even shorter by using ’ ’ over .join(’ '), Array#
is an alias for Array#join Michael U. [email protected] writes:

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")}

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1)*" "}

Michael U. [email protected] writes:

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")}

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1)*" "}

a=[]
9.times{k=0;puts (a.map!{|i|k+k=i}<<1)*" "} Christian N. wrote:

Michael U. [email protected] writes:

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")}

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1)*" "}

Let’s reuse a not needed array and save 4 bytes (doesn’t work if you
set RUBY_OPT to always require some module…)

34.times{k=0;puts (\$".map!{|i|k+k=i}<<1)*" "}

Michael U. [email protected] writes:

My take on the latest problem from http://www.codegolf.com

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1).join(" ")}

56 bytes.

I think this may be very close to minimal - no approaches I tried got
this small. Note that you can slightly improve readability (but with
no change in character count) with:

a=[]
34.times{k=0;a.map!{|i|k+k=i}<<1;puts a.join(" ")}

Then there’s removing the parentheses around the argument to join, but
that generates a warning that probably means you fail their test.

On Fri, Aug 11, 2006, Carlos wrote:

Let’s reuse a not needed array and save 4 bytes (doesn’t work if you
set RUBY_OPT to always require some module…)

34.times{k=0;puts (\$".map!{|i|k+k=i}<<1)*" "}

This doesn’t work:

34.times{k=0;puts (\$".map!{|i|k+k=i}<<1)*’ ‘}
TypeError: String can’t be coerced into Fixnum
from (irb):1:in `+’
from (irb):1
from (irb):1
from (irb):1
from :0

However, changing \$" to \$* works like a champ 34.times{k=0;puts (\$.map!{|i|k+k=i}<<1)’ '}

Ben

On Friday, August 11, 2006, at 11:16 PM, Daniel M. wrote:

I think this may be very close to minimal - no approaches I tried got
this small. Note that you can slightly improve readability (but with
no change in character count) with:

a=[]
34.times{k=0;a.map!{|i|k+k=i}<<1;puts a.join(" ")}

Then there’s removing the parentheses around the argument to join, but
that generates a warning that probably means you fail their test.

a=[]
34.times{k=0;puts (a.map!{|i|k+k=i}<<1)*’ '}

However, changing \$" to \$* works like a champ 34.times{k=0;puts (\$.map!{|i|k+k=i}<<1)’ '}

Ben

Now at 45 chars it ties the current leader.

Ben B. wrote:

On Fri, Aug 11, 2006, Carlos wrote:

Let’s reuse a not needed array and save 4 bytes (doesn’t work if you
set RUBY_OPT to always require some module…)

34.times{k=0;puts (\$".map!{|i|k+k=i}<<1)*" "}

This doesn’t work:

See caveat about environment variables, above.

34.times{k=0;puts (\$.map!{|i|k+k=i}<<1)’ '}

Much better choice, yes.