Power set: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→Module: ntheory: add libheader) |
No edit summary |
||
Line 39: | Line 39: | ||
report z_powerset. |
report z_powerset. |
||
interface set. |
|||
⚫ | |||
methods: |
|||
⚫ | |||
add_element |
|||
importing |
|||
i_element type any |
|||
exporting |
|||
i_elements type stringtab optional, |
|||
e_set type any table, |
|||
remove_element |
|||
importing |
|||
i_element type any, |
|||
⚫ | |||
⚫ | |||
⚫ | |||
remove_element |
|||
importing |
|||
i_element type any |
|||
⚫ | |||
⚫ | |||
get_size |
|||
⚫ | |||
returning |
|||
value(r_size) type int4, |
|||
⚫ | |||
⚫ | |||
is_equal |
|||
importing |
|||
i_set type ref to set |
|||
⚫ | |||
⚫ | |||
get_elements |
|||
exporting |
|||
e_elements type any table, |
|||
stringify |
|||
⚫ | |||
⚫ | |||
endinterface. |
|||
⚫ | |||
⚫ | |||
interfaces: |
|||
⚫ | |||
methods: |
|||
constructor |
|||
importing |
importing |
||
i_elements type stringtab optional, |
|||
⚫ | |||
⚫ | |||
get_elements |
|||
⚫ | |||
value(r_elements) type stringtab, |
|||
build_powerset |
|||
returning |
returning |
||
value( |
value(r_powerset) type ref to string_set. |
||
Line 86: | Line 98: | ||
class |
class string_set implementation. |
||
method constructor. |
method constructor. |
||
loop at i_elements into data(element). |
loop at i_elements into data(element). |
||
me->add_element( element ). |
me->set~add_element( element ). |
||
endloop. |
endloop. |
||
endmethod. |
endmethod. |
||
method add_element. |
method set~add_element. |
||
if not line_exists( me->elements[ table_line = i_element ] ). |
if not line_exists( me->elements[ table_line = i_element ] ). |
||
append i_element to me->elements. |
append i_element to me->elements. |
||
Line 101: | Line 113: | ||
method remove_element. |
method set~remove_element. |
||
if line_exists( me->elements[ table_line = i_element ] ). |
if line_exists( me->elements[ table_line = i_element ] ). |
||
delete me->elements where table_line = i_element. |
delete me->elements where table_line = i_element. |
||
Line 108: | Line 120: | ||
method 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 = i_element ] ) |
||
Line 116: | Line 128: | ||
method get_size. |
method set~get_size. |
||
r_size = lines( me->elements ). |
r_size = lines( me->elements ). |
||
endmethod. |
endmethod. |
||
method is_equal. |
method set~is_equal. |
||
if i_set->get_size( ) ne me->get_size( ). |
if i_set->get_size( ) ne me->set~get_size( ). |
||
r_is_equal = abap_false. |
r_is_equal = abap_false. |
||
return. |
return. |
||
Line 138: | Line 150: | ||
method get_elements. |
method set~get_elements. |
||
e_elements = me->elements. |
|||
endmethod. |
endmethod. |
||
method stringify. |
method set~stringify. |
||
r_string = cond string( |
r_string = cond string( |
||
when me->elements is initial |
when me->elements is initial |
||
Line 163: | Line 175: | ||
regex = `, $` |
regex = `, $` |
||
with = ` }`). |
with = ` }`). |
||
endmethod. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
endmethod. |
endmethod. |
||
endclass. |
endclass. |
||
Line 168: | Line 197: | ||
start-of-selection. |
start-of-selection. |
||
data(result_set) = new |
data(result_set) = new string_set( ). |
||
data(set1) = new |
data(set1) = new string_set( ). |
||
data(set2) = new |
data(set2) = new string_set( value stringtab( ( `∅` ) ) ). |
||
data(set3) = new |
data(set3) = new string_set( value stringtab( ( `1` ) ( `2` ) ( `3` ) ( `3` ) ( `4` ) ( `4` ) ( `4` ) ) ). |
||
write |𝑷( { set1->stringify( ) } ) ->|. |
write |𝑷( { set1->set~stringify( ) } ) ->|. |
||
result_set = set1->build_powerset( ). |
|||
⚫ | |||
changing result_set. |
|||
write result_set->stringify( ). |
write result_set->set~stringify( ). |
||
new-line. |
new-line. |
||
write |𝑷( { set2->stringify( ) } ) ->|. |
write |𝑷( { set2->set~stringify( ) } ) ->|. |
||
result_set = set2->build_powerset( ). |
|||
perform build_powerset using set2 |
|||
changing result_set. |
|||
write result_set->stringify( ). |
write result_set->set~stringify( ). |
||
new-line. |
new-line. |
||
write |𝑷( { set3->stringify( ) } ) ->|. |
write |𝑷( { set3->set~stringify( ) } ) ->|. |
||
result_set = set3->build_powerset( ). |
|||
perform build_powerset using set3 |
|||
changing result_set. |
|||
write result_set->stringify( ). |
write result_set->set~stringify( ). |
||
new-line. |
new-line. |
||
form build_powerset using set type ref to set |
|||
changing powerset type ref to set. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
endform. |
|||
</lang> |
</lang> |
||