[#42355] TkCanvasの座標 — Masato Ishimoto <i@...>
はじめまして。Newbieいしもと といいます。
12 messages
2006/06/02
[#42356] Re: TkCanvasの座標
— Hidetoshi NAGAI <nagai@...>
2006/06/03
永井@知能.九工大です.
[#42357] Re: TkCanvasの座標
— Masato Ishimoto <i@...>
2006/06/04
こんにちは、いしもとです。
[#42358] Re: TkCanvasの座標
— Hidetoshi NAGAI <nagai@...>
2006/06/04
永井@知能.九工大です.
[#42359] Re: TkCanvasの座標
— Masato Ishimoto <i@...>
2006/06/04
おはようございます。いしもとです。
[#42373] My/SQL/Ruby for Windows での不具合 — 林 浩一郎 <NQA58508@...>
subscribe Koichiro Hayashi
5 messages
2006/06/09
[#42375] String#count, String#deleteの利用想定 — Daisuke Yamazaki <yamajaki@...>
こんにちは
6 messages
2006/06/10
[#42389] ruby -Ks -rjcode -e"p('|%5.5s|'%'泣き別れ')" #=> "|泣き怖" — take_tk <ggb03124@...>
たけ(tk)です
7 messages
2006/06/12
[#42394] eachはなぜ元々のオブジェクトが返るのか? — Fujioka <fuj@...>
藤岡です。
7 messages
2006/06/12
[#42416] ファイル中の空行の削除方法 — 遠藤 大二 <dendoh@...>
遠藤@札幌です
6 messages
2006/06/18
[#42423] 空白行を除くための行数の数え方 — 遠藤 大二 <dendoh@...>
遠藤@札幌 です
9 messages
2006/06/19
[#42428] toplevel ウィジェットにイベントがわたらない? — Hiroshi Kimura <Hiroshi.Kimura@...>
九工大、木村といいます。
8 messages
2006/06/20
[#42454] 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...>
出沢です
22 messages
2006/06/22
[#42455] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— rubikitch <rubikitch@...>
2006/06/22
From: しん <dezawa@aliadne.net>
[#42456] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— しん <dezawa@...>
2006/06/23
出沢です
[#42458] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— rubikitch <rubikitch@...>
2006/06/23
From: しん <dezawa@aliadne.net>
[#42459] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— しん <dezawa@...>
2006/06/23
出沢です
[#42460] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— rubikitch <rubikitch@...>
2006/06/23
From: しん <dezawa@aliadne.net>
[#42461] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— しん <dezawa@...>
2006/06/23
出沢です。
[#42465] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— rubikitch <rubikitch@...>
2006/06/23
From: しん <dezawa@aliadne.net>
[#42467] Re: 多量の正規表現との効率的なマッチのアイデアを、、
— しん <dezawa@...>
2006/06/23
出沢@なるほど、、、
[#42475] String#first, String#last — Kouhei Yanagita <yanagi@...>
こんにちは。柳田です。
6 messages
2006/06/23
[ruby-list:42447] Re: rubyで多次元配列の作り方
From:
rubikitch <rubikitch@...>
Date:
2006-06-22 07:21:27 UTC
List:
ruby-list #42447
From: Yoshihiro Sugihara <jinnee@tt.rim.or.jp>
Subject: [ruby-list:42442] rubyで多次元配列の作り方
Date: Thu, 22 Jun 2006 15:39:06 +0900
るびきちです。
> 初歩的な質問で申し訳ないんですが、Rubyで多次元配列の使い方が判りません。
> Arrayクラスにはどうも多次元配列をサポートしてないようだったので、
Arrayは直接多次元配列をサポートしているわけではありません。
中級レベルになりますが、数値計算で多次元配列が欲しいならばnarrayライブ
ラリを使うのが定番でしょう。
http://raa.ruby-lang.org/list.rhtml?name=narray
> Hashクラスを用いて
> irb(main):074:0> i=0
> => 0
> irb(main):075:0> j=0
> => 0
> irb(main):076:0> while i<5
> irb(main):077:1> while j<5
> irb(main):078:2> hs["i,j"]=i+j
> irb(main):079:2> j +=1
> irb(main):080:2> end
> irb(main):081:1> i += 1
> irb(main):082:1> end
> irb(main):083:0> p hs
> {"i,j"=>4}
> => nil
hs["i,j"]の部分をhs["#{i},{#j}"]にしないとだめです。
また、jの初期化位置が間違っています。
オリジナルに忠実に修正するとこうでしょうか。
hs={}
i=0
while i<5
j=0
while j<5
hs["#{i},#{j}"]=i+j
j +=1
end
i += 1
end
p hs.length
p hs["2,3"]
また、HashのkeyをArrayにすることで擬似的に多次元配列が実現できます。
こっちのほうがきれいでしょう。
hs={}
i=0
while i<5
j=0
while j<5
hs[[i,j]]=i+j
j +=1
end
i += 1
end
p hs.length
p hs[[2,3]]
さらに、Rubyらしくするには、ループ処理をイテレータで抽象化します!!
5.times do |i|
はiが0から4まで繰り返します。
0.step(4) do
や
(0..4).each do
書き方もあります。
(0..4)はRangeオブジェクトで0から4までの範囲を表します。
hs={}
5.times do |i|
5.times do |j|
hs[[i,j]]=i+j
end
end
p hs.length
p hs[[2,3]]
mapは配列(やそれに準ずるもの)の各要素に対してブロックを評価した結果を
全て含む配列を返します。
[1,2].map{|x| x*2 } # => [2,4]
(0..4).map{|x| x*2} # => [0,2,4,6,8]
これを二重に使ってやるとあっさり多次元配列ができます。
hs = (0..4).map do |i|
(0..4).map do |j|
i+j
end
end
p hs.length # 5
p hs.flatten.length # 25
p hs[2][3] # 5
p hs
高度な抽象化ができるところは、Rubyの一番かっこいい部分のひとつだと思います。
そしてプログラミングを効率よく、そして楽しいものにしてくれます。
--
rubikitch
http://www.rubyist.net/~rubikitch/