> I'm still interested in verbs which can cast-out all factors of a number > (narrowly: a prime number; broadly: any integer) simultaneously.
cast=: %~^:(0=|)^:_ 2 cast 80 5 5 cast 600 24 10 cast 100 1 It'd be better not to use factoring for this problem because factoring is a much harder problem. Casting out 2 is special because it comes up in primality tests http://www.jsoftware.com/jwiki/Essays/Primality_Tests (Miller-Rabin) and because it is easy to do in low level languages, to wit, shift right until least significant bit is 1. ----- Original Message ----- From: Dan Bron <[EMAIL PROTECTED]> Date: Friday, October 3, 2008 9:07 Subject: RE: [Jprogramming] Cast out To: Programming forum <[email protected]> > RE Boss wrote: > > http://www.jsoftware.com/jwiki/Essays/Collatz_Conjecture > > Ah, thanks for this pointer. I remember the sequence being > called "the wondrous numbers" in Godel Escher Bach, but I don't > think I've ever encountered this name. > > I wrote: > > I'm not satisfied with my solution to "cast out all factors of two". > > A secondary nit to pick: I don't like the way I pick "n > > 0 and odd" > > The Essay's verb kills two verbs with one stone, by treating > "triple and increment" and "cast out a (single) power of two" as > separate intermediate steps. > > That is, if N is even, it's halved (casting out a > single power of two). Otherwise (if N is odd) > it's tripled and incremented. Either way, the verb is then > applied to its output (so if N were a power of 2, the triple-and- > increment would never be invoked). > > Whereas my verb implements the sentence: > > Pick n > 0 and odd, multiply by three, > add one, cast out all factors of two, > cook 'til (d)one. > > atomically. If N is even, it's incremented, > then it's tripled and incremented, then all powers of 2 are cast > out (simultaneously), then verb is applied to its output (so > even if N were a power of 2, the triple-and- > increment would still be applied). > > So the two verbs, given the same input, can produce different > output sequences. In general, the sequences produced by > casting-out all powers simultaneously will be shorter than those > produced by casting-out one power at a time. An obvious > exception is when the input is a power of 2 (see above). > > I believe the difference in formulation is due to the different > English descriptions of the problem from which the verbs were > transliterated. I'm still interested in verbs which can > cast-out all factors of a number (narrowly: a prime number; > broadly: any integer) simultaneously. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
