From: William James Date: 2007-01-15T10:15:06+09:00 Subject: Re: Number Spiral (#109) 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) A reduction: ["stuff"]+[[4,5,6],[:x,:y,:z]].reverse.transpose ==>["stuff", [:x, 4], [:y, 5], [:z, 6]] ["stuff"]+(a,b=[[4,5,6],[:x,:y,:z]];b.zip a) ==>["stuff", [:x, 4], [:y, 5], [:z, 6]]