トップページ⇒tech
1002コメント364KB

Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/03/23(水) 21:16:44.36ID:6HedlyzC
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 57
http://peace.2ch.net/test/read.cgi/tech/1426165733/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0795デフォルトの名無しさん2016/09/05(月) 02:24:10.75ID:SdDvLzP6
"_"を足して別ファイル作成する、というもの。
これをテストするために"test.bat"を作って、

> test.bat *.txt

という感じでテストしました。

foo(bar).txt
foo(bar)[hoge-huga_fizz].txt

というファイルに対しては、

foo(bar)_.txt
foo(bar)[hoge-huga_fizz]_.txt

となることを期待しましたが

foo(bar)_.txt
foo(bar)__.txt

となります。

色々試したところ、"_"を"a"に変えたり、ファイル名を変更すると期待した挙動になります。
アンダースコアはファイル名的に特別だったりしますか。
ハマりまくっているので助けてください…
0796デフォルトの名無しさん2016/09/05(月) 02:31:07.88ID:B0VMf5p9
詳細不明なzipファイルなんてみる人少ないと思うよ
codepadなんかで投稿しなおしてみては
07977942016/09/05(月) 02:42:18.42ID:SdDvLzP6
投稿しました。試験用のファイル含めて計4つ分です。
http://codepad.org/phgMbtNs
0798デフォルトの名無しさん2016/09/05(月) 03:00:37.69ID:vxYcnkVP
これオリジナルのスクリプトなんだろうか
投稿のために短く切り詰めたとかじゃなく
そりゃ大変だ
教科書投げ捨てる案件だなコレ
0799デフォルトの名無しさん2016/09/05(月) 03:17:25.42ID:B0VMf5p9
新しく作ったファイルは空だけどいいのか?
まあともかくdst_filenameには想定通りの文字列が来てるみたいだから、batファイルの問題なんじゃないか
windowsのことはわからん
0800デフォルトの名無しさん2016/09/05(月) 04:09:04.01ID:DasxJQQ9
for %%f in ("%*") do (
echo %%f
ruby test.rb %%f
)
こうじゃない?
bat 使わずに ruby だけでやった方が楽だと思うけど。
0801デフォルトの名無しさん2016/09/06(火) 00:57:19.17ID:JK1a3Uc+
bat はバグるからアカン

せめて、PowerShell_ISE だろ
0802デフォルトの名無しさん2016/09/06(火) 17:01:21.99ID:XKZPS+fP
batを使うのはbadだぜ
08037942016/09/06(火) 22:28:35.50ID:yRSBEbJd
ファイル名を受け取っているだけのRuby側は問題無さそうということで
ありがとうございました。
0804デフォルトの名無しさん2016/09/07(水) 06:36:39.93ID:apKIFhKK
TAIL = '_'
exit if ARGV.empty? || !File.exist?(ARGV[0])
src_filename = ARGV[0]
begin
  dst_filename = src.filename.sub(/.\K(\.)(?=[^.]+$)|$/,TAIL+'\1')
end while File.exist?(dst_filename)

p dst_filename
0805デフォルトの名無しさん2016/09/07(水) 10:51:39.61ID:dMgwZegp
ruby 2.3.1

rubyをconfigureかmakeまでしたら
make distcleanやっても消えないファイルがあるんですが仕様ですか?
この状態でconfigure && makeすると
executable host ruby is required. use --with-baseruby option.
なって途中で止まっちゃうんです。何でですか?
0806デフォルトの名無しさん2016/09/07(水) 11:43:57.58ID:mGf42UhL
>executable host ruby is required. use --with-baseruby option.
をそのまま訳すなら「動かせるrubyが必要だから--with-baserubyオプション使えよ」って事になる
ぐぐったら色々出てくるけど、ソースからコンパイルしてインストールしようとしてるの?
情報不足だからこれ以上はわからない

インスコするならrbenvとかRPM使ったほうが楽に入れられると思う
0807デフォルトの名無しさん2016/09/07(水) 12:03:10.18ID:YSZpbVen
>>794-795 >>797 >>803
おまいが悪い
ruby 側の問題

