From: "Florian Groß" Date: 2005-12-24T10:05:14+09:00 Subject: Re: Translate from Python to Ruby --------------010307020203070901010000 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sam Kong wrote: > I am trying to get a powerset (all subsets) of a set. > I couldn't find a code in Ruby, but I found a code in Python. > I'm trying to convert it to Ruby but it's not done easily. > > def powset(seq): > if seq: > head, tail = seq[:1], seq[1:] > for smaller in powset(tail): > yield smaller > yield head + smaller > else: > yield [] Here's mine. It's not 1:1, but you should be able to recognize the original concept. Feel free to ask any questions you might have about the code. TRANS, are you listening? :) -- http://flgr.0x42.net/ --------------010307020203070901010000 Content-Type: application/x-ruby; name="powerset.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="powerset.rb" cmVxdWlyZSAnc2V0Jw0KcmVxdWlyZSAnZW51bWVyYXRvcicNCg0KbW9kdWxlIEVudW1lcmFi bGUNCiAgIyBSZXR1cm5zIGFuIEFycmF5IGNvbnRhaW5pbmcgdGhlIGZpcnN0IGVsZW1lbnQg YW5kIG9uZQ0KICAjIGNvbnRhaW5pbmcgYWxsIG90aGVyIGVsZW1lbnRzIG9mIHRoaXMgRW51 bWVyYWJsZS4NCiAgIw0KICAjIElmIHRoZXJlIGlzbid0IGVub3VnaCBlbGVtZW50cyB0byBw b3B1bGF0ZSBvbmUgb2YgdGhlDQogICMgbGlzdHMgdGhlIGxpc3Qgd2lsbCBiZSBlbXB0eSwg YnV0IHByZXNlbnQuDQogICMNCiAgIyBFLmcuOg0KICAjICAgW10uaGVhZF9hbmRfdGFpbCAj ID0+IFtbXSwgW11dDQogICMgICBbMV0uaGVhZF9hbmRfdGFpbCAjID0+IFtbMV0sIFtdXQ0K ICAjICAgWzEsIDJdLmhlYWRfYW5kX3RhaWwgIyA9PiBbWzFdLCBbMl1dDQogICMgICBbMSwg MiwgM10uaGVhZF9hbmRfdGFpbCAjID0+IFtbMV0sIFsyLCAzXV0NCiAgZGVmIGhlYWRfYW5k X3RhaWwoKQ0KICAgIGkgPSAtMQ0KICAgIHBhcnRpdGlvbiB7IChpICs9IDEpID09IDAgfQ0K ICBlbmQNCg0KICAjIFlpZWxkcyBlYWNoIHN1YnNldCB0aGF0IGNhbiBwb3NzaWJsZSBiZSBj cmVhdGVkIGJ5DQogICMgY29tYmluaW5nIHRoZSBlbGVtZW50cyBpbiB0aGlzIEVudW1lcmFi bGUuIFRoZSBlbXB0eQ0KICAjIHN1YnNldCBpcyBpbmNsdWRlZC4gVGhlIG9yZGVyIGlzIHVu ZGVmaW5lZC4NCiAgIw0KICAjIEFsbCBzdWJzZXRzIGFyZSBBcnJheXMuDQogICMNCiAgIyBF LmcuOg0KICAjICAgIyBQcmludHMgW10sIFsxXSwgWzJdLCBbMSwgMl0NCiAgIyAgIFsxLCAy XS5lYWNoX3Bvd2Vyc2V0IHsgfHNldHwgcCBzZXQgfQ0KICBkZWYgZWFjaF9wb3dlcnNldCgp DQogICAgaGVhZCwgdGFpbCA9ICpoZWFkX2FuZF90YWlsDQoNCiAgICBpZiBoZWFkLmVtcHR5 PyB0aGVuDQogICAgICB5aWVsZCBoZWFkDQogICAgZWxzZQ0KICAgICAgdGFpbC5lYWNoX3Bv d2Vyc2V0IGRvIHxzbWFsbGVyfA0KICAgICAgICB5aWVsZCBzbWFsbGVyDQogICAgICAgIHlp ZWxkIGhlYWQgKyBzbWFsbGVyDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAgIyBT YW1lIGFzIGVhY2hfcG93ZXJzZXQoKSBidXQgcmV0dXJucyBhbiBBcnJheSBpbnN0ZWFkDQog ICMgb2YgeWllbGRpbmcgdGhlIGVsZW1lbnRzLiBUaGUgb3JkZXIgaXMgc3RpbGwgdW5kZWZp bmVkLg0KICAjDQogICMgRS5nLjoNCiAgIyAgIFsxLCAyXS5wb3dlcnNldCAjID0+IFtbXSwg WzFdLCBbMl0sIFsxLCAyXV0NCiAgZGVmIHBvd2Vyc2V0KCkNCiAgICBlbnVtX2Zvcig6ZWFj aF9wb3dlcnNldCkudG9fYQ0KICBlbmQNCmVuZA0KDQpjbGFzcyBTZXQNCiAgIyBTYW1lIGFz IEVudW1lcmFibGUjZWFjaF9wb3dlcnNldCBidXQgeWllbGRzIFNldHMgaW5zdGVhZA0KICAj IG9mIEFycmF5cy4NCiAgZGVmIGVhY2hfcG93ZXJzZXQoKQ0KICAgIHN1cGVyIGRvIHxzdWJz ZXR8DQogICAgICB5aWVsZCBTZXRbKnN1YnNldF0NCiAgICBlbmQNCiAgZW5kDQoNCiAgIyBT YW1lIGFzIEVudW1lcmFibGUjcG93ZXJzZXQgYnV0IHJldHVybnMgYSBTZXQgb2YgU2V0cw0K ICAjIGluc3RlYWQgb2YgYW4gQXJyYXkgb2YgQXJyYXlzLg0KICBkZWYgcG93ZXJzZXQoKQ0K ICAgIFNldFsqc3VwZXJdDQogIGVuZA0KZW5kDQo= --------------010307020203070901010000--