Feature #2673: the length for an enumerator generated by
Array#permutation and Array#combination
http://redmine.ruby-lang.org/issues/show/2673
e$B5/I<<Te(B: Kenta M.
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe (B: Normal
e$B%+%F%4%je(B: core, Target version: 1.9.2
Array#permutation e$B$He(B Array#combination e$B$,@8 @.$9$ke(B enumerator
e$B$OMWAG?t$,3NDj$G$-$^$9$,!"e(B
Enumerator#length e$B$,B8:_$7$J$$$?$a!"e(Bto_a
e$B$GG[Ns2=$7$J$1$l$PD9$5$r<hF@$G$-$^$;$s!#e (B
e$B$3$N7gE@$r2r>C$9$k$?$a!"e(BArray#permutation e$B$He(B
Array#combination e$B$,@8 @.$9$ke(B enumerator e$B$KBP$7$Fe(B
length e$B%a%=%C%I$rFC0[%a%=%C%I$H$7$FDI2C$9$k%Q%C%A$r=q$-$^$7$?!#e (B
e$B:9$7;Y$($J$$$h$&$G$7$?$ie(B trunk
e$B$X$N<h$j9~$_$r8!F$$7D:$1$^$;$s$G$7$g$&$+!#e (B
e$B$h$m$7$/$*4j$$$7$^$9!#e (B
むらãŸã§ã™ã€‚
permutation size ã®è¨ˆç®—å¼ã‚’é–“é•ãˆã¦ã¾ã—ãŸã€‚
ä¿®æ£ã—ãŸãƒ‘ッãƒã‚’å†åº¦æ·»ä»˜ã—ã¾ã™ã€‚
On 2010/01/28, at 11:59, Kenta M. wrote:
ã“ã®æ¬ 点を解消ã™ã‚‹ãŸã‚ã€Array#permutation 㨠Array#combination ãŒç”Ÿæˆã™ã‚‹ enumerator ã«å¯¾ã—ã¦
length メソッドを特異メソッドã¨ã—ã¦è¿½åŠ ã™ã‚‹ãƒ‘ッãƒã‚’書ãã¾ã—ãŸã€‚
å·®ã—æ”¯ãˆãªã„よã†ã§ã—ãŸã‚‰ trunk ã¸ã®å–り込ã¿ã‚’検討ã—é ‚ã‘ã¾ã›ã‚“ã§ã—ょã†ã‹ã€‚
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
http://redmine.ruby-lang.org
–
Kenta M.
OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC
本を書ãã¾ã—ãŸ!!
『Ruby 逆引ãレシピ〠http://www.amazon.co.jp/dp/4798119881/mrkn-22
E-mail: [email protected]
twitter: http://twitter.com/mrkn/
blog: ドレッシングのような
e$B%A%1%C%He(B #2673 e$B$,99?7$5$l$^$7$?!#e (B (by _ wanabe)
e$B%U%!%$%ke(B enum_len.patch e$BDI2Ce(B
Enumerator#length
e$B$O!"0lHL$KDj5A$5$l$F$$$?J}$,$J$K$+$HJXMx$J5$$,$7$^$9!#e (B
e$B$^$?!“F1$8%/%i%9$N%*%V%8%'%/%H$,e(B NoMethodError
e$B$r5/$3$7$?$j5/$3$5$J$+$C$?$j$9$k$N$Oe(B
e$B>/$7J,$+$j$K$/$$$N$G!”$J$k$Y$/$J$iHr$1$?J}$,$$$$$h$&$K;W$$$^$9!#e (B
e$BD9$5$,Dj5A$G$-$J$$$b$N$K$D$$$F$O!"e(BRuntimeError e$B$K$9$k$+e(B nil
e$B$rJV$9$N$O$I$&$G$7$g$&$+!#e (B
e$B$H$j$“$($:e(B nil e$B$rJV$9$h$&$K$7$F!”$D$$$G$@$C$?$N$GNc$H$7$Fe(B
Array#each e$B$K$D$$$F$be(B
e$BD9$5$rJV$9$h$&$K$7$?%Q%C%A$r=q$-$^$7$?!#e (B
enumerator_length()
e$B$r9)IW$9$l$PB>$K$b1~MQ$G$-$k$h$&$K$7$^$7$?!J$H$$$&$D$b$j$G$9!K!#e (B
http://redmine.ruby-lang.org/issues/show/2673
e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B
In message “Re: [ruby-dev:40636] [Feature #2673 ] the length for an
enumerator generated by Array#permutation and Array#combination”
on Sun, 14 Mar 2010 16:17:27 +0900, Kenta M.
[email protected] writes:
|e$B3N$+$K!“e(BEnumerator#length e$B$,0lHL$KDj5A$5$l$F$$$k$[$&$,JXMx$@$H!”;d$b;W$$$^$9!#e (B
|wanabe e$B$5$s$N0F$K0lI<!#e (B
e$B$J$k$[$I!#$=$N>l9g!"e(Bnile$B$rJV$9$N$H!“e(BRuntimeErrore$B$rH/@8$5$;$k$Ne(B
e$B$G$I$A$i$,NI$$$H;W$$$^$9$+!)e(B
e$B$I$A$i$K$b$=$l$J$j$KMxE@$O$”$k$He(B
e$B;W$$$^$9$,!#A0<T$O7Z$$$H$+!"8e<T$O%(%i!<$,L@<($5$l$k$H$+!#e (B
fail earlye$B$N86B’$+$i$ONc30$NJ}$,NI$$$N$+$J!#e (B
e$B%A%1%C%He(B #2673 e$B$,99?7$5$l$^$7$?!#e (B (by Kenta M.)
e$B3N$+$K!“e(BEnumerator#length
e$B$,0lHL$KDj5A$5$l$F$$$k$[$&$,JXMx$@$H!”;d$b;W$$$^$9!#e (B
wanabe e$B$5$s$N0F$K0lI<!#e (B
http://redmine.ruby-lang.org/issues/show/2673
e$B1sF#$G$9!#e (B
2010e$BG/e(B3e$B7ne(B14e$BF|e(B13:05 _ wanabe [email protected] :
Enumerator#length e$B$O!"0lHL$KDj5A$5$l$F$$$?J}$,$J$K$+$HJXMx$J5$$,$7$^$9!#e (B
e$B$^$?!“F1$8%/%i%9$N%*%V%8%'%/%H$,e(B NoMethodError e$B$r5/$3$7$?$j5/$3$5$J$+$C$?$j$9$k$N$Oe(B
e$B>/$7J,$+$j$K$/$$$N$G!”$J$k$Y$/$J$iHr$1$?J}$,$$$$$h$&$K;W$$$^$9!#e (B
e$BD9$5$,Dj5A$G$-$J$$$b$N$K$D$$$F$O!"e(BRuntimeError e$B$K$9$k$+e(B nil e$B$rJV$9$N$O$I$&$G$7$g$&$+!#e (B
e$B$H$j$“$($:e(B nil e$B$rJV$9$h$&$K$7$F!”$D$$$G$@$C$?$N$GNc$H$7$Fe(B Array#each e$B$K$D$$$F$be(B
e$BD9$5$rJV$9$h$&$K$7$?%Q%C%A$r=q$-$^$7$?!#e (B
enumerator_length() e$B$r9)IW$9$l$PB>$K$b1~MQ$G$-$k$h$&$K$7$^$7$?!J$H$$$&$D$b$j$G$9!K!#e (B
length e$B$,e(B Enumerator
e$B@8@.;~$K3NDj$G$-$k>l9g$O$I$N$/$i$$$"$k$s$G$7$g$&!#e (B
Array#each e$B$G$b!"85G[Ns$,=q$-49$($i$l$?>l9g$r9M$($k$H:$$j$^$9!#e (B
a = [1, 2, 3]
e = a.each
p e.length #=> 3
a << 4
p e.length #=> 4
wanabe e$B$5$s$N%Q%C%A$G$Oe(B length
e$B$H$7$FG[Ns$r$b$?$;$i$l$k$h$&$K$7$F>e5-$Ne(B
e$B%3!<%I$KBP1~$7$F$$$k$h$&$G$9$,!"e(Bpermutation/combination
e$B$K$OBP1~$G$-$J$$e(B
e$B$G$9$h$M!#e (B
a = [1, 2, 3]
e = a.permutation
p e.length #=> 6
a << 4
p e.length #=> 6
p e.to_a.length #=> 24
e$B$3$l$KBP1~$9$k$?$a$K$O!"e(Blength e$B$H$7$Fe(B Proc
e$B$+4X?t%]%$%s%?$rJ];}$;$6$k$re(B
e$BF@$J$/$J$C$FIT9,$G$9!#e (B
e$B$d$k$H$7$?$i!"e(Blength e$B$O!Ve(BEnumerator
e$B@8@.;~$G$ND9$5$rJV$9!W$HB7$($k$N$,e(B
e$B$$$$$N$G$O$J$$$G$7$g$&$+!#e (B
Kenta M. ã•ã‚“ã¯æ›¸ãã¾ã—ãŸ:
ã‚„ã‚‹ã¨ã—ãŸã‚‰ã€length ã¯ã€ŒEnumerator ç”Ÿæˆæ™‚ã§ã®é•·ã•ã‚’è¿”ã™ã€ã¨æƒãˆã‚‹ã®ãŒ
ã„ã„ã®ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚
良ã„ã¨æ€ã„ã¾ã™ã€‚
ã„ã‚„ã€ã©ã†ãªã‚“ã§ã—ょã†ããˆã€‚ãŠãŠã‚‚ã¨ã®å‰ææ¡ä»¶ã§ã‚ã‚‹
Array#permutation 㨠Array#combination ãŒç”Ÿæˆã™ã‚‹ enumerator
ã¯è¦ç´ æ•°ãŒç¢ºå®šã§ãã¾ã™ãŒã€
ã«ç–‘å•ãŒæŠ•ã’ã‹ã‘られã¦ã„ã‚‹ã®ã ã¨æ€ã„ã¾ã—ãŸãŒã€‚ãã—ã¦to_aã™ã‚Œã°è¦ç´ æ•°ã®å¤‰åŒ–ã«ã¯
(Arrayã®ã‚³ãƒ³ãƒ†ã‚¯ã‚¹ãƒˆã§)対応ã§ãã‚‹ã‚ã‘ã ã‹ã‚‰ã€ã€ŒlengthãŒçŸ¥ã‚ŠãŸã‘れã°Arrayã«ã›
よã€ã¨ã„ã†ã®ã¯ãれãªã‚Šã«å¦¥å½“ãªæŒ‡é‡ãªã‚ˆã†ã«ã‚‚æ€ã†ã®ã§ã™ã‘ã©ã‚‚。
e$B$`$i$?$G$9!#e (B
On 2010/03/22, at 12:42, Yusuke ENDOH wrote:
length e$B$,e(B Enumerator e$B@8@.;~$K3NDj$G$-$k>l9g$O$I$N$/$i$$$"$k$s$G$7$g$&!#e (B
Array#each e$B$G$b!"85G[Ns$,=q$-49$($i$l$?>l9g$r9M$($k$H:$$j$^$9!#e (B
snip
e$B$d$k$H$7$?$i!"e(Blength e$B$O!Ve(BEnumerator e$B@8@.;~$G$ND9$5$rJV$9!W$HB7$($k$N$,e(B
e$B$$$$$N$G$O$J$$$G$7$g$&$+!#e (B
e$BNI$$$H;W$$$^$9!#e (B
–
Kenta M.
OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC
e$BK$r=q$-$^$7$?e(B!!
e$B!Xe(BRuby e$B5U0z$-%l%7%T!Ye(B
Amazonで島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威のRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)。アマゾンならポイント還元本が多数。島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威作品ほか、お急ぎ便対象商品は当日お届けも可能。またRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)もアマゾン配送商品なら通常配送無料。
E-mail: [email protected]
twitter: http://twitter.com/mrkn/
blog: ドレッシングのような
e$B1sF#$G$9!#e (B
2010e$BG/e(B3e$B7ne(B23e$BF|e(B11:28 Urabe S.
[email protected] :
Kenta M. e$B$5$s$O=q$-$^$7$?e(B:
e$B$d$k$H$7$?$i!"e(Blength e$B$O!Ve(BEnumerator e$B@8@.;~$G$ND9$5$rJV$9!W$HB7$($k$N$,e(B
e$B$$$$$N$G$O$J$$$G$7$g$&$+!#e (B
e$BNI$$$H;W$$$^$9!#e (B
e$B$$$d$"!"5$J,$ONI$/$J$$$G$9$h$M!#<+J,$G8@$C$H$$$F!#e (B
e$B$$ $b$H$NA0Ds>r7o$G$"$ke(B
Array#permutation e$B$He(B Array#combination e$B$,@8 @.$9$ke(B enumerator
e$B$OMWAG?t$,3NDj$G$-$^$9$,!"e(B
e$B$K5?Ld$,Ej$2$+$1$i$l$F$$$k$N$@$H;W$$$^$7$?$,!#e (B
e$B$=$&$$$&0U?^$O$J$+$C$?$N$G$9$,!"8@$o$l$F$_$l$P$=$s$J5$$,$7$^$9!#e (B
e$B$=$7$Fe(Bto_ae$B$9$l$PMWAG?t$NJQ2=$K$Oe(B
(Arraye$B$N%3%s%F%/%9%H$Ge(B)e$BBP1~$G$-$k$o$1$@$+$i!"!Ve(Blengthe$B$,CN$j$?$1$l$Pe(BArraye$B$K$;e(B
e$B$h!W$H$$$&$N$O$=$l$J$j$KBEEv$J;X?K$J$h$&$K$b;W$&$N$G$9$1$I$b!#e (B
e$B$3$N;X?K$OeITJX$9$.$k$N$G!“D9$5$rA0$b$C$FCN$kJ}K!$,$”$l$Pe(B
e$B$$$$$J$“$H$O;W$$$^$9!#$7$+$7$=$N$?$a$K<j4V$,$+$+$k$N$G$”$l$P!“e(B
e$B<{MW$H$N%H%l!<%I%*%U$G$9$+$M!#e (B
e$B!VD9$5$rA0$b$C$FCN$j$?$$!W$H$$$&<{MW$O$I$N$/$i$$$”$k$s$G$7$g$&!#e (B
Array e$B$,e(B frozen e$B$N;~$@$1e(B length
e$B$,$o$+$k!“$H$+$I$&$+$J$”!#e (B
e$B$[$H$s$I1#$75!G=$K$J$C$A$c$&$+!#e (B
e$B%A%1%C%He(B #2673 e$B$,99?7$5$l$^$7$?!#e (B (by _ wanabe)
e$B%o%J%Y$G$9!#e (B
e$B$&$C$+$j$3$s$J;~4|$K$J$C$F$7$^$$$^$7$?$,!J$9$_$^$;$s!K!“$3$N7o$I$&$7$^$7$g$&!#e (B
e$BL$7hDj$N;v9`$,Fs$D$b$”$k$N$G!"$I$&$7$F$be(B 1.9.2
e$B$KF3F~$7$?$$$H$$$&J}$+$i$Ne(B
e$BHs>o$K6/NO$J@bF@$G$b$J$$8B$j!“e(B1.9.2
e$B$G$O8+Aw$j$K$J$C$F$7$^$$$=$&$G$9$,e(B
e$B$I$J$?$+$40U8+$”$j$^$;$s$G$7$g$&$+!#e (B
e$B8D?ME*$K$O!“$I$&$7$F$be(B 1.9.2 e$B$K!”$H$^$G$O;W$$$^$;$s$N$Ge(B
e$B8+Aw$i$l$k$J$i$=$l$G$b$h$$$N$G$9$,!":$$k?M$O$$$J$$$N$+$,5$$K$J$j$^$7$?!#e (B
http://redmine.ruby-lang.org/issues/show/2673
e$B%A%1%C%He(B #2673 e$B$,99?7$5$l$^$7$?!#e (B (by Marc-Andre L.)
I just noticed this feature request.
Sadly, google translate is terrible for Japanese.
I wanted to propose that Enumerator had a #length /#size method that
would return nil or the size of the enumeration, when known. My
(unfinished) proposal was to allow a block though, so that the result
would always be valid, even if the source object was modified.
Object#to_enum would accept a block and use that to calculate the
length.
I would really appreciate if someone was kind enough to summarize the
state of this request for the use of those of us not blessed with
Japanese reading skills!
http://redmine.ruby-lang.org/issues/show/2673
Hi,
In message “Re: [ruby-dev:40882] [Feature #2673 ] the length for an
enumerator generated by Array#permutation and Array#combination”
on Thu, 1 Apr 2010 00:11:02 +0900, Marc-Andre L.
[email protected] writes:
|I wanted to propose that Enumerator had a #length /#size method that would return nil or the size of the enumeration, when known. My (unfinished) proposal was to allow a block though, so that the result would always be valid, even if the source object was modified. Object#to_enum would accept a block and use that to calculate the length.
This propose has been suspended for 1.9.2 since the resule may not be
trustworthy considering the source modification after generating
enumerator. I am not sure passing block is a good idea or not, yet.
It’s not intuitive for me at the first glance.
matz.
Hi,
On Wed, Mar 31, 2010 at 11:22 AM, Yukihiro M.
[email protected] wrote:
This propose has been suspended for 1.9.2 since the resule may not be
trustworthy considering the source modification after generating
enumerator. I am not sure passing block is a good idea or not, yet.
It’s not intuitive for me at the first glance.
Thanks for the reply.
Just another word in favor of a block: for some enumerators,
calculating the overall size might non trivial (even though less
costly then doing the actual enumeration).
For this reason, I feel that there should not be a performance penalty
when creating an Enumerator because the length need to be
precalculated, even though very well might not be used. That’s in
addition to the fact that it might be wrong, if the source was
modified in the meantime.
This is why I feel that lazily calculating the length, whenever
needed, is the best way to go, both for reasons of efficiency and
correctness.
I regret not having posted my ideas before, but hopefully we’ll get
Enumerator#length in 1.9.3…
e$B$`$i$?$G$9!#e (B
On 2010/03/31, at 2:15, _ wanabe wrote:
e$B%o%J%Y$G$9!#e (B
e$B$&$C$+$j$3$s$J;~4|$K$J$C$F$7$^$$$^$7$?$,!J$9$_$^$;$s!K!“$3$N7o$I$&$7$^$7$g$&!#e (B
e$BL$7hDj$N;v9`$,Fs$D$b$”$k$N$G!"$I$&$7$F$be(B 1.9.2 e$B$KF3F~$7$?$$$H$$$&J}$+$i$Ne(B
e$BHs>o$K6/NO$J@bF@$G$b$J$$8B$j!“e(B1.9.2 e$B$G$O8+Aw$j$K$J$C$F$7$^$$$=$&$G$9$,e(B
e$B$I$J$?$+$40U8+$”$j$^$;$s$G$7$g$&$+!#e (B
e$B8D?ME*$K$O!“$I$&$7$F$be(B 1.9.2 e$B$K!”$H$^$G$O;W$$$^$;$s$N$Ge(B
e$B8+Aw$i$l$k$J$i$=$l$G$b$h$$$N$G$9$,!":$$k?M$O$$$J$$$N$+$,5$$K$J$j$^$7$?!#e (B
e$B;d$bEv;v<T$N0l?M$G$O$"$j$^$9$,!"e(B1.9.3 or later
e$B$G<h$jF~$l$k;v$rL\I8$K!"e(B
e$BNI$$@_7W$rDI5a$7$?$[$&$,NI$$$H;W$C$F$$$^$9!#e (B
–
Kenta M.
OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC
e$BK$r=q$-$^$7$?e(B!!
e$B!Xe(BRuby e$B5U0z$-%l%7%T!Ye(B
Amazonで島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威のRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)。アマゾンならポイント還元本が多数。島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威作品ほか、お急ぎ便対象商品は当日お届けも可能。またRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)もアマゾン配送商品なら通常配送無料。
E-mail: [email protected]
twitter: http://twitter.com/mrkn/
blog: ドレッシングのような