From: William James Date: 2007-01-15T08:25:06+09:00 Subject: Re: Number Spiral (#109) William James wrote: > Simon Kr�ger wrote: > > Dear Ruby Quiz, > > > > this isn't really a solution to the quiz 109 because it violates > > some (if not all) of the rules. But as James noted there was a > > code golf problem very similar to this quiz and here is my > > solution to that. > > (see http://codegolf.com/oblongular-number-spirals for detailed > > description of the code golf problem) > > > > ---------------------------------------------------------------- > > s,f=1,proc{|x,y|y<1?[]:[[*s...s+=x]]+f[y-1,x].reverse.transpose} > > puts f[w=gets(' ').to_i,gets.to_i].map{|i|['%3i']*w*' '%i} > > ---------------------------------------------------------------- > > > > It draws a number spiral, starting with '1' in the upper left > > corner and the highest number in the middle, it also features > > spirals that are not quadratic. > > > > Yes, you will get some score at the codegolf site if you repost > > this solution there - but nowadays you will only get to Rank 9 > > with this solution and of course you will start to feel ill and > > you won't be able to sleep for days and other nasty things might > > happen if you do so. > > > > If someone can derive an even shorter solution from this i would > > be very interested to see it (the best ruby solution today has 7 > > bytes less) > > > > cheers > > > > Simon > > I can't get this to work. > > E:\Ruby>ruby try.rb > 4 4 > try.rb:2:in `%': too few arguments. (ArgumentError) > from try.rb:2 > from try.rb:2:in `map' > from try.rb:2 irb(main):006:0> s=1; x=5; [*s...s+x] => [1, 2, 3, 4, 5] irb(main):007:0> s=1; x=5; [*s...s+=x] => [] irb(main):009:0> s=1; x=5; s...s+=x => 6...6