http://www.jsoftware.com/jwiki/Essays/Collatz_Conjecture
R.E. Boss -----Oorspronkelijk bericht----- Van: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Namens Dan Bron Verzonden: vrijdag 3 oktober 2008 16:43 Aan: Programming forum Onderwerp: [Jprogramming] Cast out Have you heard of the "Hailstone Problem"? Pick n > 0 and odd, multiply by three, add one, cast out all factors of two, cook 'til (d)one. http://www.dyalog.com/dfnsdws/n_ratrep.htm (at the bottom) Here's my initial formulation in J: hail =: ([: {.@(% 2 ^ 1&q:) 1 + 3 * ] + 1 - 2&|)^:a: hailstone =: hail@:(1 + ?) require 'plot' plot hail 1e6 But I'm not particularly satisfied with my solution to "cast out all factors of two". For one thing, it seems a bit redundant; I mention the constant 2 twice (once explicitly with 2^ and once implicitly with 1&q: ). So I thought about the longer but more general: castOut =: 2&$: : (] % [ ^ (q:~ 1 + _1&p:)~) NB. x is prime Can you improve this verb? Can you generalize it to cast out all (positive integer) factors of N where N isn't neccesarily prime (e.g. 4&castOut )? -Dan PS: A secondary nit to pick: I don't like the way I pick "n > 0 and odd". Picking n even is short and pretty (+2&|)@(1+?) but picking n odd is longer (+1-2&|)@(1+?) or (+-.@(2&|))@(1+?) . Is there a shorter way? ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
