You could replace *:@# with #*# That's all I can see at the moment.
FYI, -- Raul On Mon, Jul 22, 2013 at 10:13 PM, Marshall Lochbaum <[email protected]> wrote: > I don't have an SO account, so go ahead and post that. While I'm at it, > I shaved a character off the original by noting that the length of the > circle is half the diameter for even lengths. This doesn't hold for odd > lengths, so it won't help there. > > c=:({&' *',&":2*+/@,%*:@#)@:>_2{.\|@j./~@i:@<: > > Marshall > > On Mon, Jul 22, 2013 at 10:07:57PM -0400, Dan Bron wrote: >> Oh! Nice. If you have an account on SO feel free to post it, I'll vote it >> up past my original. If you don't, I'll replace mine with yours and link to >> your message on the Forum. >> >> -Dan >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Marshall >> Lochbaum >> Sent: Monday, July 22, 2013 9:38 PM >> To: [email protected] >> Subject: Re: [Jprogramming] Code golf: approximate pi >> >> I haven't been able to shorten your code. But here's a version which handles >> odd numbers, at the cost of only two characters: >> >> c=:*:({&' *'@],&":2%(%+/@,))]>(|@j./~2&|#])@i:@<: >> >> Rather than filtering by position (_2{.\]), we filter the x values by >> oddness (2&|#]). >> >> Marshall >> >> On Mon, Jul 22, 2013 at 07:54:21PM -0400, Dan Bron wrote: >> > There's a code golf challenge on StackOverflow [1] which asks us to >> > generate an approximation of a circle in ASCII (i.e. using integral >> > Cartesian >> > coordinates) and a corresponding estimation of pi. >> > >> > For example, the 8th order circle in ASCII has 15 rows and 8 columns >> > and gives an approximate value of pi of 3.125. The detailed >> > specifications of input, output, and edge cases can be found at >> > http://stackoverflow.com/questions/2440314/code-golf-day/ but the >> > general concept is take positive integer as an input, and output the >> > circle with its corresponding estimate of pi. Like this: >> > >> > c 8 >> > ******* >> > ************* >> > *************** >> > *************** >> > *************** >> > *************** >> > ************* >> > ******* >> > 3.125 >> > >> > This is a code golf challenge. Most common programming languages can >> > get it down to ~100 characters. The shortest solution, outside of J, >> > is written in bc (the command-line calculator) and weighs in at 88 >> characters. >> > >> > Without too much effort, I put together a J solution of 47 characters >> > (a little over half the length of the previous champion)*. >> > >> > Uncompressed, the verb might look like this: >> > >> > c =: verb define >> > pythag =. y > | j./~ i:y-1 NB. r^2 > x^2 + y^2 >> > squished =. _2 {.\ pythag NB. Odd rows only >> > piApx =. (2 * +/ , squished) % y*y >> > (squished { ' *') , ": piApx >> > ) >> > >> > Here it is in its compressed form: >> > >> > c=:*:({&' *'@],&":2%(%+/@,))_2{.\]>|@j./~@i:@<: >> > >> > Can you pare it down at all? Perhaps using a different approach? >> > >> > Note also that there is extra credit available for a solution which >> > handles odd inputs (i.e. odd numbers) appropriately, which this version >> doesn't. >> > >> > -Dan >> > >> > * The 47 characters includes the assignment to a name, so the function >> > can be reused. >> > >> > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
