[ruby-core:122857] [Ruby Feature#21518] Statistical helpers to `Enumerable`
From:
"Amitleshed (Amit Leshed) via ruby-core" <ruby-core@...>
Date:
2025-07-24 14:34:58 UTC
List:
ruby-core #122857
SXNzdWUgIzIxNTE4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgQW1pdGxlc2hlZCAoQW1pdCBMZXNoZWQp Lg0KDQoNCkRhbjAwNDIgKERhbmllbCBEZUxvcm1lKSB3cm90ZSBpbiAjbm90ZS0xOg0KPiBJbiBm YXZvciwganVzdCBjYXJlZnVsIGFib3V0IHRoZSBidWcgaW4gI21lZGlhbg0KPiBgYGBydWJ5DQo+ IHggPSBbMSwgMywgMl0NCj4geC5tZWRpYW4gIz0+IDINCj4geCAjPT4gWzEsIDIsIDNdIG1vZGlm aWVkIGJ5ICNtZWRpYW4NCj4gYGBgDQo+IFlvdSdsbCB3YW50IHRvIHVzZSBgYXJyID0gZW50cmll c2AgcmF0aGVyIHRoYW4gYGFyciA9IHRvX2FgDQoNClJpZ2h0LiBHcmVhdCBjYXRjaC4NCg0KRGFu MDA0MiAoRGFuaWVsIERlTG9ybWUpIHdyb3RlIGluICNub3RlLTE6DQo+IEluIGZhdm9yLCBqdXN0 IGNhcmVmdWwgYWJvdXQgdGhlIGJ1ZyBpbiAjbWVkaWFuDQo+IGBgYHJ1YnkNCj4geCA9IFsxLCAz LCAyXQ0KPiB4Lm1lZGlhbiAjPT4gMg0KPiB4ICM9PiBbMSwgMiwgM10gbW9kaWZpZWQgYnkgI21l ZGlhbg0KPiBgYGANCj4gWW91J2xsIHdhbnQgdG8gdXNlIGBhcnIgPSBlbnRyaWVzYCByYXRoZXIg dGhhbiBgYXJyID0gdG9fYWANCg0KVGhhbmtzLCBncmVhdCBjYXRjaCENCg0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMjE1MTg6IFN0YXRpc3RpY2Fs IGhlbHBlcnMgdG8gYEVudW1lcmFibGVgDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMjE1MTgjY2hhbmdlLTExNDE0OA0KDQoqIEF1dGhvcjogQW1pdGxlc2hlZCAoQW1pdCBMZXNo ZWQpDQoqIFN0YXR1czogT3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKipTdW1tYXJ5KioNCg0KSSdkIGxpa2UgdG8gYWRkIHR3byBzdGF0aXN0aWNhbCBoZWxw ZXJzIHRvIGBFbnVtZXJhYmxlYDoNCg0KLSBgRW51bWVyYWJsZSNhdmVyYWdlYCAoYXJpdGhtZXRp YyBtZWFuKQ0KLSBgRW51bWVyYWJsZSNtZWRpYW5gDQoNCkJvdGggYXJlIHNtYWxsLCB3ZWxsLWRl ZmluZWQgb3BlcmF0aW9ucyB0aGF0IG1hbnkgUnVieWlzdHMgcmUtaW1wbGVtZW50IGluIGFwcHMg YW5kIGdlbXMuIFByb3ZpZGluZyB0aGVtIGluIGNvcmUgYXZvaWRzIHJlcGVhdGVkLCBhZC1ob2Mg Y29kZSBhbmQgYWxpZ25zIHdpdGggYEVudW1lcmFibGUjc3VtYCwgd2hpY2ggUnVieSBhbHJlYWR5 IHNoaXBzLg0KDQoNCioqTW90aXZhdGlvbioqDQoNCi0gVGhlc2UgYXJlIGFtb25nIHRoZSBtb3N0 IGNvbW1vbiDigJxyb2xsLXlvdXItb3du4oCdIGhlbHBlcnMgZm9yIGFycmF5cy9yYW5nZXMgb2Yg bnVtYmVycy4NCi0gVGhleSBhcmUgY29uY2VwdHVhbGx5IHNpbXBsZSwgdW5pdmVyc2FsbHkgdXNl ZnVsIGJleW9uZCB3ZWIvUmFpbHMuDQotIFNpbWlsYXIgdG8gYHN1bWAsIHRoZXnigJlyZSBwcmlt aXRpdmVzIGZvciBxdWljayBkYXRhIGFuYWx5c2lzLCBFVEwgc2NyaXB0cywgQ0xJIHRvb2xpbmcs IGV0Yy4NCi0gSW5jbHVkaW5nIHRoZW0gZW5jb3VyYWdlcyBjb25zaXN0ZW50IHNlbWFudGljcyAo d2hhdCB0byBkbyB3aXRoIGVtcHR5IHNldHMsIG1peGVkIG51bWVyaWNzLCBldGMuKS4NCg0KDQoj IyBQcm9wb3NlZCBBUEkgJiBTZW1hbnRpY3MNCg0KYGBgcnVieQ0KRW51bWVyYWJsZSNhdmVyYWdl IC0+IEZsb2F0IG9yIG5pbA0KRW51bWVyYWJsZSNtZWRpYW4gIC0+IE51bWVyaWMgb3IgbmlsDQpg YGANCg0KYGBgcnVieQ0KWzEsIDIsIDMsIDRdLmF2ZXJhZ2UgICAgICAjID0+IDIuNQ0KKDEuLjQp LmF2ZXJhZ2UgICAgICAgICAgICAjID0+IDIuNQ0KW10uYXZlcmFnZSAgICAgICAgICAgICAgICAj ID0+IG5pbA0KDQpbMSwgMywgMl0ubWVkaWFuICAgICAgICAgICMgPT4gMg0KWzEsIDIsIDMsIDEw XS5tZWRpYW4gICAgICAjID0+IDIuNQ0KKDEuLjYpLm1lZGlhbiAgICAgICAgICAgICAjID0+IDMu NQ0KW10ubWVkaWFuICAgICAgICAgICAgICAgICAjID0+IG5pbA0KYGBgDQoNClJ1YnkgaW1wbGVt ZW50YXRpb24gDQoNCmBgYHJ1YnkNCm1vZHVsZSBFbnVtZXJhYmxlDQogIGRlZiBhdmVyYWdlDQog ICAgY291bnQgPSAwDQogICAgdG90YWwgPSAwLjANCiAgICBlYWNoIGRvIHx4fA0KICAgICAgcmFp c2UgVHlwZUVycm9yLCAibm9uLW51bWVyaWMgdmFsdWUgZm9yIGF2ZXJhZ2UiIHVubGVzcyB4Lmlz X2E/KE51bWVyaWMpDQogICAgICB0b3RhbCArPSB4DQogICAgICBjb3VudCArPSAxDQogICAgZW5k DQogICAgY291bnQuemVybz8gPyBuaWwgOiB0b3RhbCAvIGNvdW50DQogIGVuZA0KDQogIGRlZiBt ZWRpYW4NCiAgICBhcnIgPSB0b19hDQogICAgcmV0dXJuIG5pbCBpZiBhcnIuZW1wdHk/DQogICAg YXJyLmVhY2ggeyB8eHwgcmFpc2UgVHlwZUVycm9yLCAibm9uLW51bWVyaWMgdmFsdWUgZm9yIG1l ZGlhbiIgdW5sZXNzIHguaXNfYT8oTnVtZXJpYykgfQ0KICAgIGFyci5zb3J0IQ0KICAgIG1pZCA9 IGFyci5sZW5ndGggLyAyDQogICAgYXJyLmxlbmd0aC5vZGQ/ID8gYXJyW21pZF0gOiAoYXJyW21p ZCAtIDFdICsgYXJyW21pZF0pIC8gMi4wDQogIGVuZA0KZW5kDQpgYGANCg0KKipVcG9uIGFwcHJv dmFsIEknbSBtb3JlIHRoYW4gd2lsbGluZyB0byBpbXBsZW1lbnQgc3BlYyBhbmQgY29kZSBpbiBD LioqDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBs aXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFu IGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5m byAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1s LnJ1YnktbGFuZy5vcmcvCg==