Power set: Difference between revisions

→‎{{header|Go}}: Improved set type. Could be considered a bug fix. Set equality code was requiring sets to be in the same order. New code follows conventional meaning of set as an unordered collection.
(→‎Non-recursive version: improved the descriptions of my algorithm)
(→‎{{header|Go}}: Improved set type. Could be considered a bug fix. Set equality code was requiring sets to be in the same order. New code follows conventional meaning of set as an unordered collection.)
Line 792:
 
// uniqueness of elements can be ensured by using add method
func (s *set) addaddEle(e element) {
if !s.hasEle(e) {
*s = append(*s, e)
}
}
 
func (s *set) hasEle(e element) bool {
for _, ex := range *s {
if e.eq(ex) {
return true
}
}
return false
*s = append(*s, e)
}
 
Line 810 ⟶ 816:
return false
}
sLoop:
for _, se := range s {
for _, te := rangeif !t.hasEle(se) {
if se.eq(te) {
continue sLoop
}
return false
}
Line 849 ⟶ 851:
func main() {
var s set
for _, i := range []intintEle{1, 2, 2, 3, 4, 4, 4} {
s.add(intEleaddEle(i))
}
fmt.Println(s)
Line 858 ⟶ 860:
fmt.Println("length =", len(ps))
}</lang>
{{out}}
Output:
<pre>
{1 2 3 4}
1,707

edits