Sorry; this doesn't quite work. All the values starting with 'A' are left out...
Marshall -----Original Message----- From: Marshall Lochbaum [mailto:[email protected]] Sent: Thursday, December 16, 2010 3:48 PM To: 'Programming forum' Subject: RE: [Jprogramming] increasing-width base conversion (e.g. Excel column labels) The accepted idiom is Base&#.^:_1 Value . This gives digits=.'ABCDEFGHIJKLMNOPQRSTUVWXYZ' Base=.#digits convert=.(digits {~ Base&#.^:_1)"0 You would have to do something just a little fancier to do convert without rank 0; if it is run on a vector leading spaces will be filled with 'A'. Marshall -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Tracy Harms Sent: Thursday, December 16, 2010 3:31 PM To: Programming forum Subject: [Jprogramming] increasing-width base conversion (e.g. Excel column labels) I encountered the question of how to produce the alphabetic label for a given column in Excel. I enjoyed analyzing the problem, and I enjoyed coding a solution in J. I notice that I have difficulty "ironing out" the program I've written. There is a need to use several calculated results more than once and I'm not particularly happy with how these are structured in the program I've written, especially the last half. What I'd particularly like is to have the "central" calculation shine through more visibly. I'm thinking about (howmany # Base) #: Value Would anybody like to restructure this, or provide alternative solutions to this problem? -- Tracy convert=: 3 : 0 Base =. # Digits=. 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' offset=. [:+/ [^ [:>: i.@:] om =. ( * 0<]) @ <. @ ^. NB. order of magnitude, in chosen base (x) OM =. Base om y Value =. ( - Base offset"0 OM"_ ) y ((OM + _1<Value) # &.> Base ) (Digits{~ #: )&> Value ) NB. 'example execution convert (] , (24+]) , (700+])) i.4 A B C D Y Z AA AB ZY ZZ AAA AAB ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