ループ中でファイルが増えてるので
同じファイルにアクセスし続けてる

ファイル一覧を一旦リストに入れてから処理すれば成功するだろう
0808デフォルトの名無しさん2016/09/07(水) 12:05:38.78ID:YSZpbVen
windowsの場合だけ問題が起こるなら
原因はディレクトリのソート順かもしれんな
いずれにしてもループの要素をループ中で増減するのは危険
0809デフォルトの名無しさん2016/09/07(水) 21:57:51.62ID:tAhMeQ6s
rubyはじめるわ!
0810デフォルトの名無しさん2016/09/08(木) 00:34:49.37ID:zamWLbBn
>>794-808
a_.txt ファイルが作られた後、それがbatのループに拾われて、
a__.txt ファイルが作られるとか?

別のディレクトリに、ファイルを作るとか、
ループ終了後に、まとめてファイルを作るなど、排他的に処理すべき

>>805
>make distcleanやっても、消えないファイルがあるんですが、仕様ですか?
makefileの、distcleanの所を見れば?
0811デフォルトの名無しさん2016/09/08(木) 09:23:30.37ID:gPBbc6Mn
batファイルの引数以外のファイルは拾われないでしょ
別に問題ない
0812デフォルトの名無しさん2016/09/08(木) 17:03:47.71ID:vq3pb7wp
質問させてください
以下のようなJSONファイルをJSON.parseしてhogeに格納しました
[ { "id":"1","kana":"あ","boin":"a" } ]
この状態で「p hoge.class」するとArryを返されます

JSONファイルをこうすると
{ "id":"1","kana":"あ","boin":"a" }
Hashを返されます

[{…},{…},{…}]のJSONファイルをHashに格納したいのですが
なにか良い方法はありませんでしょうか
よろしくお願いします!
0813デフォルトの名無しさん2016/09/08(木) 18:11:48.06ID:uHWEQ8CC
>>812
[ { "id":"1","kana":"あ" }, { "id":"2","kana":"い" }, { "id":"3","kana":"う" } ]
がどう変換されたいのか書いてみて。
0814デフォルトの名無しさん2016/09/08(木) 20:24:23.21ID:gPBbc6Mn
hash1, hash2, hash3 = [{・・・}, {・・・}, {・・・}]
0815デフォルトの名無しさん2016/09/08(木) 21:19:39.88ID:5PY6byd9
ひとつのdictには一組しかないケースじゃないん?たぶん
hoge.inject({}) {|result, item| result.merge(item) }
hoge.inject({}, &:merge) # 省略形
0816デフォルトの名無しさん2016/09/08(木) 21:29:09.66ID:s09Hu+LE
injectにProc渡せるようになったの?
0817デフォルトの名無しさん2016/09/08(木) 22:09:36.89ID:gPBbc6Mn
[*1..9].reduce(&proc{|a,b|a+b}) #=> 45
[*1..9].reduce(&lambda{|a,b|a+b}) #=> 45
少なくとも1.8.7の頃からできるよ
0818デフォルトの名無しさん2016/09/08(木) 22:21:38.10ID:s09Hu+LE
Symbolじゃないとダメだと思い込んでた
inject/reduceは意図的に両方OKな設計にされてるのね
0819デフォルトの名無しさん2016/09/09(金) 04:17:17.09ID:LpeB3e0i
複数のハッシュ群を、Arrayにいれておいて、取り出して使えば、いいだけ

ary = [ { "id":"1","kana":"あ" }, { "id":"2","kana":"い" }, { "id":"3","kana":"う" } ]

h = ary[1]
p h
{:id=>"2", :kana=>"い"}
0820デフォルトの名無しさん2016/09/09(金) 07:40:28.22ID:Lk44lMhw
>>794
bat でやりたいことは、コマンドライン引数のワイルドカード展開なんだろうけど、
# test.rb
p ARGV
---
test.rb *.txt
って、やってごらん。

