[ruby-core:122865] [Ruby Feature#21518] Statistical helpers to `Enumerable`
From:
"Amitleshed (Amit Leshed) via ruby-core" <ruby-core@...>
Date:
2025-07-25 19:07:27 UTC
List:
ruby-core #122865
SXNzdWUgIzIxNTE4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgQW1pdGxlc2hlZCAoQW1pdCBMZXNoZWQp Lg0KDQoNCioqKg0KVGhhbmtzIGZvciB0aGUgZW5nYWdlbWVudCBldmVyeW9uZQ0KKioqDQoNCkhl cmUncyBhIHJlZmFjdG9yZWQgdmVyc2lvbjoNCg0KYGBgIHJ1YnkNCm1vZHVsZSBFbnVtZXJhYmxl DQogIGRlZiBhdmVyYWdlDQogICAgcmV0dXJuIG5pbCBpZiBub25lPw0KICAgIHJldHVybiByYW5n ZV9taWRwb2ludCBpZiBudW1lcmljX3JhbmdlPw0KDQogICAgdG90YWwgPSAwLjANCiAgICBjb3Vu dCA9IDANCiAgICBlYWNoIGRvIHx4fA0KICAgICAgcmFpc2UgVHlwZUVycm9yLCAibm9uLW51bWVy aWMgdmFsdWUgZm9yIGF2ZXJhZ2UiIHVubGVzcyB4LmlzX2E/KE51bWVyaWMpDQogICAgICB0b3Rh bCArPSB4DQogICAgICBjb3VudCArPSAxDQogICAgZW5kDQogICAgdG90YWwgLyBjb3VudA0KICBl bmQNCg0KICBkZWYgbWVkaWFuDQogICAgcmV0dXJuIG5pbCBpZiBub25lPw0KICAgIHJldHVybiBy YW5nZV9taWRwb2ludCBpZiBudW1lcmljX3JhbmdlPw0KDQogICAgYXJyID0gZW50cmllcw0KICAg IGFyci5lYWNoIHsgfHh8IHJhaXNlIFR5cGVFcnJvciwgIm5vbi1udW1lcmljIHZhbHVlIGZvciBt ZWRpYW4iIHVubGVzcyB4LmlzX2E/KE51bWVyaWMpIH0NCiAgICBhcnIuc29ydCENCiAgICBtaWQg PSBhcnIubGVuZ3RoIC8gMg0KICAgIGFyci5sZW5ndGgub2RkPyA/IGFyclttaWRdIDogKGFycltt aWQgLSAxXSArIGFyclttaWRdKSAvIDIuMA0KICBlbmQNCg0KICBwcml2YXRlDQoNCiAgZGVmIG51 bWVyaWNfcmFuZ2U/DQogICAgaXNfYT8oUmFuZ2UpICYmIGZpcnN0LmlzX2E/KE51bWVyaWMpICYm IGxhc3QuaXNfYT8oTnVtZXJpYykNCiAgZW5kDQoNCiAgZGVmIHJhbmdlX21pZHBvaW50DQogICAg bWF4ID0gZXhjbHVkZV9lbmQ/ID8gKGxhc3QgLSBzdGVwKSA6IGxhc3QNCiAgICAoZmlyc3QgKyBt YXgpIC8gMi4wDQogIGVuZA0KZW5kDQoNCmBgYA0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxNTE4OiBTdGF0aXN0aWNhbCBoZWxwZXJzIHRv IGBFbnVtZXJhYmxlYA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxNTE4I2No YW5nZS0xMTQxNTcNCg0KKiBBdXRob3I6IEFtaXRsZXNoZWQgKEFtaXQgTGVzaGVkKQ0KKiBTdGF0 dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCioqU3Vt bWFyeSoqDQoNCkknZCBsaWtlIHRvIGFkZCB0d28gc3RhdGlzdGljYWwgaGVscGVycyB0byBgRW51 bWVyYWJsZWA6DQoNCi0gYEVudW1lcmFibGUjYXZlcmFnZWAgKGFyaXRobWV0aWMgbWVhbikNCi0g YEVudW1lcmFibGUjbWVkaWFuYA0KDQpCb3RoIGFyZSBzbWFsbCwgd2VsbC1kZWZpbmVkIG9wZXJh dGlvbnMgdGhhdCBtYW55IFJ1Ynlpc3RzIHJlLWltcGxlbWVudCBpbiBhcHBzIGFuZCBnZW1zLiBQ cm92aWRpbmcgdGhlbSBpbiBjb3JlIGF2b2lkcyByZXBlYXRlZCwgYWQtaG9jIGNvZGUgYW5kIGFs aWducyB3aXRoIGBFbnVtZXJhYmxlI3N1bWAsIHdoaWNoIFJ1YnkgYWxyZWFkeSBzaGlwcy4NCg0K DQoqKk1vdGl2YXRpb24qKg0KDQotIFRoZXNlIGFyZSBhbW9uZyB0aGUgbW9zdCBjb21tb24g4oCc cm9sbC15b3VyLW93buKAnSBoZWxwZXJzIGZvciBhcnJheXMvcmFuZ2VzIG9mIG51bWJlcnMuDQot IFRoZXkgYXJlIGNvbmNlcHR1YWxseSBzaW1wbGUsIHVuaXZlcnNhbGx5IHVzZWZ1bCBiZXlvbmQg d2ViL1JhaWxzLg0KLSBTaW1pbGFyIHRvIGBzdW1gLCB0aGV54oCZcmUgcHJpbWl0aXZlcyBmb3Ig cXVpY2sgZGF0YSBhbmFseXNpcywgRVRMIHNjcmlwdHMsIENMSSB0b29saW5nLCBldGMuDQotIElu Y2x1ZGluZyB0aGVtIGVuY291cmFnZXMgY29uc2lzdGVudCBzZW1hbnRpY3MgKHdoYXQgdG8gZG8g d2l0aCBlbXB0eSBzZXRzLCBtaXhlZCBudW1lcmljcywgZXRjLikuDQoNCg0KIyMgUHJvcG9zZWQg QVBJICYgU2VtYW50aWNzDQoNCmBgYHJ1YnkNCkVudW1lcmFibGUjYXZlcmFnZSAtPiBGbG9hdCBv ciBuaWwNCkVudW1lcmFibGUjbWVkaWFuICAtPiBOdW1lcmljIG9yIG5pbA0KYGBgDQoNCmBgYHJ1 YnkNClsxLCAyLCAzLCA0XS5hdmVyYWdlICAgICAgIyA9PiAyLjUNCigxLi40KS5hdmVyYWdlICAg ICAgICAgICAgIyA9PiAyLjUNCltdLmF2ZXJhZ2UgICAgICAgICAgICAgICAgIyA9PiBuaWwNCg0K WzEsIDMsIDJdLm1lZGlhbiAgICAgICAgICAjID0+IDINClsxLCAyLCAzLCAxMF0ubWVkaWFuICAg ICAgIyA9PiAyLjUNCigxLi42KS5tZWRpYW4gICAgICAgICAgICAgIyA9PiAzLjUNCltdLm1lZGlh biAgICAgICAgICAgICAgICAgIyA9PiBuaWwNCmBgYA0KDQpSdWJ5IGltcGxlbWVudGF0aW9uIA0K DQpgYGBydWJ5DQptb2R1bGUgRW51bWVyYWJsZQ0KICBkZWYgYXZlcmFnZQ0KICAgIGNvdW50ID0g MA0KICAgIHRvdGFsID0gMC4wDQogICAgZWFjaCBkbyB8eHwNCiAgICAgIHJhaXNlIFR5cGVFcnJv ciwgIm5vbi1udW1lcmljIHZhbHVlIGZvciBhdmVyYWdlIiB1bmxlc3MgeC5pc19hPyhOdW1lcmlj KQ0KICAgICAgdG90YWwgKz0geA0KICAgICAgY291bnQgKz0gMQ0KICAgIGVuZA0KICAgIGNvdW50 Lnplcm8/ID8gbmlsIDogdG90YWwgLyBjb3VudA0KICBlbmQNCg0KICBkZWYgbWVkaWFuDQogICAg YXJyID0gdG9fYQ0KICAgIHJldHVybiBuaWwgaWYgYXJyLmVtcHR5Pw0KICAgIGFyci5lYWNoIHsg fHh8IHJhaXNlIFR5cGVFcnJvciwgIm5vbi1udW1lcmljIHZhbHVlIGZvciBtZWRpYW4iIHVubGVz cyB4LmlzX2E/KE51bWVyaWMpIH0NCiAgICBhcnIuc29ydCENCiAgICBtaWQgPSBhcnIubGVuZ3Ro IC8gMg0KICAgIGFyci5sZW5ndGgub2RkPyA/IGFyclttaWRdIDogKGFyclttaWQgLSAxXSArIGFy clttaWRdKSAvIDIuMA0KICBlbmQNCmVuZA0KYGBgDQoNCioqVXBvbiBhcHByb3ZhbCBJJ20gbW9y ZSB0aGFuIHdpbGxpbmcgdG8gaW1wbGVtZW50IHNwZWMgYW5kIGNvZGUgaW4gQy4qKg0KDQoNCg0K DQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5 LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBy dWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6 Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcu b3JnLwo=