Power set: Difference between revisions

Content added Content deleted
mNo edit summary
mNo edit summary
Line 43: Line 43:
add_element
add_element
importing
importing
i_element type any
new_element type any
returning
returning
value(r_set) type ref to set,
value(new_set) type ref to set,


remove_element
remove_element
importing
importing
i_element type any
element_to_be_removed type any
returning
returning
value(r_set) type ref to set,
value(new_set) type ref to set,


contains_element
contains_element
importing
importing
i_element type any
element_to_be_found type any
returning
returning
value(r_contains) type abap_bool,
value(r_contains) type abap_bool,


get_size
get_size
returning
returning
value(r_size) type int4,
value(size) type int4,


is_equal
is_equal
importing
importing
i_set type ref to set
set_to_be_compared_with type ref to set
returning
returning
value(r_is_equal) type abap_bool,
value(equal) type abap_bool,


get_elements
get_elements
exporting
exporting
e_elements type any table,
elements type any table,


stringify
stringify
returning
returning
value(r_string) type string.
value(stringified_set) type string.
endinterface.
endinterface.


Line 88: Line 88:
constructor
constructor
importing
importing
i_elements type stringtab optional,
elements type stringtab optional,


build_powerset
build_powerset
returning
returning
value(r_powerset) type ref to string_set.
value(powerset) type ref to string_set.




Line 102: Line 102:
class string_set implementation.
class string_set implementation.
method constructor.
method constructor.
loop at i_elements into data(element).
loop at elements into data(element).
me->set~add_element( element ).
me->set~add_element( element ).
endloop.
endloop.
Line 109: Line 109:


method set~add_element.
method set~add_element.
if not line_exists( me->elements[ table_line = i_element ] ).
if not line_exists( me->elements[ table_line = new_element ] ).
append i_element to me->elements.
append new_element to me->elements.
endif.
endif.


r_set = me.
new_set = me.
endmethod.
endmethod.




method set~remove_element.
method set~remove_element.
if line_exists( me->elements[ table_line = i_element ] ).
if line_exists( me->elements[ table_line = element_to_be_removed ] ).
delete me->elements where table_line = i_element.
delete me->elements where table_line = element_to_be_removed.
endif.
endif.


r_set = me.
new_set = me.
endmethod.
endmethod.


Line 128: Line 128:
method set~contains_element.
method set~contains_element.
r_contains = cond abap_bool(
r_contains = cond abap_bool(
when line_exists( me->elements[ table_line = i_element ] )
when line_exists( me->elements[ table_line = element_to_be_found ] )
then abap_true
then abap_true
else abap_false ).
else abap_false ).
Line 135: Line 135:


method set~get_size.
method set~get_size.
r_size = lines( me->elements ).
size = lines( me->elements ).
endmethod.
endmethod.




method set~is_equal.
method set~is_equal.
if i_set->get_size( ) ne me->set~get_size( ).
if set_to_be_compared_with->get_size( ) ne me->set~get_size( ).
r_is_equal = abap_false.
equal = abap_false.


return.
return.
Line 147: Line 147:


loop at me->elements into data(element).
loop at me->elements into data(element).
if not i_set->contains_element( element ).
if not set_to_be_compared_with->contains_element( element ).
r_is_equal = abap_false.
equal = abap_false.


return.
return.
Line 154: Line 154:
endloop.
endloop.


r_is_equal = abap_true.
equal = abap_true.
endmethod.
endmethod.




method set~get_elements.
method set~get_elements.
e_elements = me->elements.
elements = me->elements.
endmethod.
endmethod.




method set~stringify.
method set~stringify.
r_string = cond string(
stringified_set = cond string(
when me->elements is initial
when me->elements is initial
then `∅`
then `∅`
Line 179: Line 179:
else |{ result }\{{ element }\}, | ) ) ).
else |{ result }\{{ element }\}, | ) ) ).


r_string = replace(
stringified_set = replace(
val = r_string
val = stringified_set
regex = `, $`
regex = `, $`
with = ` }`).
with = ` }`).
Line 199: Line 199:
endloop.
endloop.


r_powerset = new string_set( powerset_elements ).
powerset = new string_set( powerset_elements ).
endmethod.
endmethod.
endclass.
endclass.