[#42643] メールのSMTP認証の方法(質問) — "Hisashi Yahata" <yahatah@...>

お世話になります。

34 messages 2006/08/09
[#42649] Re: メールのSMTP認証の方法(質問) — OHARA Shigeki <os@...> 2006/08/09

大原です。

[#42650] Re: メールのSMTP認証の方法(質問) — "Hisashi Yahata" <yahatah@...> 2006/08/09

大原様

[#42651] Re: メールのSMTP認証の方法(質問) — 植田裕之 <ueda@...> 2006/08/09

植田と申します。

[#42654] Re: メールのSMTP認証の方法(質問) — "Hisashi Yahata" <yahatah@...> 2006/08/09

植田 裕之様

[#42657] Re: メールのSMTP認証の方法(質問) — WATANABE Tetsuya <Tetsuya.WATANABE@...> 2006/08/09

渡辺哲也です。

[ruby-list:42716] Re: n次元配列#each_index

From: rubikitch <rubikitch@...>
Date: 2006-08-17 08:24:42 UTC
List: ruby-list #42716
From: Sato Hiroshi <hirocy.f01@plala.to>
Subject: [ruby-list:42715] n次元配列#each_index
Date: Thu, 17 Aug 2006 16:48:13 +0900

るびきちです。

> n次元配列に対するeach_indexを実現したいのですが,
> 
> nが決まっていれば難しくはないのですが,不定の場合,
> どう書けば良いのか...

再帰を使ってこんなのはどうでしょう?
each_with_indexを拡張して、indexの部分が配列になっています。
prepended_idxesは状態変数なので使う際は無視してください。

require 
class Array
  def n_each_with_index(prepended_idxes=[], &block)
    each_with_index do |x, i|
      if Array === x
        x.n_each_with_index(prepended_idxes+[i], &block)
      else
        yield(x,prepended_idxes+[i])
      end
    end
  end
end


require 'test/unit'
class TestNdimArrayIndex < Test::Unit::TestCase

  def f(ary)
    ary.enum_for(:n_each_with_index).map{|x, idxes|
      format("(%s)=%d", idxes.join(","), x)}
  end

  def test_2
    ary = [[10,27],[31,42]]
    assert_equal(["(0,0)=10", "(0,1)=27", "(1,0)=31", "(1,1)=42"], f(ary))
  end

  def test_1
    ary = [1,2,3]
    assert_equal(["(0)=1", "(1)=2", "(2)=3"], f(ary))
  end

  def test_2_1
    ary = [1, [21, 22], 3]
    assert_equal(["(0)=1", "(1,0)=21", "(1,1)=22", "(2)=3"], f(ary))
  end

end

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread