On Jul 7, 2009, at 6:21 AM, Priit Laes wrote:

>
> Ühel kenal päeval, T, 2009-07-07 kell 13:28, kirjutas Christophe:
>> Aaron S. Meurer a écrit :
>>>
>>> Interval(3, 4, endpoints='oc'), which would create (3, 4] ('oc'  
>>> stands
>>> for open-closed).
>
> How about using '[' for closed and ']' instead of 'o' and 'c'? I find
> '[]' or '][' a bit more intuitive, as it took a bit time to figure out
> that 'oo' means open-open interval, not infinity..
> So: cc = '[]', oc = ']]', oo = '][' and co = '[['.
You're probably right.  According to 
http://en.wikipedia.org/wiki/Interval_(mathematics)#Notations_for_intervals 
, there is a different notation based on whether you are in America or  
in Europe.  I think we can allow multiple different notations for the  
arguments of the function. For example, also allow the use of a  
bracket to denote open and a parenthesis to denote closed as is the  
standard notation, so open-closed would be '(]', and so on.

As to printing, I think we need to decide.  I have never seen  
the ]3,4] notation, but I guess that is used.  What do you think?  I  
guess we can include to option to have both, but we still need a  
default option.
>
>
>> Hello here is a first try fopr working with sets. This code has been
>> writing directly as I was thinking of what I neede. I think that it
>> could be better. I'll work on unions of intervals : ythis would be
>> simply a list of single intervals with additional methods so as to
>> simplify a union. For the moment, only the intersection has been  
>> made. I
>> hope that I didn't forget something.
>>
>> Every kind of suggestion is welcome.
>
> Some of the comments below are influenced by "PEP 8 -- Style Guide for
> Python Code" - http://www.python.org/dev/peps/pep-0008/ :)
>
>> #!/usr/bin/env python
>> #coding=utf-8
>>
>>
>> # Code writing by BAL Christophe
>> # Mail : projet...@club.fr
>>
>> class Interval():
>>    def __init__(self, a, b, endpoints ='cc'):
>>        if endpoints not in ['cc', 'oc', 'co', 'oo']:
>>            raise Exception, 'Unkown endpoints of interval : "' +  
>> str(endpoints) + '"'
> please use raise Exception (...)
> ...and note the grammar and typo.
Actually, this should be TypeError, not Exception.  Also, the typo he  
is referring to is the misspelling of "Unknown".
>>
>>        self.endpoints = endpoints
>>
>>        if a>b:
> Please use proper spacing here: a > b...
>>            self.min,self.max = b,a
> ...and here...
>>            self.endpoints_min, self.endpoints_max = endpoints[1],  
>> endpoints[0]
>>        else:
>>            self.min = a
>>            self.max = b
>>            self.endpoints_min = endpoints[0]
>>            self.endpoints_max = endpoints[1]
> self.endpoints handling looks broken - they are not reversed here ^^
>>
>>    def __str__(self):
>>        if self.min == self.max:
>>            if self.endpoints == 'cc':
>>                return '{' + str(self.min) + '}'
> Should we use [ or { ??
I am unfamiliar with the European notation, as I mentioned above, but  
usually '{' is reserved for finite sets, like {1, 2, 3}, or set  
builder notation, like {x | 1 < x < 2}.
>>            else:
>>                return 'Empty Set'
>>
>>        if self.endpoints_min=='c':
> ..spacing..
>>            t = '['
>>        else:
>>            t =']'
>>
>>        t+=str(self.min) + ';' + str(self.max)
> ...
>>        if self.endpoints_max=='c':
> spacing
>>            t += ']'
>>        else:
>>            t +='['
>>
>>        return t
>>
>>    def intersection(self, otherInterval):
> Please add docstring...
>> # The intersection is empty.
>>        if self.min == self.max or otherInterval.min ==  
>> otherInterval.max:
>>            return Interval(0, 0, 'oo')
>>
>>        maxOfMins = max(self.min, otherInterval.min)
>>        minOfMaxs = min(self.max, otherInterval.max)
>>
>>        if maxOfMins > minOfMaxs:
>>            return Interval(0, 0, 'oo')
>>
>>        if self.min == self.max or otherInterval.min ==  
>> otherInterval.max:
>>            return Interval(0, 0, 'oo')
>>
>> # The intersection could be a set with a single element.
>>        if minOfMaxs == maxOfMins:
>>            if self.max == minOfMaxs:
>>                if self.endpoints_max == 'o' or  
>> otherInterval.endpoints_min =='o':
>>                    return Interval(0, 0, 'oo')
>>                else:
>>                    return Interval(minOfMaxs, minOfMaxs)
>>
>>            else:
>>                if self.endpoints_min == 'o' or  
>> otherInterval.endpoints_max =='o':
>>                    return Interval(0, 0, 'oo')
>>                else:
>>                    return Interval(minOfMaxs, minOfMaxs)
>>
>> # Wath is the endpoints of the intersection ?
Please change to: # What are the endpoints of the intersection?
>>        answerendpoints_min = 'c'
>>
>>        if self.min == maxOfMins :
> spacing...
>>            answerendpoints_min = self.endpoints_min
>>
>>        if otherInterval.min == maxOfMins and answerendpoints_min ==  
>> 'c':
>>            answerendpoints_min = otherInterval.endpoints_min
>>
>>        answerendpoints_max = 'c'
>>
>>        if self.max == minOfMaxs :
> spacing..
>>            answerendpoints_max = self.endpoints_max
>>
>>        if otherInterval.max == minOfMaxs and answerendpoints_max ==  
>> 'c':
>>            answerendpoints_max = otherInterval.endpoints_max
>>
>>        return Interval(maxOfMins, minOfMaxs, answerendpoints_min 
>> +answerendpoints_max)
> spacing...
>
> Also, I would prefer to have lower-case variables:
> minOfMaxs vs min_of_max
Yes, this is the standard naming in Python.

Aaron Meurer
>
> Cheers,
> Priit :)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to