[ruby-core:108346] [Ruby master Feature#18685] Enumerator.product: Cartesian product of enumerables
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2022-04-21 10:37:51 UTC
List:
ruby-core #108346
SXNzdWUgIzE4Njg1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpNeSBwZXJmb3JtYW5jZSBjb25jZXJuIHdhcyBub3QgYWJvdXQgUnVieSB2cyBDLCB3cml0 aW5nIGluIEMgd291bGQgaGF2ZSB0aGUgc2FtZSBpc3N1ZXMuDQoNCldoYXQgSSdtIHNheWluZyBp cyB0aGlzOg0KYGBgcnVieQ0KKDEuLjMpLmVhY2ggZG8gfGl8DQogIFsiQSIsICJCIl0uZWFjaCBk byB8Y3wNCiAgICBwdXRzICIje2l9LSN7Y30iDQogIGVuZA0KZW5kDQpgYGANCndpbGwgYWx3YXlz IGJlIGZhc3RlciB0aGFuOg0KYGBgcnVieQ0KRW51bWVyYXRvci5wcm9kdWN0KDEuLjMsIFsiQSIs ICJCIl0pLmVhY2ggZG8gfGksIGN8DQogIHB1dHMgIiN7aX0tI3tjfSINCmVuZA0KYGBgDQpiZWNh dXNlIHRoZSAgc2Vjb25kIGhhcyBhIGdlbmVyaWMvY2Fubm90LWRvLXNlbnNpYmxlLWlubGluZS1j YWNoZSBsb29wIGFuZCBsb3RzIG9mIGFycmF5IGFsbG9jYXRpb24gYW5kIHNwbGF0dGluZy4NCg0K U28gRW51bWVyYXRvci5wcm9kdWN0IG1ha2VzIHNlbnNlIHdoZW4gb25lIGRvZXNuJ3Qga25vdyBo b3cgbWFueSBgZW51bXNgIHRvIGNvbWJpbmUsIG9yIGEgbGFyZ2UgbnVtYmVyIG9mIHRoZW0sIGJ1 dCBmb3IgMi0zIGl0J3MgYmV0dGVyIHBlcmZvcm1hbmNlLXdpc2UgKGFuZCBtYXliZSBhbHNvIGZv ciBjbGFyaXR5KSB0byBqdXN0IHVzZSBuZXN0ZWQgYGVhY2hgLg0KDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxODY4NTogRW51bWVyYXRvci5wcm9k dWN0OiBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiBlbnVtZXJhYmxlcw0KaHR0cHM6Ly9idWdzLnJ1Ynkt bGFuZy5vcmcvaXNzdWVzLzE4Njg1I2NoYW5nZS05NzM3MQ0KDQoqIEF1dGhvcjoga251IChBa2lu b3JpIE1VU0hBKQ0KKiBTdGF0dXM6IE9wZW4NCiogUHJpb3JpdHk6IE5vcm1hbA0KKiBUYXJnZXQg dmVyc2lvbjogMy4yDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJ J2QgbGlrZSB0byBhZGQgYSBuZXcgRW51bWVyYXRvciBjbGFzcyBtZXRob2QgZm9yIGdlbmVyYXRp bmcgdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIGdpdmVuIGVudW1lcmF0b3JzLg0KQSBwcm9kdWN0 IGhlcmUgZG9lcyBub3QgbWVhbiBhbiBhY2N1bXVsYXRlZCBhcnJheSBvZiBhcnJheXMsIGJ1dCBh biBlbnVtZXJhdG9yIHRvIGVudW1lcmF0ZSBhbGwgY29tYmluYXRpb25zLg0KDQpgYGBydWJ5DQpw cm9kdWN0ID0gRW51bWVyYXRvci5wcm9kdWN0KDEuLjMsIFsiQSIsICJCIl0pDQpwIHByb2R1Y3Qu Y2xhc3MgIz0+IEVudW1lcmF0b3INCg0KcHJvZHVjdC5lYWNoIGRvIHxpLCBjfA0KICBwdXRzICIj e2l9LSN7Y30iDQplbmQNCg0KPWJlZ2luIG91dHB1dA0KMS1BDQoxLUINCjItQQ0KMi1CDQozLUEN CjMtQg0KPWVuZA0KYGBgDQoNClRoaXMgY2FuIGJlIHVzZWQgdG8gcmVkdWNlIG5lc3RlZCBibG9j a3MgYW5kIGFsbG93cyBmb3IgaXRlcmF0aW5nIG92ZXIgYW4gaW5kZWZpbml0ZSBudW1iZXIgb2Yg ZW51bWVyYWJsZSBvYmplY3RzLg0KDQojIyBJbXBsZW1lbnRhdGlvbiBub3Rlcw0KDQotIEl0IHNo b3VsZCBpbnRlcm5hbGx5IHVzZSBgZWFjaF9lbnRyeWAgaW5zdGVhZCBvZiBgZWFjaGAgb24gZW51 bWVyYWJsZSBvYmplY3RzIHRvIG1ha2Ugc3VyZSB0byBjYXB0dXJlIGFsbCB5aWVsZGVkIGFyZ3Vt ZW50cy4NCi0gSWYgbm8gZW51bWVyYWJsZSBvYmplY3QgaXMgZ2l2ZW4sIHRoZSBibG9jayBpcyBj YWxsZWQgb25jZSB3aXRoIG5vIGFyZ3VtZW50Lg0KLSBJdCBzaG91bGQgcmVqZWN0IGEga2V5d29y ZC1zdHlsZSBoYXNoIGFyZ3VtZW50IHNvIHdlIGNhbiBhZGQga2V5d29yZCBhcmd1bWVudHMgaW4g dGhlIGZ1dHVyZSB3aXRob3V0IGJyZWFraW5nIGV4aXN0aW5nIGNvZGUuDQotIEhlcmUncyBhbiBl eGFtcGxlIGltcGxlbWVudGF0aW9uOg0KDQogIGBgYHJ1YnkNCiAgIyBjYWxsLXNlcToNCiAgIyAg IEVudW1lcmF0b3IucHJvZHVjdCgqZW51bXMpICAgICAgICAgICAgICAgICAgIC0+IGVudW0NCiAg IyAgIEVudW1lcmF0b3IucHJvZHVjdCgqZW51bXMpIHsgfCphcmdzfCBibG9jayB9IC0+IHJldHVy biB2YWx1ZSBvZiBhcmdzWzBdLmVhY2hfZW50cnkge30NCiAgZGVmIEVudW1lcmF0b3IucHJvZHVj dCgqZW51bXMsICoqbmlsLCAmYmxvY2spDQogICAjIFRPRE86IHNpemUgc2hvdWxkIGJlIGNhbGN1 bGF0ZWQgaWYgcG9zc2libGUNCiAgICByZXR1cm4gdG9fZW51bShfX21ldGhvZF9fLCAqZW51bXMp IGlmIGJsb2NrLm5pbD8NCg0KICAgIGVudW1zLnJldmVyc2UucmVkdWNlKGJsb2NrKSB7IHxpbm5l ciwgZW51bXwNCiAgICAgIC0+KCp2YWx1ZXMpIHsNCiAgICAgICAgZW51bS5lYWNoX2VudHJ5IHsg fHZhbHVlfA0KICAgICAgICAgIGlubmVyLmNhbGwoKnZhbHVlcywgdmFsdWUpDQogICAgICAgIH0N CiAgICAgIH0NCiAgICB9LmNhbGwoKQ0KICBlbmQNCiAgYGBgDQoNCi0gTm90IHRvIGJlIGNvbmZ1 c2VkIHdpdGggYEVudW1lcmF0b3IucHJvZHVjZWAuIPCfmJ0NCg0KIyMgUHJpb3IgY2FzZQ0KLSBQ eXRob246IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9pdGVydG9vbHMuaHRtbCNp dGVydG9vbHMucHJvZHVjdA0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/ c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4v bWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K