Loop from 'aaaa' to 'tttt' ?

Steven Taschuk staschuk at telusplanet.net
Tue Jun 17 19:15:37 CEST 2003


Quoth Anton Vredegoor:
  ["antonian" numbers]
> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, and next -surprisingly- what follows is
> *not* "10" but its "00". Why? because in normal counting there already
> was an "invisible" leading zero that got increased to "1" but in my
> system there where no leading zero's to begin with, so a zero is added
> to the left.
> 
> So counting goes on:
> 
> ... 7, 8, 9, 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, etc.

A very small modification to the normal base-representation
algorithm does this:

    def antoniandigits(val, base=10):
        val = abs(val)
        digits = []
        while True:
            q, r = divmod(val, base)
            digits.append(r)
            if not q:
                break
            val = q - 1                                 # no "- 1" normally
        digits.reverse()
        return digits

Conversely,

    def antonianvalue(string, base=10):
        digits = list(string)
        value = 0
        for digit in digits:
            value = value*base
            value = value + ord(digits) - ord('0') + 1  # no "+ 1" normally
        return value - 1                                # no "- 1" normally

(That last -1 is needed because the Antonian representation of
zero is not an empty string.)

Very similar to your code, of course.

How about "Antonine" instead of "Antonian"?

-- 
Steven Taschuk                          staschuk at telusplanet.net
"Its force is immeasurable.  Even Computer cannot determine it."
                           -- _Space: 1999_ episode "Black Sun"





More information about the Python-list mailing list