マニュアルに書かれているようにワイルドカード展開に `*', `?', `[]', `**/' が使える。
Windows環境で []等を含めたければ ''括る、とも書いてあるね。
0821デフォルトの名無しさん2016/09/09(金) 13:22:13.98ID:nAt2a2k9
>>814
そのままやればいいんじゃないの?
hash1, hash2, hash3 = JSON.parse(json_string)
0822デフォルトの名無しさん2016/09/10(土) 11:26:54.07ID:0WfpQ0VB
>ruby -e " p false && echo;p :end"
false
:end
>ruby -e ' p false && echo;p :end'
false
p :end'

Windowsで'-e'に対してシングルクォート(')でスクリプトを書くと
'|' や '&' や '&&' がコマンドプロンプトのコマンドとして認識されてしまうんですがおま環ですかね?
ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32]
Windows8.1(x64)
0823デフォルトの名無しさん2016/09/10(土) 11:36:17.02ID:0WfpQ0VB
あ、なんかすごくアホな質問してました
無視してくださいorz
0824デフォルトの名無しさん2016/09/10(土) 13:37:43.64ID:QUVRyXDh
なんかムラムラするなお前
0825デフォルトの名無しさん2016/09/11(日) 16:04:49.34ID:4fbcKkyu
変数strにはさまざまな文字列が入る可能性があり"apple"か"banana"のどちらかが入っていたときのみtrueを返すようにしたいのですが、
どのように書けばよいのでしょうか

str == (("apple") || ("banana"))

のようにかけるかと思ったのですがうまくいきませんでした
これは論理演算子の左辺がfalseだった場合、右辺は実行されないというrubyの仕様によるものだということはわかったのですが、
ではどうしたらいいのかということがわかりません
0826デフォルトの名無しさん2016/09/11(日) 16:06:07.87ID:qOBSijlm
((str == "apple") || (str == "banana"))
0827デフォルトの名無しさん2016/09/11(日) 16:16:38.56ID:4fbcKkyu
>>826
教えていただきありがとうございます
助かりました
0828デフォルトの名無しさん2016/09/11(日) 16:32:54.36ID:UPswGxCa
%w[apple banana].any?{|s| s == str}
!!(str =~ /\A(apple|banana)\z/)
やり方はいろいろ
0829デフォルトの名無しさん2016/09/11(日) 18:08:52.74ID:7mVeUw5e
['banana','apple'].include?(str)
0830デフォルトの名無しさん2016/09/13(火) 08:22:10.35ID:LgDBG7c/
> これは論理演算子の左辺がfalseだった場合、右辺は実行されない
0点


論理和
論理積

コード(演算子)の処理順序

などを少し整理する事をすすめる
0831デフォルトの名無しさん2016/09/13(火) 16:29:06.06ID:aXWSAFy4
あるサイトページをnokogiriで拾うと、正規のURLと文字化けしたURL(%などが含まれる)の2種類のURLで同一の情報を拾ってしまいます。
正規のURLだけの情報えお拾いたいのですがどのような方法がありますでしょうか?
0832デフォルトの名無しさん2016/09/13(火) 16:35:24.92ID:aXWSAFy4
ちなみに、

anemone.skip_links_like /除外対象のURLパターン/

で文字化け部分を指定しても改善にはいたりませんでした。
0833デフォルトの名無しさん2016/09/13(火) 16:36:46.35ID:80RPfzdF
文字化けというのはURLエンコードのこと?
0834デフォルトの名無しさん2016/09/13(火) 16:45:49.24ID:aXWSAFy4
>>833
URLエンコードです。
デコードすると正規のURLに変換できます。
0835デフォルトの名無しさん2016/09/13(火) 16:46:32.94ID:Z1s//V7/
取得したURLをすべて%付きに変換(正規化)するだけじゃないの?
%なしを正規として扱うのはわかってやらないのならオススメしない。
0836デフォルトの名無しさん2016/09/13(火) 16:51:13.41ID:80RPfzdF
デコードしていく方法で考えたらいいんじゃないかな
一応検索したら出てきたもの
http://qiita.com/foloinfo/items/435f0409a6e33929ef3c
0837デフォルトの名無しさん2016/09/13(火) 17:04:47.99ID:mdhMcfhG
nokogiriじゃなくてanemoneの問題だろ
focus_crawl で、いらないとお前が思うリンクを弾いたら?
0838デフォルトの名無しさん2016/09/13(火) 17:19:43.00ID:aXWSAFy4
>>836
参考リンクの情報ありがとうございます。
一通り試してみますm(_ _)m

>>837
ご返信ありがとうございます。
具体的に申しますと、

[ → %5B
] → %5D

のように、カッコ部分がエンコード/デコードで重複して出力されます。
link.to_s.matchで[●●]や%5B●●%5Dといった条件付けで巡回ページを指定しても、
両方のパラメータが出力されてしまうようです。
0839デフォルトの名無しさん2016/09/13(火) 19:00:51.61ID:sMHYkxL7
正規化して重複したら弾くだけじゃないの?
0840デフォルトの名無しさん2016/09/15(木) 01:10:39.64ID:EGe9UG5c
moduleの中でプライベートなインスタンスメソッドを定義するのって変?
クラスにincludeした際にmoduleの別のインスタンスメソッドから呼び出すために用意してみたんだけど…
ちなみにクラスメソッドのような使い方は想定してないのでmodule_functionとかは利用しなかった
0841デフォルトの名無しさん2016/09/15(木) 19:46:09.23ID:8swlNZts
data = [ { :name => "foo", :address => "fugafuga"},
{ :name => "bar", :address => "piyopiyo"} ]

↓で「data」の中のハッシュを取り出せました

data.each do |list|
puts list[:name]
puts list[:address]
end

「data」から「:address」に"fuga"を含むハッシュだけを取り出したいんですがうまくいきません
どうかアドバイスをお願いしますm(_ _)m
0842デフォルトの名無しさん2016/09/15(木) 20:05:06.44ID:2bVUIpAa
data.select{|it| it[:address] == "fugafuga" }
0843デフォルトの名無しさん2016/09/15(木) 21:56:41.38ID:4Lbf8yku
>>842
ありがとうございます
試して見ます!
0844デフォルトの名無しさん2016/09/15(木) 23:26:56.53ID:UCCDVfNQ
横レスだけど、>>842を試してみた

https://ideone.com/xp2IB6
0845デフォルトの名無しさん2016/09/16(金) 01:04:31.60ID:egLfcP1P
たびたびすいません
fugafgaではなくgafで抽出したい場合は正規表現使う感じでしょうか
0846デフォルトの名無しさん2016/09/16(金) 06:12:33.38ID:DLAZUyzS
リファレンス読もうselectはブロック内で真を返すもののみ残すので正規表現でいけるよ
0847デフォルトの名無しさん2016/09/16(金) 07:56:10.76ID:6a7QMzs2
Effective Ruby の項目10に書いてあるけど、

構造化データを扱う際、Hashの配列よりも、
クラスまたは、Struct(簡易クラス、クラスジェネレータ)のような専用の型を、使った方がいい

data[:name]
キー名のような実装の詳細が、隠蔽されず表に出てくる。
また、存在しないキーは、nilとなる

Person = Struct.new(:name, :address) #定数に代入
data = Person.new("foo", "fugafuga")
data.name

Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる
0848デフォルトの名無しさん2016/09/16(金) 09:30:54.73ID:DLAZUyzS
>>847
複雑にネストしたJSONとかでもそっちのが良いの?
うまく使いこなせる気がしない
0849デフォルトの名無しさん2016/09/16(金) 09:37:52.73ID:6a7QMzs2
>>845
data.select{|it| it[:address].match(/gaf/) }
0850デフォルトの名無しさん2016/09/16(金) 09:44:38.44ID:6a7QMzs2
型として固定されている場合は、クラス・Structの方がいい

一方、項目がコロコロ変わるような場合、
何の項目が来るのか、わからない場合は、Hashがいい
0851デフォルトの名無しさん2016/09/16(金) 10:32:56.00ID:S3qmK1Rf
>>850
EffectiveRubyの項目10を読んでみました
プログラミング初心者なので書いてあることの半分も理解できませんが
クラス化して汎用性のあるものを作れるように最初から読み込んでみます!

なんとなくやってみたいことが動くというところまでは行きたいので
文字のマッチングから>>841の「data[0]」を出力できるところまでやってみたいと思います
ありがとうございます!
0852デフォルトの名無しさん2016/09/16(金) 23:44:30.69ID:6a7QMzs2
初心者には、EffectiveRuby は難しい。
まず「たのしいRuby 第5版、2016」で文法を勉強すべし

クラス・Structは、DBのレコードのように、項目が固定されている場合に使う

一方、Hashは、事前に項目(キー)がわからない場合。
例えば、文章に出てくる英単語を、使用回数が多い順に並べるとか
0853デフォルトの名無しさん2016/09/17(土) 00:12:19.00ID:PduQX1gX
言語リファレンス読めて習作いくつか書けたら
そのレベルの本はいらんやろ。
0854デフォルトの名無しさん2016/09/17(土) 15:43:11.73ID:3YKrhMdt
obj = Foo(x)
みないた、newを使わないインスタンスの生成方法って可能ですか?
以前どこかでこの形を見たような記憶があるのですがとてもあやふやで、
確認しようと色々さがしてみたら見当たりませんでした
やはり記憶違いでしょうか?
0855デフォルトの名無しさん2016/09/17(土) 15:43:54.52ID:VbfmfVd0
>>854
Foo というメソッドを定義すればいい
0856デフォルトの名無しさん2016/09/17(土) 18:42:02.15ID:9X+eFsUZ
任意の枚数のトランプを仕分けするプログラムで悩んでいます。
最初にカードの枚数が与えられ、次にカードのシンボルと数字がスペース区切りのセットで与えられます。
例えば、スペードの5なら「S 5」と言った感じです。自分はまだ初心者なので効率的なやり方がわからず、
とりあえず、case文で場合分けして配列に入れるやり方を考えてみました。以下が組んだコードです。

num=gets.to_i
s=[]
h=[]
c=[]
d=[]

i=1
while i<=num
symbol, numeric = gets.chomp.split
case symbol
when symbol=="S"
s<<numeric
when symbol=="H"
h<<numeric
when symbol=="c"
c<<numeric
when symbol=="d"
d<<numeric
end
i+=1
end
print s
とりあえず確認がてらスペードの配列を表示させようとしたら、空配列しか返ってきません。どの部分がおかしいのか
ご指摘いただけませんでしょうか。
0857片山博文MZ ◆T6xkBnTXz7B0 2016/09/17(土) 19:13:41.02ID:VM86FVmf
>>856
大文字と小文字が混じってるね。
0858デフォルトの名無しさん2016/09/17(土) 19:21:36.45ID:Bzzyu0/Q
>>856
case when構文がおかしいので再確認を

caseで場合分けせんでも
cards = Hash.new{|h,k| h[k] = [] }
while i <= num
symbol, numeric = gets.chomp.split
cards[symbol] << numeric
i += 1
end
でいいんじゃないかなと思うんだが
0859デフォルトの名無しさん2016/09/17(土) 19:39:53.49ID:9X+eFsUZ
>>857
うぬ・・・いつのまに・・・めんぼくない
>>858
おお、動きました。すごいな。あまりよくわからないけど、なんとなくわかりました。ありがとうございました。
とにかく、「動いた」のが素晴らしい。あと、できれば、前述のコードが意図したとおりにならない理由を
教えていただけるとありがたいです。
0860デフォルトの名無しさん2016/09/17(土) 21:27:40.73ID:owPS/qUi
だからcaseの構文がおかしいっていわれてるじゃん!

case symbol
when 'S'
s << numeric
......

まあこの場合は when 'S' then s << numeric と1行で書くのもアリ
0861デフォルトの名無しさん2016/09/17(土) 22:34:10.05ID:/l22qB3W
>>854
RubyやめてPythonへ行けばいい
0862デフォルトの名無しさん2016/09/17(土) 23:58:36.86ID:owPS/qUi
>>854

class Foo
  def self.[](a)
    new(a)
  end
end

foo = Foo[0]
p foo.class #=> Foo
0863デフォルトの名無しさん2016/09/18(日) 09:35:45.27ID:MJhMf8Pu
>>860
なるほど!書かれるまで全く気付かなかった・・・確かに書き方がおかしい
ありがとうございます。
0864デフォルトの名無しさん2016/09/18(日) 17:41:19.27ID:aAaRWXxI
シンタックスエラーごときを自分で直せないならプログラマの素質なし
0865デフォルトの名無しさん2016/09/18(日) 17:53:33.43ID:hCSpHgBW
エラーとバグは違う
0866デフォルトの名無しさん2016/09/18(日) 20:19:58.81ID:arvHcK2+
symbol === true が falseってだけでエラーではない
0867デフォルトの名無しさん2016/09/18(日) 21:46:51.64ID:zoqzORWf
この場合はおすすめしないけど、
case symbol を
case だけにすれば、if 〜 elsif 〜 elsif 〜 相当のことが出来る。
条件式の位置が揃うので、if,elsif より良い感じ。
0868デフォルトの名無しさん2016/09/18(日) 23:03:18.09ID:7E6Tur9d
>>862
ありがとうございました
やはり記憶違いのようでした
ですが、ググッている時に[]=のオーバーロード(?)に関する話を見つけられました
下の感じのコードです
class Foo
def []=(a,b,c,d)
p a,b,c,d
end
end
Foo.new()[1,2,3]=4
0869デフォルトの名無しさん2016/09/18(日) 23:41:47.34ID:oCekGsiM
Aサイトを巡回するクラスを作ったとします
0870デフォルトの名無しさん2016/09/19(月) 12:13:31.03ID:iIvzjj/t
>>856
トランプのカードでは、カード[マーク][数字]のように、
2次元配列で管理すると、うっとおしいから、1次元配列にした方がいい

それで幾つか、変換関数を作っておく
0871デフォルトの名無しさん2016/09/19(月) 13:04:45.74ID:GqLEG2EI
>>867
いろいろな表現の仕方があるんですねー

>>870
なるほど…自分はまで全然経験値が足りないので、とにかく動きさえすればいいやと思って
コードを組んでるのですが、これがまた見事に動かないという…
とにかく数をこなそうと思います。ありがとうございました。
0872デフォルトの名無しさん2016/09/19(月) 16:36:48.51ID:H3IN7nVe
なんであらゆる面でPythonに劣っていると言われるRuby使ってるの?
Pythonじゃあ駄目なの?
利点と差別化を教えて
0873デフォルトの名無しさん2016/09/19(月) 16:40:16.95ID:fIqWe4kn
Pythonは行数が増える。
特に無名関数、クロージャーがすごく書きづらい。


あとデバッグ用にわざと目立つように行頭にprintくのが出来なかったり
行を入れ替えたりするだけでインデントを揃えさせられるのが面倒。
0874デフォルトの名無しさん2016/09/19(月) 18:19:57.44ID:jZTV89ee
>>872
使ってるのはRubyじゃなくてRails
単体でバッチ処理書いたりするときはPython使うわ
RoRと同等の使い勝手のPython on Railsがあれば迷わず乗り換えるけど、
やっぱりRubyはフレームワークのDSLとして使うには最適な言語なんだと思うよ
0875デフォルトの名無しさん2016/09/19(月) 18:22:24.29ID:EdcTl4fm
>>872
> なんであらゆる面でPythonに劣っていると言われる
どこでその情報を手に入れたのか知らんが、「あらゆる面で」とかいうdisり
ワードをぶっこんでるような記事に論理性はほぼないから質の低さを笑うぐらいしか
読む価値ないよそれ
0876デフォルトの名無しさん2016/09/19(月) 19:49:24.51ID:FmjNH1Zy
Ruby on Railsは神
0877デフォルトの名無しさん2016/09/20(火) 00:19:19.79ID:w6mPkDpe
滅びろ
時代遅れの言語よ
0878デフォルトの名無しさん2016/09/20(火) 01:37:58.83ID:fS5Ni7aU
時代遅れのC言語には効かなかった
0879デフォルトの名無しさん2016/09/20(火) 08:18:08.16ID:9l0NUqqb
滅びろ
キッシュイーターよ
0880デフォルトの名無しさん2016/09/20(火) 09:49:01.89ID:Xg0W+RA8
ミニツクも消えてるしRuby学習用のサイトが少なくて幻滅しました、
Pythonに乗り換えます
0881デフォルトの名無しさん2016/09/21(水) 16:10:02.25ID:zFZPh8Mh
Matrixライブラリをつかって行列の計算を試しているんだけど、
頂点(xyzの3要素)を列ベクトルとして、4x4の変換マトリクスに掛け合わせると
:in `*': Matrix dimension mismatch (ExceptionForMatrix::ErrDimensionMismatch)
というエラーがでちゃう

