ÀµÌڤǤ¹¡£ ¸¶ ¿®°ìϺÍÍ¡¢¸æ¶µ¼¨ÍÆñ¤¦¤´¤¶¤¤¤Þ¤¹¡£ "Ruby ¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç" ¤Ïʬ¤«¤ê¤ä¤¹¤¯¤Æ¡¢°¦ÆÉ¤·¤Æ¤¤¤Þ¤¹¡£ ¤¿¤À DelayedList ¤Î½ê¤ÏÍý²ò¤¹¤ë¤Î¤Ë¶ìÏ«¤·¤Þ¤·¤¿¡£ (¤Û¤«¤Ë¤ÏÌäÂê¤Î instance_eval) ML¤â½é¿´¼Ô¤Ç¤Ê¤«¤Ê¤«¿¿°Õ¤ÎÅÁ¤ï¤ë½ñ¤Êý¤¬¤Ç¤¤Þ¤»¤ó¤¬,¸í²ò¤µ¤ì¤Ê¤¤ÍÍ¤Ë ¤Ç¤¤ë¤À¤±Ãí°Õ¤·¤Æ½ñ¤¯¤³¤È¤Ë¤·¤Þ¤¹¡£ In mail "[ruby-list:28342] Re: argument to instance_eval block" "Shin-ichiro HARA" <sinara / blade.nagaokaut.ac.jp> wrote |class Sequence | | include Enumerable | | def initialize( list, &block ) | @list = list | @proc = block | end ..... |Prime = Sequence.new([2,3]){|seq, n| | m = seq[n - 1] + 2 | m += 2 while seq.find{|k| | break if k * k > m | m % k == 0 | } | m |} |Prime.each do |x| | p x | break if x > 100 |end ¤³¤ì¤Ï»ä¤Î script ¤Ç $mod=2 ¤È¤·¤¿¤â¤Î¤ÈËܼÁŪ¤Ë¤ÏƱ¤¸¤â¤Î¤À¤È ¥£¥Ä¡¢¥§¡¢ä¦¡¢¡¢¡«¡¢¥±¡¢¥ã¡£¡Ö break ¹Ô¤Î 100 ¤ò m ¤ËÊѤ¨¤ë¤È°Õ¿ÞÄ̤ê¤Ë¤Ïư¤¤Þ¤»¤ó¡£ ¤³¤ì¤ÏÃ×̿Ū¤Ê·ç´Ù¤À¤È»×¤Ã¤ÆºÎÍѤ·¤Ê¤«¤Ã¤¿¤ï¤±¤Ç¤¹¡£ Prime ¤ÎÄêµÁ¤Î¤Ê¤«¤Ç¤Î m ¤ÏËÜÍè dummy(¾¤ÎÊÑ¿ô̾¤È¤Ö¤Ä¤«¤é¤Ê¤±ì¤ ²¿¤ò»È¤Ã¤Æ¤â¤¤¤¤)ÊÑ¿ô¤ÎȦ¤Ê¤Î¤Ë¡¢¤³¤Î¾ì¹ç¤Ï¤³¤Î block ¤¬ mai n ¤Î context ¤Çɾ²Á¤µ¤ì¤ë¤¿¤á dummy ¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ ¤³¤¦¤¤¤¦¾ì¹ç¤Ï¾¤Ç¤ÏÀäÂФ˻Ȥï¤Ê¤¤¤è¤¦¤ÊÊÑ¿ô̾¤ò»È¤¤¤Ê¤µ¤¤¤È¤¤¤¦ ²ò·èºö¤Ï¡¢Programming ¤Î´ðËܤËÈ¿¤¹¤ë(dummy ¤Ï dummy ¤Ç¤¢ë¤Ù¤¤À¤ ¤¤¤¦°ÕÌ£¤Ç)¤È»×¤¦¤Î¤Ç¼õ¤±Æþ¤ì¤é¤ì¤Þ¤»¤ó¡£ Âè2°ú¿ô¤ÎɬÍ×À¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¾å¤Î script ¤Ë ¼¡¤Î¤è¤¦¤Ê ¥£¥Ä ¥å¥å¥å¥å ãìáóÓåñõåîãå ä媨ù© ø½óåìæ Óåñõåîãå®îå÷¨ÛÝ©ûüóåñ¬îü øÛîݪùÛîÝý êðêð¥å¥å¥å¥å íåôèïä ¤òÄɲä·¤Æ p (Prime*Power[2])[m] ¤È¤ä¤ì¤ÐÅöÁ³ error ¤Ë¤Ê¤ê¤Þ¤¹¡£ ̵¸Â¿ôÎó¤äµé¿ô¤Ë»È¤¦¤Î¤¬¼ç¤ÊÌÜŪ¤Ê¤Î¤Ç¤³¤ì¤¬½ÐÍè¤Ê¤¤¤È»È¤¤Êª¤Ë¤Ê¤ê¤Þ ¤»¤ó¡£(Cauchy Îó¤Þ¤¿¤Ïµé¿ô¤È¤·¤Æ¼Â¿ô¤½¤Î¤â¤Î¤òɽ¤¹ Real class ò¹Í¤ ¤Æ¤¤¤Þ¤¹¤¬¼Â¹Ô®ÅÙ¤ËÌäÂ꤬¤¢¤ê¼ÂÍÑŪ¤Ê¤â¤Î¤Ï̤¤À½ÐÍè¤Þ¤»¤ó¡£) °Ê¾å¤Î¤è¤¦¤Ê¤³¤È¤Ï´ÖÀÜŪ¤Ë¤Ç¤¹¤¬¤Á¤ã¤ó¤È½ñ¤¤¤¿¤Ä¤â¤ê¤Ç¤¤¤¿¤ó¤Ç¤¹¤¬¡¢ ½ñ¤Êý¤¬°¤«¤Ã¤¿¤ÈÈ¿¾Ê¤·¤Æ¤¤¤Þ¤¹¡£¤¹¤ß¤Þ¤»¤ó¤Ç¤·¤¿¡£ instance_eval ¤Ï½é¿´¼Ô¤¬»È¤¦¤È ´í¸±¤Ê¤è¤¦¤Ê¤Î¤Ç»È¤ï¤Ê¤¤¤³¤È¤Ë¤·¤Þ¤¹¡£ ¤³¤ÎÏÃ¤Ï block ¤Ï block ¤ÇÅϤ¹¤Î¤¬¼«Á³¤À¤È»×¤Ã¤Æ¡¢¤½¤ÎÊýË¡¤ò¤¤¤Æ¤ß¤ ¤À¤±¤Ç¡¢ÆÃ¤Ëº¤¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç(¤¹¤Ã¤¤ê¤Ï¤·¤Ê¤¤¤Ç¤¹¤¬)ä¤È¤·¤ ¤Ï¤³¤ÎÊդǽª¤ê¤Ë¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£ ¤³¤ì¤ÏÊØÍø¤À¤È»×¤Ã¤Æ¤¯¤ì¤¿¿Í¤¬°ì¿Í¤â¤¤¤Ê¤«¤Ã¤¿¤Î¤¬¤Á¤ç¤Ã¤È»Äǰ¤À¤Ã¤¿ ¤Î¤Ç¡¢ºÇ¸å¤Ë»ÈÍÑÎã¤ò¾¯¤·¤À¤±: ¦£´Ø¿ô¤ä¥¼¡¼¥¿´Ø¿ô¤ò·×»»¤¹¤ë¤È¤¤Ë Bernoulli ¿ô¤¬É¬Íפˤʤê¤Þ¤¹¤¬¡¢( ¼¡¤Î¤è¤¦¤Ë´Êñ¤ËÄêµÁ¤Ç¤¤Þ¤¹¡£ class Sequence def *(y) x=self case y when Numeric Sequence.new([],x,y){"|n,x,y| x[n]*y"} else Sequence.new([],x,y){"|n,x,y| x[n]*y[n]"} end end def sum(n=0,m=nil,s=nil) each(n,m){|x| (break if not yield(x)) if iterator?;if s;s+=x;else s=x end } s end end Binom =Sequence.new([Sequence.new([1]){"|i| 0"}]){"|n| Sequence.new([1],n){\"| i,n| Binom[n-1][i-1]+Binom[n-1][i]\"}"} #Æó¹à·¸¿ô require "rational.rb" Bernoulli =Sequence.new([1,Rational(-1,2)]){"|n| -(Binom[n+1]*Bernoulli).sum(0 ,n-1)/(n+1)"} ·×»»¤ÏɬÍפʻþ¤Ë°ì²ó¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢Â®¤¯¤¹¤ë¤¿¤á¤Î¹©Éפ¬ÉÔɬÍ×¤Ê ¤³¤È¤âÍøÅÀ¤Ç¤¹¡£ Á²²½¼°¤Ç¤Ê¤¤Îã def (Dirichlet={}).[](s) super || Dirichlet[s]=Sequence.new([1],s){"|n,s| (n+1)**(-s)"} end class Sequence def DirichletSeries(s) self*Dirichlet[s] end end Moebius=Sequence.new([0,1]){"|n| (p=Prime.prime_factors(n);pu=p.uniq;(p!=pu)? 0:Sgn2[pu.size])"} Moebius.DirichletSeriws(s).sum{|x| x.abs > $error} #=1/zeta(s) ºÇ¸å¤ÎÎã¤ò½Ð¤»¤ÐÁ²²½¼°¤À¤±¤¬ÌÜŪ¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ï¡¢½ñ¤«¤Ê¤¯¤Æ¤â ʬ¤«¤Ã¤Æ¤â¤é¤¨¤ë¤À¤í¤¦¤È¤¤¤Ã¤¿½ñ¤Êý¤òº£¤Þ¤Ç¤Ï¤·¤Æ¤¤¤Þ¤·¤¿¡£¤¹¤ß¤Þ ¤»¤ó¤Ç¤·¤¿¡£ ̵¸ÂÎó¤Î´Ö¤Î±é»»¤ò¼«Í³¤ËÄêµÁ¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤¬ÌÜŪ¤À¤È¤¤¤¦¤³¤È¤ò ¤Ï¤Ã¤¤ê½ñ¤¯¤Ù¤¤Ç¤·¤¿¡£ Ĺʸ¼ºÎ餷¤Þ¤·¤¿¡£