Codegolf - Pascals Triangle

M

Michael Ulm

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 Ulm
R&D Team
ISIS Information Systems Austria
tel: +43 2236 27551-219, fax: +43 2236 21081
e-mail: (e-mail address removed)
Visit our Website: www.isis-papyrus.com

---------------------------------------------------------------
This e-mail is only intended for the recipient and not legally
binding. Unauthorised use, publication, reproduction or
disclosure of the content of this e-mail is not permitted.
This email has been checked for known viruses, but ISIS accepts
no responsibility for malicious or inappropriate content.
---------------------------------------------------------------
 
B

benjohn

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.
 
K

Kev Jackson

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.

how about

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
 
H

Harold Hausman

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.

how about

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

Unfortunately, the p method puts things in "" on stdout, which would
cause your code to fail the acceptance test. :(

-Harold
 
M

Michael Ulm

Kev said:
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.


how about

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 :)

This does not produce the same output on my system;
your version gives lines like

"1 2 1"

instead of

1 2 1

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

Best regards,

Michael

--
Michael Ulm
R&D Team
ISIS Information Systems Austria
tel: +43 2236 27551-219, fax: +43 2236 21081
e-mail: (e-mail address removed)
Visit our Website: www.isis-papyrus.com

---------------------------------------------------------------
This e-mail is only intended for the recipient and not legally
binding. Unauthorised use, publication, reproduction or
disclosure of the content of this e-mail is not permitted.
This email has been checked for known viruses, but ISIS accepts
no responsibility for malicious or inappropriate content.
---------------------------------------------------------------
 
S

Sander Land

You can make it even shorter by using *' ' over .join(' '), Array#*
is an alias for Array#join :)
 
C

Carlos

Christian said:
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)*" "}

--
 
D

Daniel Martin

Michael Ulm said:
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.
 
D

Dale Martenson

Michael Ulm said:
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.



How about:

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

Ben Bleything

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:
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
 
T

Thomas, Mark - BLS CTR

However, changing $" to $* works like a champ :)
=20
34.times{k=3D0;puts ($*.map!{|i|k+k=3Di}<<1)*' '}
=20
Ben
=20

Now at 45 chars it ties the current leader.
 
C

Carlos

Ben said:
This doesn't work:

See caveat about environment variables, above.
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)*' '}

Much better choice, yes.
--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top