Re: one interview question, 17 lines in java, 3 lines in ruby.
On Sep 20, 11:59 am, Lew <l...@lewscanon.com> wrote:
Piotr Kobzda wrote:
Well, 161 chars:
class C{static{String s="27 0",g=" A";for(int
i=1;i<27;s+=i++%10,g+='A')System.out.println(i+g.replace('A',(char)(64+i)));System.out.println(s);System.exit(0);}}
Lew wrote:
How does this class get loaded into the JVM?
Daniel Pitts wrote:
java C
This will first load the class C, which executes the static
initializer. The initializer exits the JVM before it has a chance to
look for the main method, so no exception occurs.
What a great hack!
--
Lew
Here's a better one: I got the code down to 139 characters...
enum C{a;{String g=" ",s="27 0";for(int i=1;i<28;s+=i++%10,g
+=0)System.out.println(i>26?s:i+g.replace('0',(char)
(64+i)));System.exit(0);}}
The trick to this one:
enums create one instance of their children during their static
initialization. This of course, calls the non-static initializer of
the super class, and then the child class.
So, as far as I know, the following is the smallest (source) non-
erroring program
enum C{a;{System.exit(0);}}
taking up only 28 chars, it is smaller than the other version by 5
chars:
class C{static{System.exit(0);}}
which takes 33 chars, and is itself *13* chars shorter than the
"standard" approach:
class C{public static void main(String[]a){}}
at a whopping 46 chars.
:-)