[ruby-core:74736] [Ruby trunk Feature#12222] Introducing basic statistics methods for Enumerable (and optimized implementation for Array)

From: eregontp@...
Date: 2016-03-31 09:14:06 UTC
List: ruby-core #74736
SXNzdWUgIzEyMjIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgQmVub2l0IERhbG96ZS4KCgpNYXJ0aW4g
RMO8cnN0IHdyb3RlOgo+IEJlbm9pdCBEYWxvemUgd3JvdGU6Cj4gPiBJdCBzZWVtcyB0byBtZSBF
bnVtZXJhYmxlIGlzIG5vdCB0aGUgcmlnaHQgcGxhY2UgZm9yIHRoaXMsIGJlY2F1c2UgaXQgZXhw
ZWN0cyBtb3JlIHRoYW4ganVzdCAjZWFjaC4KPiAKPiBUaGUgY29kZSBpcyBjdXJyZW50bHkgd3Jp
dHRlbiBpbiB0ZXJtcyBvZiAjbGVuZ3RoIGFuZCAjW10sIGJ1dCB0aGlzIGNhbiBlYXNpbHkgYmUg
Zml4ZWQgdG8gdXNlICNlYWNoLgo+IAo+ID4gQWxzbywgdGhlc2UgbWV0aG9kcyBhcmUgbGlrZWx5
IHVzZWZ1bCBvbmx5IGZvciBudW1lcmljIGNvbGxlY3Rpb25zLgo+IAo+IFRoZW4ganVzdCBkb24n
dCB1c2VkIHRoZW0gb24gb3RoZXIgY29sbGVjdGlvbnMgOi0pLgoKVGhhdCdzIG15IHBvaW50LiBF
bnVtZXJhYmxlIG1ldGhvZHMgc2hvdWxkIHdvcmsgb24gYW55IGNvbGxlY3Rpb24gaW1wbGVtZW50
aW5nICNlYWNoLgpOb3Qgb25seSBvbiAjZWFjaCByZXR1cm5pbmcgYSBudW1lcmljLXR5cGUgb3Ig
c3RoIHdpdGggYSAjKy8jLSBtZXRob2QgKGFuZCB0aGVuIHRoZSByZXN1bHQgb2YgIy0gc2hvdWxk
IHJlc3BvbmQgdG8gIy8sIGV0Yywgc28gY29tcGxleCBzZW1hbnRpY3MgaWYgaXQncyBub3QgbnVt
ZXJpYykuCkFsc28sIHdoYXQgd291bGQgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFsiYSIsICJi
Il0udmFyaWFuY2UgPyBBIE5vTWV0aG9kRXJyb3I/CkN1cnJlbnRseSwgaXQgc2VlbXMgRW51bWVy
YWJsZSBvbmx5IHJlbGllcyBvbiBlYWNoLCBhbmQgZm9yIHNvcnQqIGFkZGl0aW9uYWxseSBvbiAj
PD0+LgoKPiA+IE1heWJlIGEgIlN0YXRpc3RpY3MiIG1vZHVsZSBhdCBhIHN0ZGxpYj8KPiA+IFN0
YXRpc3RpY3MubWVhbi92YXJpYW5jZS9ldGMoZW51bSkgd291bGQgYmUgYSBuaWNlciBBUEkgdGhh
biBtaXhpbmcgZXZlcnl0aGluZyBpbiBFbnVtZXJhYmxlIElNSE8uCj4gCj4gV2h5PyBJIGRvbid0
IHNlZSBtdWNoIHBvdGVudGlhbCBmb3IgY29uZmxpY3RzLiBPciBkb2VzIGFueWJvZHkgaGF2ZSBh
bnkgbWVhbiAoYXMgb3Bwb3NlZCB0byBuaWNlKSBjb2xsZWN0aW9ucz8KClllcywgU3RhdGlzdGlj
cyB3b3VsZCBiZSBhIHBvdGVudGlhbCBuYW1lc3BhY2UgY29uZmxpY3QgYW5kIGluZGVlZCBkaXJl
Y3QgbWV0aG9kcyBtaWdodCBiZSBsZXNzIGxpa2VseS4KSSBhbSBub3Qgc3VyZSBob3cgdG8gZXZh
bHVhdGUgdGhpcy4KCkl0IGNvdWxkIGFsc28gYmUgYSBtb2R1bGUgdG8gaW5jbHVkZSAod2hpY2gg
d291bGQgdGhlbiBzcGVjaWZ5IGNsZWFybHkgaXRzIHJlcXVpcmVtZW50IG9uIHRoZSBlbGVtZW50
cyk6CmNsYXNzIFNhbXBsZQogIGluY2x1ZGUgRW51bWVyYWJsZSwgU3RhdGlzdGljcwogIGRlZiBl
YWNoOyAuLi47IGVuZAplbmQKCj4gQWxzbywgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgYSBiaWdn
ZXIgQVBJIGRvZXNuJ3QgcmVhbGx5IHNsb3cgYW55dGhpbmcgZG93bi4KCkkgYW0gbm90IGNvbmNl
cm5lZCBhYm91dCBwZXJmb3JtYW5jZSBoZXJlLgpJIHZlcnkgbXVjaCBsaWtlIGEgZXhoYXVzdGl2
ZSBtb2R1bGUgbGlrZSBFbnVtZXJhYmxlLCBidXQgSSB0aGluayBpdCBzaG91bGQgc3RheSBjb25z
aXN0ZW50IGluIHdoYXQgaXQgcHJvdmlkZXMgYW5kIGV4cGVjdHMuCgo+IEkgd291bGQgZGVmaW5p
dGVseSBzZWUgcHJvdmlkaW5nIHRoZXNlIChhbmQgbW9yZSkgc3RhdGlzdGljYWwgbWV0aG9kcyBm
b3IgUnVieSBhcyBhIGJpZyBwbHVzLgoKWWVzLCBkbyBub3QgZ2V0IG1lIHdyb25nLCBJIHRvdGFs
bHkgYWdyZWUgd2l0aCB0aGF0IQoKV291bGQgaXQgbWFrZSBzZW5zZSB0byBhZGQgc3R1ZmYgbGlr
ZSAjY29uZmlkZW5jZV9pbnRlcnZhbCBvbiBFbnVtZXJhYmxlPwpJIHRoaW5rIHRoYXQgd291bGQg
YmVsb25nIG1vcmUgbmljZWx5IHRvIGEgU3RhdGlzdGljcyBtb2R1bGUgKGluIGNvcmUgb3Igc3Rh
bmRhcmQgbGlicmFyeSkuCgpJdCdzIGFsc28gaGFyZCB0byBkcmF3IGEgbGluZSBiZXR3ZWVuIHdl
bGwta25vd24gc3RhdGlzY3RpY3MgbWV0aG9kcyBsaWtlIHN1bSwgYXZlcmFnZSwgc3RkZGV2IGFu
ZCBtb3JlIGNvbXBsZXggb25lIGxpa2UgY29uZmlkZW5jZSwgb3RoZXIgbWVhbiBhbmQgdmFyaWFu
Y2UgZXN0aW1hdG9ycywgZXRjLgpJZiBpdCdzIG5vdCBpbiBFbnVtZXJhYmxlLCB0aGVyZSBpcyBu
byBuZWVkIHRvIGRyYXcgc3VjaCBhIGxpbmUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkZlYXR1cmUgIzEyMjIyOiBJbnRyb2R1Y2luZyBiYXNpYyBzdGF0aXN0aWNz
IG1ldGhvZHMgZm9yIEVudW1lcmFibGUgKGFuZCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9y
IEFycmF5KQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTIyMjIjY2hhbmdlLTU3
ODcxCgoqIEF1dGhvcjogS2VudGEgTXVyYXRhCiogU3RhdHVzOiBBc3NpZ25lZAoqIFByaW9yaXR5
OiBOb3JtYWwKKiBBc3NpZ25lZTogWXVraWhpcm8gTWF0c3Vtb3RvCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXMgcHl0aG9uIGhhcyBzdGF0aXN0aWNzIGxpYnJhcnkg
Zm9yIGNhbGN1bGF0aW5nIG1lYW4sIHZhcmlhbmNlLCBldGMuIG9mIGFycmF5cyBhbmQgaXRlcmF0
b3JzIGZyb20gdmVyc2lvbiAzLjQsCkkgd291bGQgbGlrZSB0byBwcm9wb3NlIHRvIGludHJvZHVj
ZSBzdWNoIGZlYXR1cmVzIGZvciBidWlsdC1pbiBFbnVtZXJhYmxlLCBhbmQgb3B0aW1pemVkIGlt
cGxlbWVudGF0aW9uIGZvciBBcnJheS4KCkVzcGVjaWFsbHkgSSB3YW50IHRvIHByb3ZpZGUgRW51
bWVyYWJsZSNtZWFuIGFuZCBFbnVtZXJhYmxlI3ZhcmlhbmNlIGFzIGJ1aWx0LWluIGZlYXR1cmVz
IGJlY2F1c2UgdGhleSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgcHJlY2lzaW9uIGNvbXBlbnNh
dGVkIGFsZ29yaXRobXMuClRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGF0IHdlIGNvdWxk
bid0IGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciBzb21lIGFycmF5cyB3aXRo
IHNpbXBsZSB2YXJpYW5jZSBhbGdvcml0aG0gYmVjYXVzZSB3ZSBnZXQgbmVnYXRpdmUgdmFyaWFu
Y2UgbnVtYmVycy4KCmBgYHJ1YnkKY2xhc3MgQXJyYXkKICAjIEthaGFuIHN1bW1hdGlvbgogIGRl
ZiBzdW0KICAgIHMgPSAwLjAKICAgIGMgPSAwLjAKICAgIG4gPSBzZWxmLmxlbmd0aAogICAgaSA9
IDAKICAgIHdoaWxlIGkgPCBuCiAgICAgIHkgPSBzZWxmW2ldIC0gYwogICAgICB0ID0gcyArIHkK
ICAgICAgYyA9ICh0IC0gcykgLSB5CiAgICAgIHMgPSB0CiAgICAgIGkgKz0gMQogICAgZW5kCiAg
ICBzCiAgZW5kCgogICMgcHJlY2lzaW9uIGNvbXBlbnNhdGVkIGFsZ29yaXRobQogIGRlZiB2YXJp
YW5jZQogICAgbiA9IHNlbGYubGVuZ3RoCiAgICByZXR1cm4gRmxvYXQ6Ok5BTiBpZiBuIDwgMgog
ICAgbTEgPSAwLjAKICAgIG0yID0gMC4wCiAgICBpID0gMAogICAgd2hpbGUgaSA8IG4KICAgICAg
eCA9IHNlbGZbaV0KICAgICAgZGVsdGEgPSB4IC0gbTEKICAgICAgbTEgKz0gZGVsdGEgLyAoaSAr
IDEpCiAgICAgIG0yICs9IGRlbHRhKih4IC0gbTEpCiAgICAgIGkgKz0gMQogICAgZW5kCiAgICBt
MiAvIChuIC0gMSkKICBlbmQKZW5kCgphcnkgPSBbIDEuMDAwMDAwMDA4MTgwNjAwNCwgMS4wMDAw
MDAwMDA5MTI0NjI1LCAxLjAwMDAwMDAwOTkyMDE4MTgsIDEuMDAwMDAwMDA2MTgyMTY2OCwgMS4w
MDAwMDAwMDQyNjQ0NTU1IF0KCiMgc2ltcGxlIHZhcmlhbmNlIGFsZ29yaXRobQphID0gYXJ5Lm1h
cCB7fHh8IHggKiogMiB9LnN1bQpiID0gYXJ5LnN1bSAqKiAyIC8gYXJ5Lmxlbmd0aApwIChhIC0g
YikgLyAoYXJ5Lmxlbmd0aCAtIDEpICAjPT4gLTIuMjIwNDQ2MDQ5MjUwMzEzZS0xNgoKIyBwcmVj
aXNpb24gY29tcGVuc2F0ZWQgYWxnb3JpdGhtCnAgYXJ5LnZhcmlhbmNlICAjPT4gMS4yMjQ4MjA4
MDQ2MzkyNTc5ZS0xNwpgYGAKCkkgdGhpbmsgcHJlY2lzaW9uIGNvbXBlbnNhdGVkIGFsZ29yaXRo
bSBpcyB0b28gY29tcGxpY2F0ZWQgdG8gbGV0IHVzZXJzIGltcGxlbWVudCBpdC4KCgoKLS0gCmh0
dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3Jl
LXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3Rz
LnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=

In This Thread

Prev Next