Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Divisible by 3 or 5, in lisp

Name: Anonymous 2007-08-12 17:20 ID:RyfBwU/E

(lambda (n) (or (= 0 (mod n 3)) (= 0 (mod n 5))))

how on earth do you write this in lisp, I mean better than I have here.. surely it must be possible?

Rube Goldberg devices are definitely acceptable if it makes the final code better.. hope you have some ideas /prog/

Name: Anonymous 2007-08-14 13:04 ID:4If5aQmY

You people obviously have no experience writing enterprise maintainable code. See the following short snippet for an elegant yet extendible solution in Java. Note how code encapsulation lets me reuse the subtle optimizations in new code. I plan to further generalize it by wrapping it all up with the singleton and factory patterns and allowing configuration via XML.


interface NumDivisor {
    public boolean dividesNumber(int n);
}

class NumDivisor3 implements NumDivisor {
    public boolean dividesNumber(int numberToBeDivided) {
        String numberConvertedToString = String.valueOf(numberToBeDivided);
        int sumOfNumbersDigits = 0;
        if (!numberConvertedToString.startsWith("-"))   // Fix for negative numbers.  -- John.
            for (int loopIndex = 0; loopIndex < numberConvertedToString.length(); loopIndex = loopIndex + 1)
                sumOfNumbersDigits = sumOfNumbersDigits + Integer.parseInt(numberConvertedToString.substring(loopIndex, loopIndex + 1));
        else
            for (int loopIndex = 1; loopIndex < numberConvertedToString.length(); loopIndex = loopIndex + 1)
                sumOfNumbersDigits = sumOfNumbersDigits + Integer.parseInt(numberConvertedToString.substring(loopIndex, loopIndex + 1));
        if (sumOfNumbersDigits % 3 == 0)
            return true;
        else
            return false;
    }
}

class NumDivisor5 implements NumDivisor {
    public boolean dividesNumber(int numberToBeDivided) {
        String numberConvertedToString = String.valueOf(numberToBeDivided);
        if (numberConvertedToString.endsWith("5"))
            return true;
        else if (numberConvertedToString.endsWith("0"))
            return true;
        else
            return false;
    }
}

class NumDivisor3and5 implements NumDivisor {
    private NumDivisor numDivisor3 = new NumDivisor3();
    private NumDivisor numDivisor5 = new NumDivisor5();

    public boolean dividesNumber(int numberToBeDivided) {
        if (numDivisor3.dividesNumber(numberToBeDivided))
            if (numDivisor5.dividesNumber(numberToBeDivided))
                return true;
            else
                return false;
        else
            return false;
    }
}


Java Satori is within my reach.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List