これ、頂点側にもw要素必要ってことなの?
0882デフォルトの名無しさん2016/09/21(水) 16:18:10.30ID:23vZJdQL
そりゃ4次の正方行列と3次元の列ベクトルとじゃ積が定義できんわな
0883デフォルトの名無しさん2016/09/21(水) 16:30:40.93ID:zFZPh8Mh
w要素追加してもエラー出るからおかしいなと思ってたんだけど、
列ベクトルじゃなくて行ベクトルかけてた
ほんとごめんなさい
0884デフォルトの名無しさん2016/09/21(水) 17:18:28.43ID:23vZJdQL
Rubyより先にすこし線形代数やったほうが良い気がする
0885デフォルトの名無しさん2016/09/21(水) 17:23:40.85ID:ib8am8Zc
>>881
馬鹿には無理
0886デフォルトの名無しさん2016/09/21(水) 21:50:37.29ID:PZB1d7j5
問題集のオススメサイト、あったら教えて欲しい
http://vipprog.net/とpaiza見てるんだけど、前者はちょっと問題が難しくて、paizaはBまでやったけど結果が出ないのでわかりにくい
便利なサイト、分かりやすいのがあれば嬉しい
0887デフォルトの名無しさん2016/09/21(水) 21:55:25.11ID:23vZJdQL
anarchy golf
0888デフォルトの名無しさん2016/09/21(水) 22:36:45.56ID:lN+U+lYo
>>886
yukicoder がいいと思うよ
0889デフォルトの名無しさん2016/09/21(水) 23:23:10.02ID:lMM9KPqs
時代遅れすぎRuby
0890デフォルトの名無しさん2016/09/21(水) 23:27:54.15ID:lN+U+lYo
>>889
そう思う人はわざわざ書き込まないよ
なぜなら時代遅れなものに興味は持たないからねw
0891デフォルトの名無しさん2016/09/22(木) 00:55:23.81ID:gXd2kX85
あなごるは英語でムリポ……プログラマは英語も出来て格好いいなぁ
ユキコーダーを下からぽちぽちやっていきます
ありがとう
0892デフォルトの名無しさん2016/09/22(木) 01:31:58.64ID:XjtOZmEL
>>891
そのまま競技プログラミングの世界においでw
この世界で使う英語はパターンも対して多くないから、yukicoder で問題パターンをある程度把握できたら
海外の問題文もそれほど苦もなく読めるようになるよ
0893デフォルトの名無しさん2016/09/23(金) 00:04:42.79ID:sc2fhvDP
PythonとRubyで迷ってる
進めるべき参考書を入門書からフローチャートで教えてくれたら入信しようと思ってるんだが教えてくれない?
0894デフォルトの名無しさん2016/09/23(金) 00:07:59.29ID:jTBVehdT
>>893
入信とか考えてたらロクなことないよ
どっちも使えるようになるぐらいの気概を持たなきゃ
■ このスレッドは過去ログ倉庫に格納されています