08/07/03 11:12:07
>>236
あ、これならすべて習っています!
本当にありがとうございます。
助かりました(;_;)
238:デフォルトの名無しさん
08/07/05 05:27:15
>>235
putsは改行も一緒に出力する
239:a ◆Ge868FLoWU
08/07/12 18:37:49
[1] プログラミング言語
[2]パスカルの3角形を印字するプログラムを
書きなさい。ただし、次のプログラムで印字
されるようにプログラムを作成してください。
[3] 環境
[3.1] Vista
[3.2] Ruby 1.8.6-2.6
[3.3] Ruby
[4] 2008/7/14/8:00
[5] 以下のコードを補完すること
print("Enter n: "); n = gets.chomp.to_i
if( n>30 || n<0 ) then
n = 10
end
a = Array.new( n )
a[0] = [1] # 要素が1 の長さ1の配列
# ここでパスカルの3角形を作る
# このとき、a[i]ごとに配列を作る
# そして、印字
(0..a.length-1).each{ |i|
(0..a[i].length-1).each{ |j|
print( " ", a[i][j] )
}
print( "\n" )
}
お願いします。
240:デフォルトの名無しさん
08/07/12 18:45:37
0..a.length-1
まぁこういうのは配列操作のイディオムの知識としては必要なんだろうけど。
(´-ω-`)
241:デフォルトの名無しさん
08/07/12 19:37:25
> (0..a.length-1).each{ |i|
> (0..a[i].length-1).each{ |j|
> print( " ", a[i][j] )
> }
> print( "\n" )
> }
吐いた
むしろ泣いた
メソッド定義…、この授業だと「関数定義」とか呼んでそうだが、
def ナントカ
で使い回しできる機能を自分で作ることは習った?
242:a ◆Ge868FLoWU
08/07/12 19:50:16
>241
「関数定義」という言葉は授業で出てきましたが、よくわかりませんでした。
243:a ◆Ge868FLoWU
08/07/12 20:27:25
print("Enter n: "); n = gets.chomp.to_i
if( n>30 || n<0 ) then
n = 10
end
a = Array.new( n )
a[0] = [1]
i = 0
j = 0
if j = 0 || j = i
then
a[ i ][ j ] = 1
else
a[ i ][ j ] = a[i-1][j-1]+a[i-1][j]
end
(0..a.length-1).each{ |i|
(0..a[i].length-1).each{ |j|
print( " ", a[i][j] )
}
print( "\n" )
}
自分なりに考えてみた結果、こうなったんですが、やはりエラーが出ます↓
Enter n: >Exit code: -1073741510
(´;ω;`)
244:デフォルトの名無しさん
08/07/13 02:39:00
添削:
a.each {|i| i.each{|j| print j, " " }}
puts
inject版とか作ってくれ
245:デフォルトの名無しさん
08/07/13 02:41:29
puts a.flatten.join " "
flatten一発ワロタ
246:デフォルトの名無しさん
08/07/13 02:42:19
ああ、列ごとに改行いるのか(´・ω・`)
>>244 >>245じゃダメだな
247:デフォルトの名無しさん
08/07/13 02:45:29
これで
a.each {|i| puts i.join(" ")}
248:デフォルトの名無しさん
08/07/13 03:07:12
コード補完しれって、 a.each すら使わせたくないんじゃないか?
宿題出した先生は本当はCでやりたいんだと
249:デフォルトの名無しさん
08/07/13 13:44:30
コード補完は単に宿題の採点を楽にする為だと思われ
250:デフォルトの名無しさん
08/07/22 01:08:06
あらかじめ配列 ar に 100個のデータが格納される処理が,プログラムの最初で行われているものとする。その部分については書く必要はない。
ただし,ar に格納されたデータのうち負のものは,誤りを含んだデータなので集計しないようにしたい。
for ループで配列の要素を読み込んでいく,
その要素がゼロ以上の値を持つデータであれば,データの数を数え上げるとともに,データを加算していく。
ループが終了したら,上の例のように出力する。いずれの行の最後にも改行がある。
251:デフォルトの名無しさん
08/07/22 01:11:59
ar = [
4.2,29.8,5.1,19.9,3.4,15.3,11.4,1.1,24.1,28.7,0.0,30.2,-0.0,41.2,8.3,
26.8,27.4,0.5,26.2,35.8,33.7,2.0,9.4,36.8,33.2,7.8,21.6,42.7,31.4,9.3,
16.9,9.4,39.6,-0.7,40.4,43.8,26.6,16.1,38.7,4.5,14.1,4.1,7.8,10.5,26.1,
44.9,26.7,17.6,34.2,10.9,33.6,34.2,28.1,40.6,13.7,5.4,13.2,15.8,22.5,36.5,
2.0,13.1,11.2,-1.7,7.4,39.6,29.5,19.7,21.7,16.3,12.3,41.5,-2.8,13.5,40.9,
-1.7,26.9,6.7,0.7,43.8,43.0,17.4,6.9,35.4,36.2,27.6,10.6,39.8,6.4,31.3,
13.7,0.9,20.2,6.4,36.0,31.9,36.4,-1.3,-3.2,-3.2]
# 以下の部分を適当に補って作成して,下のフォームに記入しなさい。
count = 0
sum = 0.0
for i in ????
# このループの中で if 構文を使ってデータを判定して集計する。
end
print ??????
print ??????
あらかじめ配列 ar に 100個のデータが格納される処理が,プログラムの最初で行われているものとする。その部分については書く必要はない。
ただし,ar に格納されたデータのうち負のものは,誤りを含んだデータなので集計しないようにしたい。
for ループで配列の要素を読み込んでいく,
その要素がゼロ以上の値を持つデータであれば,データの数を数え上げるとともに,データを加算していく。
ループが終了したら,上の例のように出力する。いずれの行の最後にも改行がある。
例 有効なデータの数 = 13
平均値 = 23
252:デフォルトの名無しさん
08/07/22 02:13:05
ひとつ問題がある。データ1行目の後ろのほうに -0.0 という値が入ってる。
これをカウントすべきかどうかで平均値が変わる。
計測器によっては -0.0 は 0 から -0.1 を含まない領域の値を示していることがある。
題意からすると、これは負で取り除くべきデータということになる。
しかし、Ruby は 0 も 0.0 も -0.0 も同じゼロとして扱うから、特別に判断処理を入れない限り区別できない。
以下、区別しないスクリプト。
区別したい場合は if のとこを if i >= 0 && i.to_s != '-0.0' then に書き換える。
ar = [
4.2,29.8,5.1,19.9,3.4,15.3,11.4,1.1,24.1,28.7,0.0,30.2,-0.0,41.2,8.3,
26.8,27.4,0.5,26.2,35.8,33.7,2.0,9.4,36.8,33.2,7.8,21.6,42.7,31.4,9.3,
16.9,9.4,39.6,-0.7,40.4,43.8,26.6,16.1,38.7,4.5,14.1,4.1,7.8,10.5,26.1,
44.9,26.7,17.6,34.2,10.9,33.6,34.2,28.1,40.6,13.7,5.4,13.2,15.8,22.5,36.5,
2.0,13.1,11.2,-1.7,7.4,39.6,29.5,19.7,21.7,16.3,12.3,41.5,-2.8,13.5,40.9,
-1.7,26.9,6.7,0.7,43.8,43.0,17.4,6.9,35.4,36.2,27.6,10.6,39.8,6.4,31.3,
13.7,0.9,20.2,6.4,36.0,31.9,36.4,-1.3,-3.2,-3.2]
# 以下の部分を適当に補って作成して,下のフォームに記入しなさい。
count = 0
sum = 0.0
for i in ar
if i >= 0 then
count = count + 1
sum = sum + i
end
end
print "有効なデータの数:#{count}\n"
print "平均値:#{sum / count}\n"
253:デフォルトの名無しさん
08/07/22 10:03:23
> -0
=> 0
> (-0).to_s
=> "0"
254:デフォルトの名無しさん
08/07/22 12:07:59
>>253
irb> ar.all?{|e| e.is_a?(Float)}
true
255:デフォルトの名無しさん
08/07/22 12:26:52
揚げ足とってるだけかしらんけど、それがどうしたんだ?
256:デフォルトの名無しさん
08/07/22 12:36:31
・ データは全て Float だから Integer の話をしても意味がない
・ -0.0 を to_s すると "-0.0" だから指摘に関連性を見出せない
・ トリビアごっこは他の場所でどうぞ
257:デフォルトの名無しさん
08/07/22 12:53:50
なるほど、mswin32版では挙動が違うようだ
ごめんね
258:デフォルトの名無しさん
08/07/22 13:50:23
>>252さんありがとうございす。
このプログラムは,次の数列の和が, i がいくつになったときに,与えられた数を超えるのかを調べている。
sum = a1 + a2 + a3 + ... + ai + ...
ただしここで,ai は次の式で与えられる数である。
ai = i 3 - 4 * i 2
この計算を行うプログラムの不完全なリストが下にある。次の方針にもとづいて完成させなさい。
引数をコマンドライン引数として受け取り limit という整数に代入する(これはすでに書き込まれている)。
数列の和は sum という変数に加算されていくものとする。
i はループのなかで1ずつ増加するようにする。for ループと違って, iはループ変数でなく,したがって自動的に増加することはないことに注意すること(これをうっかりすると無限ループに陥る!)。
while 文を使って,sum が limit よりも小さい間 ループが回るようにする。
ループを抜けたら,結果を印刷する(これもすでに書きこまれている) 。
limit = ARGV[0].to_i
sum = 0
i = 0
while ?????
????
????
end
print "i が", i, "のときに sum は ", limit, " を超えました。\n"
259:デフォルトの名無しさん
08/07/22 13:55:16
>>258
どうでもいいが、それができないとこれからの課題の全てを全部他人が書かないといけなくなるぞ
小学校2年で九九を全く覚えなかった小学生のように窮地に陥る
260:デフォルトの名無しさん
08/07/22 13:59:49
わたしは情報系の学部ではないのでできなくても問題ありません。
ただ単位だけ欲しいんです(><)
261:デフォルトの名無しさん
08/07/22 14:02:03
うん、だから、期限までに誰も助けてくれなかったらどうするの?
262:デフォルトの名無しさん
08/07/22 14:05:27
ここは宿題を教えてもらう場ですよね?
263:デフォルトの名無しさん
08/07/22 14:07:23
ワンライナーにさせてもらえないからみんな苛立ってるんだよw
264:デフォルトの名無しさん
08/07/22 14:09:34
まあそのへんはなんでもいいけど>>258では回答は来ないだろうな
265:デフォルトの名無しさん
08/07/23 00:39:10
せめて問題文を理解して間違いなく写して下さい
266:デフォルトの名無しさん
08/07/23 01:14:19
>>265さん
わかりにくくてごめんなさい。
でも問題文はこれですべてです。コピペしてあるので・・・
267:デフォルトの名無しさん
08/07/23 05:19:11
>>266
そういうことじゃなくて朝鮮語で書けってことじゃないか?
俺はRubyは全くわからないが出題の意図は理解出来たぞ。
268:デフォルトの名無しさん
08/07/23 06:54:20
>>258
要するに課題出した側はwhileを使ってほしいんだろうが、
if文でbreakでもいいのでは
限界より計算結果が大きくなったらbreakするプログラムで
式はsum+=100として
limitとsumをしっかり初期化すればおk
そっちの方がちょっと簡単そう、それを直せば出来る
エラーで困ってるならそれで
endや条件式の等号が==じゃなくて代入=になってないかとか
確認して、
#if・・・
if 1+1==2とかバグがありそうな行をコメントにして、代わりを書いて実行する
バックアップとりまくってアンドゥは1万回でも出来るような環境を利用する
警告出たっけ
269:デフォルトの名無しさん
08/07/23 10:51:03
初心者の俺が作ってみた
limit = ARGV[0].to_i
sum = 0
i = 0
while sum <= limit
i += 1
sum += i**3 - 4*i**2
end
print "i が", i, "のときに sum は ", limit, " を超えました。\n"
270:269
08/10/10 21:37:16
せっかく解いたのにお礼がこないね (´・ω・`)
271:デフォルトの名無しさん
08/10/11 16:05:24
お礼が言えるようなまともな奴なら、
そもそも宿題を人に聞いたりはしない。
俺らは粛々と利用されておけば良い。
272:デフォルトの名無しさん
08/10/12 20:29:21
お返事遅くなりまして大変申し訳ありません
ありがとうございました
273:デフォルトの名無しさん
08/10/20 13:12:25
rubyの知識が皆無なのに課題だされて途方にくれています。
誰か教えていただけると幸いです><
WikipediaAPIをrubyで使いたいのですが(実はこの意味もわかってないです
URLリンク(wikipedia.simpleapi.net)
上記のページでも紹介されている
URLリンク(d.hatena.ne.jp)
を参照し、コピペして実行すると
c:/ruby/lib
ruby/site_ruby/1.8/rubygems/custom_requre.rb:27:in'gem_original_require':
no such file to load --sinple_wikipedia_api(LoadError)
fro c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_requre.rb:27:in'reqire'
というエラーが出てきます。
きっと根本的なことが間違っているんですが…どうすれば使えるようになるので
しょうか?
何かインストールしたりする必要があるんですかね。
正直参照したページも色々理解できてません。馬鹿ですみません。
274:デフォルトの名無しさん
08/10/20 16:08:51
>>273
課題の資料読め
275:デフォルトの名無しさん
08/10/20 19:35:48
課題に資料ないんですよ。
WikipediaAPIをrubyで使えれるようにするといわれただけなので…
276:デフォルトの名無しさん
08/10/20 19:55:17
>275
エラーメッセージよく読め。
スペルミスしてないか?
277:デフォルトの名無しさん
08/10/21 09:06:06
sinple_wikipedia_api www
278:デフォルトの名無しさん
08/10/21 19:36:03
この課題、よそのライブラリとか使ってもいいの?
ライブラリ作るのが課題なんじゃないの?
279:デフォルトの名無しさん
08/10/21 19:39:26
課題本文を見ないことにはなんともな
280:デフォルトの名無しさん
08/10/22 00:07:11
質問者の意図は放置してシンプルなのを作ってみた
require 'kconv'
require 'uri'
require 'net/http'
def wikipedia(keyword,query={})
query[:keyword] = URI.escape(keyword.toutf8)
uri = URI('URLリンク(wikipedia.simpleapi.net)')
uri.query = query.to_a.map{|a| a.join('=')}.join('&')
Net::HTTP.get(uri)
end
puts wikipedia('ギコ猫',:output=>:html).toeuc # tosjis,etc
281:デフォルトの名無しさん
08/10/22 19:40:34
>>276
エラーメッセージみても意味不明だったんで聞きました
>>276
コピペなんで何がどう間違えてるかわかりませんでした
>>277
PCから書き込めず携帯で打って間違えましたw
>>278
ライブラリ…?とりあえずできればよそのでも!
>>279
課題というか口頭命令でして…
>>280
動きました!ありがとうございます!!!
本当に感謝です。でもなんでこんなにシンプル…凄いです…
282:デフォルトの名無しさん
08/10/22 20:06:17
・ Rubyに興味はなく、それをやれば終わり
・ それはRubyに関わる始まりに過ぎない
どっちなのかによって回答が大幅に違うと思われる
283:デフォルトの名無しさん
08/10/22 21:19:07
あと半年ほどやらないと卒業できないんです
なので後者ですかね…実際会って教えていただきたいものです
284:デフォルトの名無しさん
08/10/22 21:31:53
あーそりゃ色々な意味で無理だ、今年は諦めて来年に回せ
というか、このタイミングで
・ 勝手ライブラリの WikipediaAPI 使え
・ 使ったことのない Ruby 使え
という指示が出るというのは研究はいったい何なんだろう
285:デフォルトの名無しさん
08/10/22 21:36:57
必修のコンピュータ使用の授業なんじゃないかなあ
その割にはいろいろヘンだが…
とりあえず、Rubyの入門を適当に学ぶしかないな
286:デフォルトの名無しさん
08/10/22 21:39:39
無理ですか><
来年社会人なるのでRubyは多分使いませんww
研究は詳しくは言えないのですが涙目です…;;
287:デフォルトの名無しさん
08/10/22 21:51:57
>>286
「話せない」のなら無理だ
君は自分のやることを理解していない
教官もこんなのが残ってて困ってることだろう
288:デフォルトの名無しさん
08/10/22 22:09:26
おっしゃる通りです…全く迷惑だと痛感してます
何をしたいか概略は話せますがこれを見られ特定されるのは痛いので…
先行研究の技術的な部分で教授に言われることをしている感じなんです
289:デフォルトの名無しさん
08/10/22 22:28:45
あのあれだ、
「○○の××を用いた場合の△△手法開発における基礎的研究」とか
ものすごい注釈つきまくった浅い卒論になる奴だな
3年から本気でやらないからそんな題名レベルで異常に恥ずかしい俺何もやってませんでした的なものになる
履歴書に卒論題名書いたことでむしろ落とされるというレアな経験をお前も体験するんだ
とりあえず、本当はRuby関係ないんじゃね?
欲しいのはWikipediaのデータなんじゃないかと
290:デフォルトの名無しさん
08/10/22 22:41:04
就職先はすでに決まりました
ついでに女です
291:デフォルトの名無しさん
08/10/22 22:48:45
小出し君に構うと損するぞ
292:デフォルトの名無しさん
08/11/01 23:39:41
最近記憶が飛ぶんです
293:デフォルトの名無しさん
08/11/06 15:18:56
質問なんですが
windowsではプロセスってつかえないっすか?
294:デフォルトの名無しさん
08/11/06 15:28:47
使えますが。
Process クラスの使い勝手は Unix と違ってくるかもしれん。
295:デフォルトの名無しさん
08/11/06 21:55:11
ありがとうございます。よく調べてみます!
296:デフォルトの名無しさん
08/11/08 23:05:21
URLリンク(upload.fam.cx)
297:デフォルトの名無しさん
08/12/24 14:58:22
test
298:デフォルトの名無しさん
08/12/30 03:01:09
>>272
もういないだろうけど小●先生はきっとここ見てると思うよ
299:デフォルトの名無しさん
09/01/01 11:48:51
299
300:デフォルトの名無しさん
09/01/01 11:49:35
300
301: 【小吉】 【1044円】
09/01/01 11:52:07
○
/⌒\ (__)
\●/(__)/⌒\
∩ ( ・ω・ )\●/ あけましておめでとうございます
Y  ̄ ||y||  ̄`''φ
Lノ /ニ|| ! ソ >
乂/ノ ハ ヽー´
`ー-、__|
ことしもよろしくね☆
302:デフォルトの名無しさん
09/01/04 23:07:19
100マス計算をするプログラムを書いてください。
プログラムがランダムに出題し、人間が100個の
マスに回答を入力し、確認ボタンを押すと
全問正解なら回答にかかった時間を表示して終了。
間違った場合は間違った場所にカーソルが止まり、
別の値が入力されるまで待ちます。
横10個、縦10個の数字は各々11~99までの乱数、
演算は +,-,x のみでよいです。
よろしくおねがいします。
303:デフォルトの名無しさん
09/01/05 00:33:25
>>302
全然宿題じゃないだろこれw
仕事頼むなら金出せよ
304:デフォルトの名無しさん
09/01/05 01:13:00
>>302
URLリンク(www.imymode.com)
作成方法について
作り方を公開する予定は今のところないのですが、実際プログラムは驚くほど簡単です。
10×10のマスにランダムに数字を入れて、それを計算と会っているかどうかチェックするだけです。プログラムを始めたばかりの方の勉強として作るにはちょうどいいかもしれません。
がんばってくださいね。
305:デフォルトの名無しさん
09/01/05 01:14:09
おまいらそんなレスでお茶を濁していていいのか
Python宿題スレでも見て来い
306:デフォルトの名無しさん
09/01/05 01:19:34
この百マス計算で、わが娘はギュウギュウ絞られ、はじめは7分とか8分かかって指折り数えながら問題を解いていましたが、この紙を200枚近く消化することで最近は3分あまりで問題を解くようになりました。
自分の小学生時代を思い起こせば、無駄な労力と思います。こんなことをしなくても足し算の答えなんて変わらないのだから、その分少しでも余分に遊んで暮らしたいと小学生なら思うことでしょう。
ところが大人になって、九九の答えより足し算の答えのほうが出しにくいことを悟ってからは、人間多少はこんな理不尽な労働もしておく必要があったことを少しはわかりました。
第一の試練は、人生最大の難関だった就職試験に「クレペリン検査」が含まれていたことです。
10分ほどの時間を限られて、数字の列をただ足していくテストですが、私は1分で50ほどしか足し算ができず、本当は正答数より仕事上のムラや能率を調べるテストなはずですが、自分の能力の低さを改めて思い知らされることになりました。
それに追い討ちをかけるように、検査の間の休息時間に試験官がこんなことを言い出したのです。
「この検査ねえ。私は長年やっているけれども一人だけ、いたね。1分間で百問全部できる人が。傾向も何もわかったものじゃない。まあ、能力が高いといえばそれまでなんだけどね。」
試験中にそんなことを言い出す試験官もけっこう珍しいとは思います。
その後、私の受験勉強にクレペリン検査対策が含まれたのは言うまでもありません。ちょっとやっておけば少なくともうろたえないで済みます。
第二の試練は、「脳を鍛える大人のDSトレーニング」の登場です。
私も鍛えられなければボケる歳になってしまいました。
307:デフォルトの名無しさん
09/01/05 08:24:08
URLリンク(ja.wikipedia.org)
いじめとかそういう思い出がいつのまにか美化されるようなのと似た話だな。
308:デフォルトの名無しさん
09/01/05 08:33:29
URLリンク(ja.wikipedia.org)
老人にボケが発生するのは
死を待つ苦しみを和らげるためらしい
309:デフォルトの名無しさん
09/01/05 10:19:00
require 'tk'
class Drill100
PACKOPT = {:side=>:left,:fill=>:both,:expand=>true}
PACKOPTF = {:side=>:top,:fill=>:both,:expand=>true}
CELLOPT = {:width=>3}
def initialize(root)
@root = root
@root.title = '100マス計算'
@size,@min,@max = ( $test ? [2,0,9] : [10,11,99] )
@column,@row,@cells = [],[],[]
f = TkFrame.new(@root).pack(PACKOPTF)
@reset = TkButton.new(f,:text=>'切替',:command=>proc{init}).pack(:side=>:left)
@start = TkButton.new(f,:text=>'開始',:command=>proc{start}).pack(:side=>:left)
f = TkFrame.new(@root).pack(PACKOPTF)
@op = TkLabel.new(f,CELLOPT).pack(PACKOPT)
@size.times {|i| @column << TkLabel.new(f,CELLOPT).pack(PACKOPT) }
@size.times do |i|
f = TkFrame.new(@root).pack(PACKOPTF)
@row << TkLabel.new(f,CELLOPT).pack(PACKOPT)
@cells << []
@size.times {|j| @cells[i] << TkEntry.new(f,CELLOPT).pack(PACKOPT) }
end
end
def init
@reset.state = :normal
@start.configure(:text=>'開始',:command=>proc{start})
@op.text = {'+'=>'-','-'=>'*','*'=>'+'}[@op.text] || '+'
[@column,@row].each {|labels| labels.each {|l| l.text = random(@min,@max).to_s }}
@cells.each {|line| line.each {|cell| cell.state = :disabled }}
end
# つづく
310:デフォルトの名無しさん
09/01/05 10:20:05
# つづき
def start
@reset.state = :disabled
@start.configure(:text=>'確認',:command=>proc{check})
@cells.each {|line| line.each {|cell| cell.state = :normal ; cell.value = '' }}
@cells[0][0].focus
@starttime = Time.now
end
def check
@endtime = Time.now
@cells.each_with_index do |line,r|
line.each_with_index do |cell,c|
y,x = @row[r].text.to_i,@column[c].text.to_i
case @op.text
when '+' then answer = y + x
when '-' then answer = y - x
when '*' then answer = y * x
end
( cell.focus ; Tk.bell ; return ) if answer != cell.value.to_i
end
end
time = @endtime - @starttime
TkDialog.new(@root,:buttons=>[:OK],:message=>"#{time.to_i}秒かかりました")
init
end
def random(min,max) ; rand(max - min + 1) + min ; end
def run ; init ; Tk.mainloop ; end
end
# $test = true
Drill100.new(Tk.root).run
311:デフォルトの名無しさん
09/01/05 10:52:54
# 修正
# >>309 initialize の中ほど
@reset = TkButton.new(f,:text=>'切替',:command=>proc{init}).pack(PACKOPT)
@start = TkButton.new(f,:text=>'開始',:command=>proc{start}).pack(PACKOPT)
# >>310
def check
time = Time.now - @starttime
op = {'+'=>proc{|y,x| y+x},'-'=>proc{|y,x| y-x},'*'=>proc{|y,x| y*x}}[@op.text]
@cells.each_with_index do |line,r|
line.each_with_index do |cell,c|
answer = op.call(@row[r].text.to_i,@column[c].text.to_i)
( cell.focus ; Tk.bell ; return ) if answer != cell.value.to_i
end
end
TkDialog.new(@root,:title=>'全問正解',:buttons=>[:OK],:message=>"#{time.to_i}秒かかりました")
init
end
312:デフォルトの名無しさん
09/01/05 11:12:45
もしかして減算は上の値から左の値を引くのかな
だったらcheckメソッド内の '-'=>proc{|y,x| y-x} を {|y,x| x-y} に修正
313:デフォルトの名無しさん
09/01/06 02:37:04
生きるだけなら人の一生は長い。
しかしそれ以外するには時間が足りない。
うまくなりたいなら毎日やる。
ひとつだけならまだしも
二つとなるとハードルは一気に上がる。
そしてそのことを悩むとなれば三つとなりまたあがる。
ならばいっその事悩まずに
やってしまえばいい。
一人今、この体での一度きりの人生。
悔いを残すくらいなら今を生きて
今できることをすればいい。
焦っても仕方のないことだから
歩いていこうどこまでも。
「人生は何かを成し遂げるには短すぎるものだが、何もしないとすれば長すぎる」
孔子
314:デフォルトの名無しさん
09/01/06 20:37:16
>>313
URLリンク(www.iknow.co.jp)
315:デフォルトの名無しさん
09/01/11 02:03:14
RubyでGUIアプリケーションは作成可能でしょうか?
友人からは、GUIアプリケーションは
VC++、VBとかじゃないと無理と聞いたのですが・・・
316:デフォルトの名無しさん
09/01/11 02:07:26
可能か不可能かだけを答えるなら、可能。
317:デフォルトの名無しさん
09/01/11 03:46:03
いろいろあるよ
URLリンク(jp.rubyist.net)
318:デフォルトの名無しさん
09/01/11 07:31:51
ていうか初心者スレでロクに相手されなかったからってマルチはよくねえな
ボタンなんかをくっつけてマウス操作に対応させることはできるが、GUIをメインに作る言語よりは絶対に劣る
ビジュアルなんとかの言語はGUI作成のフォローが半端ないから作るのが簡単
RubyでGUIをやるということは「わざわざ難しいやり方でイマイチなものを手間隙かけて作る」ことに他ならない
319:デフォルトの名無しさん
09/01/11 07:52:21
>>318
馬鹿ですね
わかります
320:デフォルトの名無しさん
09/01/11 09:19:41
>>315
>VC++、VBとかじゃないと無理と聞いたのですが・・・
釣りだろうけど
そんなことはないよ
URLリンク(wxpython.org)
321:デフォルトの名無しさん
09/01/11 09:37:13
「できる」と「やりやすい」の間には深く暗い溝がある
下手に「できる」と言わないほうがいいこともあるのさ
正確であることがいいこととは限らない
322:デフォルトの名無しさん
09/01/11 10:45:16
無理か無理じゃないかの溝のほうがでっかいけどな
323:デフォルトの名無しさん
09/01/11 10:53:29
つか、Aというプログラミング言語で可能なことがBというプログラミング言語で可能かどうかという問いには
多くの場合「そりゃやろうと思えば不可能じゃないけどぉ…」という留保つきの回答がほとんどだろ
324:デフォルトの名無しさん
09/01/11 11:33:38
Pythonは楽だけどRubyではしんどい
VBは楽で良いと思う
C++が楽というのは同意しかねる
C#の間違いじゃないのか
325:デフォルトの名無しさん
09/01/11 11:47:44
他人にやらせるのが一番いいよ
326:デフォルトの名無しさん
09/01/11 20:05:38
URLリンク(japanese.joelonsoftware.com)
327:デフォルトの名無しさん
09/01/17 15:15:14
宿題じゃないですが、これより強いジャンンケン戦略作れます?
URLリンク(www.ceres.dti.ne.jp)
328:デフォルトの名無しさん
09/01/17 16:06:38
/ /::// : : : : : : : i: : : ∧\: : : : :∧: :\ : : : : : : : : : ヽ.: : :|ム: : : : : : : : : : :
/ /://.: : : : : : :i : |: : : : ∧: ヘ: : : :∧: ::ム._: : : : : : : : :.l: : :|ム!: : : : : : : : : :
. / / .|.: : : : : : : |: :ム、: : ∧.ヘ ><´ ̄\ヘ`,ハ: : ム、 ハ: : |ム!: : : : : : : : : :
,'. |: : :i: : :i: : ハ,斗―.、: :∧ ヘ r',ィ==寸ュ、_,ハ: : i: |: : |: : |ム!: : : : : : : : : :
i | :|: i : : i: : :ヘ、〉zュ、\::ヘ. .\ '´ f⌒付ハヘ〉!|: |: |: : 「.ヽ!ム!: : : : : : : : : :
| |: |: i : : i: : : : r{.「⌒ヽ \ヘ. ` .kr'...::i:::::!′|: |: | : fい lム!: : : : : : : : : : :
| .| ∧ヘ: : :ヘ: : : N kr'::ム ヽ Vし'ク;ソ .|: |: |: / .メム!: : : : : : : : : : :
. N ヽ \: :\:`ヽ. Vし! `ー " ノ ル' / |/ Nム: : : : : : : : : : :
. '. \ \: :\∧ゝノ. . |: /.i .|. | Vム: : : : : : : : : :
. \|丶: : ∧. ` __ ,イ レi i. | .| i.Nム: : : : : : : : : :
|: :i: : 「`ヽ. ヽ ) / | i i. | .| i.|. Vム: : : : : : : :
|: :i: : | .,≧、 / | i i. | .| i.| Vム: : : : : : : :
-‐-、j: :i: :i.| / } ` rュ-1´ ,ィ| i i .L__ | i.| Vム: : : : : : :
. { ヽi i.|‐/ .ノ_,ィj .>! r<´ | i i .! `ヽ L__ Vム: : : : : :
`ヾ. └-イ / / ト、_}-{_ァ|. | i i | 、丶ヽy'¨ ̄`Vム__: : : : 受験生の皆さん
/ | `ー-‐'´ ̄ ̄`Y. .〈. ノ≧{:::{≦.、 | i i |. \/ }ム}. 〉 センター試験
. /. |、 、____,斗-!、/.::/:/:/|「|:∧:::〉| i i |、 >' ./ム! / 頑張って下さい
{ | ノ―〈/::/.:||::!:::::V. | i i |/ ./ム! /
329:デフォルトの名無しさん
09/01/17 16:17:36
>>327
これより強い戦略ってどういう意味で言ってるの?
330:デフォルトの名無しさん
09/01/17 16:30:54
>>329
よく考えたらじゃんけんで強い戦略なんてないですよね?
class NoStrategy < Strategy
def nextHand
Hand.new.getHand(rand(3))
end
end
として、このNoStrategyに対して常に5割を上回る勝率が出せる戦略ってあるのでしょうか?
さしずめ今回の問題に関しては、WinningStrategyに対してProbStrategyより高い勝率で勝てる
戦略って感じでしょうか。
331:デフォルトの名無しさん
09/01/17 16:38:32
>>330
ランダムに出す
332:デフォルトの名無しさん
09/01/17 21:18:56
33.33%以上はみり
333:デフォルトの名無しさん
09/01/17 21:19:54
33.33%以上は33.333%
334:デフォルトの名無しさん
09/01/18 09:24:33
人間は、直前に出した手と同じ手はあまり出さなかったりするようなクセがあるので、
人間がじゃんけんに出す手はランダムとは限らない。つまり、繰り返す場合は出してくる
手をバイグラムとかで分析して対応すれば期待値以上いく可能性はある。
というかざっと見た感じ、historyってのでなんかそれらしいことやってるね。
335:デフォルトの名無しさん
09/01/18 10:01:16
一番咄嗟に出やすいのがグーだと言われている
その次がパー
意識して出さないと出ないのがチョキ
336:デフォルトの名無しさん
09/01/18 10:09:08
L字のチョキはパーより上
337:デフォルトの名無しさん
09/01/18 10:51:37
>>335
「グーで負けた。グーで負けるというのは、保守的なために敗北したかのような、苦い後悔が残るものだ。 」
338:デフォルトの名無しさん
09/01/18 11:26:54
サザエさんが番組の終わりに出す手は
グー 282回
チョキ 308回
パー 283回
(1991-2009)
これ豆知識な
339:デフォルトの名無しさん
09/01/20 20:08:26
宿題ではなく、Hobby です。カレンダーデータを10年程度出力したいので以下のスクリプト
を作りました。コードと出力が美しくありません。
require 'date'
day=Date.new(2009,1,18)
for i in 1..5000
day=day.next
case day.wday
when 0
then printf("%s","日,")
when 1
then printf("%s","月,")
when 2
then printf("%s","火,")
# 中略
end
puts day.strftime("%Y%m%d,%Y,%b,%m月,%d,%a,%w,%W")
end
day.wday から月、火を出力するコードが冗長です。rubyらしくしたい。
月や日の表示がいつも2桁になります。01月ではなく1月にしたい。以上です。
340:デフォルトの名無しさん
09/01/20 20:11:45
Rubyらしくって話ならforはあまりというかほとんど使わない。
341:デフォルトの名無しさん
09/01/20 20:20:01
カレンダーは定番で安定だな
> day.wday から月、火を出力するコードが冗長です。
そういうときは、たとえばHashを使う
今回に限っては配列でもいいけれど
require 'date'
weekdays = {0 => '日', 1 => '月', 2 => '火',3 => '水', 4 => '木', 5 => '金', 6 => '土' }
puts weekdays[Date.today.wday]
342:デフォルトの名無しさん
09/01/20 20:44:16
>>339
require 'date'
day = Date.new(2009,1,18)
last = Date.new(day.year+1, day.month, day.mday)
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
while day < last do
wday = weekdays[day.wday]
puts day.strftime("%Y%m%d,%Y,%b,%-m月,%-d,#{wday},%w,%W")
day = day.next
end
もしかしたら、%-m や %-d は動作しないかもしれない
343:デフォルトの名無しさん
09/01/20 20:46:02
>>340
そうですね。 5000.times とかで書けるのでしょうか。
344:デフォルトの名無しさん
09/01/20 20:56:54
>>342
動きました。ちゃあんと1桁表示、2桁表示、自動的に変わります。
あ、ありがとうございました。なんというスピード。驚きました。
345:デフォルトの名無しさん
09/01/20 22:00:52
最悪で12回のメソッド呼び出し->O(1)
が何回もだもんなぁ。
346:デフォルトの名無しさん
09/01/20 22:30:55
wday = '日月火水木金土'[day.wday*2,2]
たぶんソースが2バイトにならないエンコード(UTF-8とか)だとだめ
347:デフォルトの名無しさん
09/01/20 22:32:15
>>346
測定可能な負荷または速度の差は発生しないか、たぶんハッシュのほうが誤差レベルで速い
348:デフォルトの名無しさん
09/01/20 22:41:20
>>346
これでよくねえ?ハッシュにする意味がわからんw
いやまあ結果的に全然問題ないし、もっと一般的な話なんだろうけど
puts %w[日 月 火 水 木 金 土][Date.today.wday]
349:デフォルトの名無しさん
09/01/20 22:45:35
>>342さんのをちょいじってみた。
Date#uptoがあるとさっき知ったもので。
require 'date'
y, m, d = 2009, 1, 18
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
Date.new(y, m, d).upto Date.new(y.succ, m, d.pred) do |day|
puts day.strftime("%Y%m%d,%Y,%b,%-m月,%-d,#{weekdays[day.wday]},%w,%W")
end
350:デフォルトの名無しさん
09/01/20 22:49:56
>>348
自分が書き捨てるなら配列を使う
ただ、これは「たまたま」 Date#wday の返り値が0から始まって抜けなく6まで連続していたから可能な
きわめて特殊な事例に過ぎないと考える
「case文が単純なルックアップしかしないのになんか冗長」という人に教えるのは
{条件 => 値} の Hashであるべきだと思うよ
351:デフォルトの名無しさん
09/01/20 22:53:46
0~6ってシンボルになるんかな
352:デフォルトの名無しさん
09/01/20 22:59:07
>>351
うんにゃ、Integerクラスのオブジェクト、つまりただの整数
RubyのHashのキーは、あらゆるオブジェクトを指定できる
文字列しか指定できないようなイメージがどうしても付きまとうが、本当は何でもいい
あとで変化してしまうようなものを指定するとキー名では取り出せなくなるけどな
353:デフォルトの名無しさん
09/01/20 23:19:25
wdayが0-6を返すのもmonが0-11なのも、「たまたま」でも「特殊」でもないよ
Cの構造体「struct tm」がベース、配列を使う事を前提に0からの連番になってる
こればどの言語でもほぼ共通してるからフツーは>>348風の記述になる
354:デフォルトの名無しさん
09/01/20 23:21:33
case → コレクションの変換というカテゴリにおいては「たまたま」でも間違ってないと思う
ここで配列じゃツブシが利かんわけで、宿題スレにはいまいち不向き
355:デフォルトの名無しさん
09/01/20 23:26:11
ロケールを適切にすればstrftimeで日本語の曜日が出てこないかね
356:デフォルトの名無しさん
09/01/20 23:57:20
>>355
あいにく、rubyの標準実装ではハードコーディングされているので㍉
357:デフォルトの名無しさん
09/01/21 00:07:37
cronで動かしたときだけシェルスクリプト中のなんかどっかの何かが違ってうまくいかん、という
めんどくさいデバッグの経験があると、ロケールに頼る出力は嫌がるね
358:デフォルトの名無しさん
09/01/25 18:16:41
オリジナルのrubyプログラムを作成しなさい。繰り返しや条件分岐といった
プログラミングの基本要素が含まれていればどんなものでも構いません。
ただし、20行以上の長さである事と、口頭試問によるプログラムの説明
をしてもらいます。
という課題が今日でたのですが、期限が明日までです。。。
誰か助けてください。
359:デフォルトの名無しさん
09/01/25 18:18:22
> 課題が今日でたのですが、期限が明日までです
うひゅ
まあどんなものでもいいというのなら、何かかんたんなゲームでも作ればいいんじゃね
説明もしやすかろう
360:デフォルトの名無しさん
09/01/25 18:21:16
プログラムはまあ出来るけど
>口頭試問によるプログラムの説明
こっちは助けられないぜ?
課題は簡単だから、とりあえずチュートリアル読んで自分で理解しないと
口頭試問はパスできないと思う。
URLリンク(www1.tf.chiba-u.jp)
361:デフォルトの名無しさん
09/01/25 18:26:52
他愛のないゲームは割とお勧めだが、
意外とめんどいのでじゃんけんはやめたほうがいいとアドバイスはしておく
自作の場合は「これなんでここをこういうふうにしたの?」に答えられないとかありえないからな
他人が作ったのではどうにもなるまい
362:デフォルトの名無しさん
09/01/25 18:31:21
これはいい課題だなw
363:デフォルトの名無しさん
09/01/25 18:34:51
下手に1週間とか期間長くすると
ファイル4つくらいでダウンローダー作ってくる空気読めない昔の俺みたいなのが混じるからな
1日でちっちゃいの適当に作れというのは妥当だ
てか、授業受けてて「あーじゃあこれでこういうプログラム作るとこんな動きするんだなー」とか思わなかったのかね
思わないんだとしたらどんなもの作ろうかさっぱり思いつかない可能性はあるな
364:デフォルトの名無しさん
09/01/25 18:41:13
URLリンク(www1.tf.chiba-u.jp)
ってどうやって見るんですか?文字化けしてわけが分かりません。。
質問ばかりで申し訳ない
365:デフォルトの名無しさん
09/01/25 18:42:22
>>364
use firefox
366:デフォルトの名無しさん
09/01/25 18:43:48
よく初心者が始める数当てゲームがいいんじゃないの?
367:デフォルトの名無しさん
09/01/25 18:44:59
なべあつ問題か、FizzBuzzでもいいのかもだが、
20行以上になるかな?
368:デフォルトの名無しさん
09/01/25 18:47:58
まあどんなプログラムを書くかも問題だが
とりあえず授業で出てきた関数/メソッド/構文を使うほうがいいぞ
そうでないと授業受けてないのがバレてツッコミが厳しくなることは容易に想像できる
369:デフォルトの名無しさん
09/01/25 18:48:59
>>364
どのブラウザか知らないが、
大抵は[表示]-[エンコード]みたいなメニューがあるから、そこでエンコードをUnicode(UTF-8)にする
ってかIE7、Firefox3、Opera9全部で正常に表示されたが
370:デフォルトの名無しさん
09/01/25 19:27:46
>>368
関数って何ですか?
371:デフォルトの名無しさん
09/01/25 19:41:19
授業で使ってない言葉使うのはまずいよね
372:デフォルトの名無しさん
09/01/25 19:53:45
>>370
hage("test");
↑
この hage って奴が関数
puts 1234.to_s
↑
これも関数だけどRubyでは
この . の後のつくのはメソッドという
373:デフォルトの名無しさん
09/01/25 20:04:42
>>372
Rubyには関数は存在できない
374:デフォルトの名無しさん
09/01/25 20:09:09
hage()もメソッドなんだけど便宜的に関数と呼ばれたりする
それを許さず関数とか言った途端に怒り出すのは狂信者
375:デフォルトの名無しさん
09/01/25 20:12:29
煽りにも気付かずに頑なに関数と言い放つ人をいじめたくなるのは分からんでもない
376:デフォルトの名無しさん
09/01/25 20:14:27
「クラスやメソッド」という言葉にそれ以外のものが混じる余地がないのがそれこそ普通だと思う
377:デフォルトの名無しさん
09/01/25 20:20:32
授業聴いてなかったと思われるから不利
378:デフォルトの名無しさん
09/01/25 20:25:50
出席すらしてないかも。
379:デフォルトの名無しさん
09/01/25 20:26:21
「宿題でこんなん作りましたがどうですか」でない時点で匙は投げてるだろ
380:デフォルトの名無しさん
09/01/25 20:41:20
いま、チュートリアル見ながらやってます。ありがとうございました。
また、途中で分からなくなったらよろしくお願いします。
381:デフォルトの名無しさん
09/01/25 21:33:28
オリジナルのrubyプログラムを作成しなさい。繰り返しや条件分岐といった
プログラミングの基本要素が含まれていればどんなものでも構いません。
ただし、20行以上の長さである事と、口頭試問によるプログラムの説明
をしてもらいます。
という課題が今日でたのですが、期限が明日までです。。。
誰か助けてください。
382:デフォルトの名無しさん
09/01/25 21:46:28
課題が思いつかないなら
数あてゲームや簡単なフィルタ(ファイルからのキーワード検索や大文字小文字変換とか)
でいいんじゃないの?
丸ごと考えろというならこんなところで聞いてないで適当にググって見つけた
ソースをコピベしたほうが早い
383:デフォルトの名無しさん
09/01/25 22:26:59
while true
384:デフォルトの名無しさん
09/01/25 23:51:57
[1] 授業単元: スクリプトプログラミング
[2] 問題文:curses及びファイル等機能拡張を実装したLifegameを作成しなさい。
[3] 環境
[3.1] OS:Mac OS X Leopard
[3.2] バージョン: Ruby 1.8.6
[3.3] 言語: Ruby
[4] 期限: 2009年01月27日21:00まで
[5] その他の制限: 特になし
385:デフォルトの名無しさん
09/01/25 23:53:00
require 'win32ole'
s = WIN32OLE.new('SAPI.SpVoice')
vs = s.GetVoices
naoko = nil
(0 .. vs.Count-1).each do |i|
id = vs.Item(i).Id
puts id
if (id.match(/LHNAOKO/))
naoko = vs.Item(i)
end
end
s.Voice = naoko
s.Rate = 5
s.Speak('課題が思いつかないなら', 2)
s.Speak('数あてゲームや簡単なフィルタ', 2)
s.Speak('(ファイルからのキーワード検索や大文字小文字変換とか)', 2)
s.Speak('でいいんじゃないの?', 2)
s.Speak('丸ごと考えろというなら', 2)
s.Speak('こんなところで聞いてないで', 2)
s.Speak('適当にググって見つけた', 2)
s.Speak('ソースをコピベしたほうが早い', 2)
386:デフォルトの名無しさん
09/01/26 00:45:46
女性の声はやめてほしいw
387:デフォルトの名無しさん
09/01/26 00:57:07
>>384
機能拡張前のLifegameのソースよこせ
388:デフォルトの名無しさん
09/01/26 01:11:47
URLリンク(metatoys.org)
389:デフォルトの名無しさん
09/01/26 01:49:08
ライフゲームくらいになると授業とは無関係に作ることができるから、
授業で作ったベースのものがないと頓珍漢なクオリティのしかできあがらないな
390:384 ◆tu89IYB51k
09/01/26 03:40:37
URLリンク(kansai2channeler.hp.infoseek.co.jp)
遅くなってすいませんベースです、どうもCursesのほうは実装されているようにも見えるのですが
恥ずかしながら授業にほとんど出てなかったため内容がほとんど理解できてません・・・
本当に申し訳ありませんがそれも含めてどうかお願いします
391:デフォルトの名無しさん
09/01/26 03:52:42
素直にCで授業やれよ、と思う
392:デフォルトの名無しさん
09/01/26 04:21:25
>[2] 問題文:curses及びファイル等機能拡張を実装したLifegameを作成しなさい。
これだけ読んでも、何作りゃいいのかさっぱりわからんのだが
ファイルをどうすりゃいいの?
393:デフォルトの名無しさん
09/01/26 04:42:07
#
# 初期盤面
#
def init()
$field=[
[1,0,0,0,0,0,1,0,0,0],
[1,0,0,1,0,0,0,0,1,0],
[0,0,1,1,0,0,1,0,0,0],
[0,0,0,1,0,1,0,0,0,0],
[0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,0,1,0],
[0,0,0,0,1,1,0,0,1,0],
[0,1,0,0,1,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0]]
# 盤面の大きさの設定(H=行数、W=幅)
$H=$field.size
$W=$field[0].size
$FP=open("lifegame.log","w")
end
394:デフォルトの名無しさん
09/01/26 04:42:56
def savefield()
for line in 0..$H-1
for col in 0..$W-1
$FP.print($field[line][col]==1?"o":"_")
end
$FP.print("\n")
end
end
##############
#
# MAIN
#
init()
createtmp()
init_screen() # curses 画面初期化
begin
crmode # リターンキーなしで文字入力を許す
for generation in 1..20
printfield()
$FP.print("Generation:",generation,"\n")
savefield()
nextgeneration()
copynext()
c=getch()
printf("[%x,%c]",c,c)
if( c==97 || c==0x1B )then; break; end
end
ensure
close_screen() # 画面を閉じる
$FP.close
end
395:デフォルトの名無しさん
09/01/26 04:46:34
出題者の書きたかったことの意図を汲んで、世代のログをファイルに保存してみた
正直、この書き方は気持ち悪くて仕方ない
Rubyでなくてもいい書き方をRubyでやる意味って確かにないよな
元のファイルの最初の init()…end を>>393で置き換えて、
最後の
##############
#
#
# MAIN
#
のとこを>>394で置き換える
##############
の前にdef savefield()…endがある状態
396:384 ◆tu89IYB51k
09/01/26 16:41:46
回答ありがとうございます、レスが遅くなってすいません。>>395を参考に置き換えてみたのですが
ruby: invalid option -1 (-h will show valid options) (RuntimeError)
とエラーが出て実行できません。たびたび申し訳ありませんがこのエラーの解決方法を教えてもらえませんか?
どうかよろしくお願いします
397:デフォルトの名無しさん
09/01/26 16:50:46
>>396
URLリンク(kansai2channeler.hp.infoseek.co.jp)
398:384 ◆tu89IYB51k
09/01/26 17:53:38
すいません、自分で統合してみたファイルのurlをつけるのを忘れてました
URLリンク(kansai2channeler.hp.infoseek.co.jp)
あと>>397さんのを試したところエラーは表示されなくなりましたが
Lifegameが表示されなくなってしまいました
399:デフォルトの名無しさん
09/01/27 14:01:03
> 恥ずかしながら授業にほとんど出てなかったため
ご両親はお前のために命を削って働いて
決して安くない授業料を捻出しているのに、
お前ときたら……。
400:デフォルトの名無しさん
09/01/27 14:42:46
親の教育のせいだね
401:デフォルトの名無しさん
09/01/27 14:48:07
まあ半分くらいはそうだな
402:デフォルトの名無しさん
09/01/29 04:23:49
URLリンク(www.nikoli.co.jp)
1.「スリザーリンク」を解くプログラムを書いてください
2.適当な難易度で問題を出題するプログラムを書いてください
403:デフォルトの名無しさん
09/01/29 08:15:04
なんでよりによってスリリンなんだ
404:デフォルトの名無しさん
09/01/29 08:49:58
そんな簡単に問題作れるなら俺だって問題送って小遣い稼ぎしたい
405:デフォルトの名無しさん
09/01/29 08:53:06
問題作成してお金になるなら俺だって小遣い稼ぎたい
406:デフォルトの名無しさん
09/01/29 09:13:38
スレリンク(tech板:751番)
> 751 名前:デフォルトの名無しさん [sage] 投稿日:2009/01/27(火) 18:46:14
> URLリンク(www.nikoli.co.jp)
> 1.「スリザーリンク」を解くプログラムを書いてください
> 2.適当な難易度で問題を出題するプログラムを書いてください
407:デフォルトの名無しさん
09/01/29 09:47:04
これは酷い
408:デフォルトの名無しさん
09/01/29 19:23:55
PuzzleManiakであるなあ。嵌ってるわ
起点への一本道をランダムに作るのはいいとして、どの程度ヒントを出すかが難しいな。
3と0だけ全部表示しちまって、あとは適当にランダムで表示する枠選べば適当な難易度になるかな?
面白い課題だけど実装案出すだけでもキツそうだなw
409:デフォルトの名無しさん
09/01/29 21:52:02
Ruby、Perl、Pythonの違いをレポートで比較しないといけないんですが、違いを教えてください。
410:デフォルトの名無しさん
09/01/29 22:03:13
>>409
Perlスレで聞け
411:デフォルトの名無しさん
09/01/29 22:04:53
>>410え、なんで?
412:デフォルトの名無しさん
09/01/29 22:11:46
的確なアドバイスだな
っていうか、Perlはバージョンによってアホみたいに内容が違うからPerlから攻めたほうが吉
413:デフォルトの名無しさん
09/01/29 22:43:21
Perlの質問スレないもん><
414:デフォルトの名無しさん
09/01/29 22:47:22
このへん?
スレリンク(tech板)
415:デフォルトの名無しさん
09/01/29 22:56:37
>>408
ヒントの出し方が悪いと答えが二通り以上考えられたりするんだよね
416:デフォルトの名無しさん
09/01/29 22:59:53
>>415
スリザーリンクは回答は1通りです
417:デフォルトの名無しさん
09/01/29 23:28:33
>>416
一通りにならないダメ問題が生成されるってことでしょ
418:デフォルトの名無しさん
09/01/30 00:54:54
何にせよ、ここでは解決しないって事がわかったのは良い経験
419:デフォルトの名無しさん
09/01/30 01:06:05
>>402
1だけ書いてみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2は知らん
420:デフォルトの名無しさん
09/01/30 04:17:42
>>409
どれもあんまり新しい記事じじゃないが
matzがPythonについて語ってるの
URLリンク(jp.rubyist.net)
ラリーウォールがRubyについても一部語っている
URLリンク(slashdot.jp)
その後に企画されたmatzへのインタビュー
URLリンク(slashdot.jp)
421:デフォルトの名無しさん
09/01/30 09:12:42
>>419
狼!ありがとうございます!!
Pythonスレより先に解答が出るとは思いませんでした!!!
422:デフォルトの名無しさん
09/01/30 10:59:45
>>419の罪は重い
423:デフォルトの名無しさん
09/01/31 02:02:44
馬鹿なの?
死ぬの?
424:デフォルトの名無しさん
09/01/31 04:50:43
Ruby1.9.1キタ―――(゚∀゚)―――!!
425:デフォルトの名無しさん
09/01/31 23:02:02
スレリンク(denki板:965番)
426:デフォルトの名無しさん
09/02/02 00:37:30
>>419のコードを読んでみてる。
色んな意味で読みにくいんだが、面白いな。
Walls にちょっと感動したよ。
427:デフォルトの名無しさん
09/02/02 00:43:28
いや、これあまりRuby的ではないから参考にしたらいかんよ
428:デフォルトの名無しさん
09/02/02 00:50:00
早期の完全動作書き上げを目的にするから、その人の地が出るよね(それが面白いという説があるが)
なんとなくJavaっぽい雰囲気
printf() なんて久しぶりに見た
429:デフォルトの名無しさん
09/02/02 00:55:40
>>426
それは分かってる。自分用に読みやすく書き換えたコードからは、
とりあえずInteger#times()を追放した。
そろそろクラスの構成が変わるかも。
430:デフォルトの名無しさん
09/02/02 18:53:53
前回、カレンダーでお世話になりました。
前回は、1日1行でしたが、今回は、1週を1行にしたいのですが...
require 'date'
day = Date.new(2009,2,2)
last = Date.new(day.year+10, day.month, day.mday)
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
while day < last do
wday = weekdays[day.wday]
puts day.strftime("%Y%W,%Y,%b,%-m月,%-d,#{wday},%a,%w,%W")
day = day+7
end
で出力に、月曜日から日曜日までの出力を一行に出力したいですが
どうすれば良いでしょうか?
431:デフォルトの名無しさん
09/02/02 19:29:56
そのへんは山場なんでちっとは頭使おうぜ
print で月曜から改行なしで日付だけ表示して日曜日が終わったときに改行するようにしたいとか
日付の文字を月曜から7個追加していって1週間をヨコ長の文字列にして表示するのがよさそうとか
なんかプランとかないん?
432:デフォルトの名無しさん
09/02/02 19:51:10
でへっ
だんな、お見通しですな。
433:デフォルトの名無しさん
09/02/02 20:53:58
何点でしょうか? 一応、やりたいことはできたかな。
require 'date'
day = Date.new(2009,2,2)
last = Date.new(day.year, day.month+1, day.mday)
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
while day < last do
print day.strftime("%Y%W,%Y,%W,")
dayday=day
while dayday < day+7 do
wday = weekdays[dayday.wday]
print dayday.strftime("%b,%-m月,%-d,#{wday},%a,%w,")
dayday= dayday+1
end
print "\n"
day = day+7
end
434:デフォルトの名無しさん
09/02/02 21:35:02
60点くらいでいいとこなんじゃね
435:デフォルトの名無しさん
09/02/02 22:06:09
行末の "," が取れない。 60点かあ。Cってとこね。
436:デフォルトの名無しさん
09/02/02 22:35:17
そりゃ一体化してるからな
日付部は日付部だけにして、カンマは別なとこで表示するようにしとけ
そうしたほうがシンプルだ
月曜表示
カンマ
火曜表示
カンマ
水曜表示
カンマ
木曜表示
カンマ
金曜表示
カンマ
土曜表示
437:デフォルトの名無しさん
09/02/02 22:45:00
配列に文字列要素を格納していって最後に
カンマで結合して出力って手もある
a = []
a.push('a')
a.push('b')
a.push('c')
a.join(',')
=> "a,b,c"
438:デフォルトの名無しさん
09/02/02 22:57:29
まだ早いと思って飛ばしたんだが…
439:デフォルトの名無しさん
09/02/02 23:18:05
それは失礼しました
440:デフォルトの名無しさん
09/02/02 23:20:16
コレクションをいつ使ってもらうかってけっこう困るよね
441:デフォルトの名無しさん
09/02/02 23:28:31
やりたいことが明確なら、構文を便利機能として
まるのみしてもらって理解は後から、
というのもありかと
442:デフォルトの名無しさん
09/02/03 00:42:02
>>419です
そうですか、Java野郎なのバレバレですか
でも、最近は前任者の作ったひどい生jspを力技で
修正するばかりの日々なので、すでにJavaとすらいえないかも
実はRubyも10行以上のプログラムは数年ぶりで、newの構文が
30秒も思い出せなかったのにはびっくりです
コード書くのは面白かったんだけど、
Python, Perlの比較対象にならないソースでごめんなさい
443:デフォルトの名無しさん
09/02/03 22:30:07
1年でRuby習ったってのに2年ではPerl使えと言われた…
教授の趣味らしい
444:デフォルトの名無しさん
09/02/03 22:40:38
学生も大変なんですね。。。
445:デフォルトの名無しさん
09/02/03 22:44:52
3年はPythonですか
446:デフォルトの名無しさん
09/02/04 00:59:46
別の世界があることを知るのはよいことだ
447:デフォルトの名無しさん
09/02/04 01:54:32
実習授業の6割くらいは似非FORTRANとしてしか使ってないから
授業ごとに切り替わっても実際的な問題はない
448:デフォルトの名無しさん
09/02/04 03:51:41
授業ごとに切り替わるとかって大変じゃね?
全部習得したら凄い人材にはなりそうだけど
449:デフォルトの名無しさん
09/02/04 09:06:16
凄くはないだろ
450:デフォルトの名無しさん
09/02/04 13:12:02
C/Javaとスクリプトと関数型が切り替わるならすごいけどお手軽LLばっかり
やっててもな・・・
451:デフォルトの名無しさん
09/02/07 02:19:19
Scheme→C言語→空白→(Verilog HDL)
もどうかと思うけどな…。
452:435
09/02/07 10:31:16
>>435 ですが、こんな風にしてみました。
require 'date'
day = Date.new(2009,2,9)
last = Date.new(day.year, day.month+2, day.mday)
weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'}
while day < last do
records=Array.new
records.push(day.strftime("%Y%W,%Y,%W"))
dday = day
while dday < day+7 do
wday = weekdays[dday.wday]
records.push(dday.strftime("%b,%-m,%d,%w,#{wday},%a"))
dday = dday+1
end
print records.join(',')
print "\n"
day = day+7
end
453:デフォルトの名無しさん
09/02/08 14:41:39
>>452
require 'date'
day = Date.new(2009,2,9)
last = Date.new(day.year, day.month+2, day.mday)
weekdays = "日,月,火,水,木,金,土".split(/,/)
while day < last
records = [day.strftime("%Y%W,%Y,%W")]
7.times{
records << day.strftime("%b,%-m,%d,%w,#{weekdays[day.wday]},%a")
day += 1
}
print records.join(','),"\n"
end
454:デフォルトの名無しさん
09/02/08 14:48:03
>>453
> weekdays = "日,月,火,水,木,金,土".split(/,/)
ソースにはこれの実行結果を直に書くべき
毎回文字列から split させるというのは微妙にくどい
というか>>435の欲しいものが微妙につかめない俺
455:デフォルトの名無しさん
09/02/08 14:57:21
オフィシャルに提供されてる
weekdays = %w(日 月 火 水 木 金 土)
みたいな書き方でもいいな
456:デフォルトの名無しさん
09/02/08 15:17:12
weekdays = defined? weekdays ? weekdays : "日,月,火,水,木,金,土".split(/,/)
457:デフォルトの名無しさん
09/02/08 16:29:33
>>456
きもい
458:デフォルトの名無しさん
09/02/08 17:05:20
>>454
「毎回」の意味を具体的に。
459:Calendar君
09/02/08 18:05:58
>>454
カレンダーデータを作成したい理由は、所謂、システム手帳の
週間スケジュールのリフィルを作りたい。これが目的です。
従いまして、
1. ruby でカレンダーデータを作成する。
2. カレンダーデータを OOo Base あるいは、MS Access に食わせる。
3. レポート機能を使って求めるリフィルをデザインし印刷する。
という事になります。OOo でレポートを作成するには、Sun Report Builder
という拡張ツールをインストールせねばなりませんが、まあそんな事を
やりたいために、まずは、ruby でカレンダーデータを作成しています。
祝日のデータは今のところ、手動で追加しています。
460:デフォルトの名無しさん
09/02/08 19:03:25
データ構造とかちゃんと考えてる?
今までのやりとり見てると、プログラムなんか作らずに手帳に直接書いた方がましに思える
461:デフォルトの名無しさん
09/02/08 19:10:06
ていうか印刷できるリフィルデータは巷にいくつかあるだろう
それのデザインだけ変えりゃいいんじゃねの
まあ、Rubyの勉強も兼ねたいっていうなら別に問題ないけれど
462:デフォルトの名無しさん
09/02/08 19:20:11
最初にことわったかも知れませんが半分Hobbyです。街中で入手できる
リフィルでは用が足りないためこんなことをしています。
データ構造とかは何をおっしゃりたいかよくわかりませんが、勉強のため
作成したデータは、MySQLとかに読ませ、OOo から接続したりとか
遊びのネタの中に、char で読み込むのか integer で読み込むのとか、
リソースを無駄使いしないように何文字にするかとかそれなりに考えて
いますが、答えになっていますか?
1年分を作成しようと思うと、手書きではねえ。それを手書きでいいや
と思えるようであれば、こんなことしていません。
463:デフォルトの名無しさん
09/02/08 22:56:55
最近
calendar.google.com
使ってみてる
意外と良いですよ
464:デフォルトの名無しさん
09/02/08 23:28:12
>>455がスマートだな。
>>459
OOOとかAccess通すより、RubyのPDF用ライブラリつかって直接印刷できる形式にした方が早そうだが。
趣味ならとめないが
465:デフォルトの名無しさん
09/02/08 23:29:24
うお、ageちゃった
祝日はAPI使ったら、楽にとれそうだよ
本を読む 祝日のリストをGoogle Calendar APIを使って作る
URLリンク(emasaka.blog65.fc2.com)
466:デフォルトの名無しさん
09/02/08 23:31:20
こっちの方がいいかも。
確か、公式のGoogle Calenderの休日って不完全なんだよね・・・
floatingdays: Google Calendar API で日本の祝日データを取得
URLリンク(fdays.blogspot.com)
467:デフォルトの名無しさん
09/02/08 23:40:26
>>458
こんなん直接 ["日", "月", "火", "水", "木", "金", "土"] でいいじゃん、という程度の話
468:デフォルトの名無しさん
09/02/08 23:51:42
ループの中でなければsplit()で何がいけないの、とか思ってしまうのだが
自分では
"日月火水木金土".split('')
みたいなスタイルが好き
469:デフォルトの名無しさん
09/02/09 00:00:15
URLリンク(www.google.com)
URLリンク(www.google.com)
470:デフォルトの名無しさん
09/02/09 19:46:27
>>464
これ質問しようと思っていたんです。 ruby からいきなり pdf に出力する
やり方があるんですね。これやりたい。次はこれ行ってみます。
471:デフォルトの名無しさん
09/02/09 19:53:50
>>470
てか、pdfを直接エディタで開け
それが答えだ
472:デフォルトの名無しさん
09/02/09 21:05:23
開けてみました。これは敷居が高いな。
473:デフォルトの名無しさん
09/02/09 21:20:28
いや、適当なpdf出力ライブラリ使えよw
検索したらいくつかあるぞ。
そこまで手取り足取りせなならんのかwww
474:デフォルトの名無しさん
09/02/09 22:04:15
あは、
また叱られてしまた。
はい、ぐぐってみましたです。履歴書の出力を説明したサイトを
見つけました。
475:デフォルトの名無しさん
09/02/10 06:38:22
おぬでとう
476:デフォルトの名無しさん
09/02/12 16:49:53
[1] 授業単元:Ruby
[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるかとその並びをすべて列挙する
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
例
534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356
477:デフォルトの名無しさん
09/02/12 17:02:19
> [4] 期限: 明日まで
鬼だ…
478:デフォルトの名無しさん
09/02/12 17:09:59
Python の宿題ここで答えます Part 1
スレリンク(tech板:785番)
C/C++の宿題片付けます 122代目
スレリンク(tech板:542番)
Rubyの宿題教えてください。2限目
スレリンク(tech板:476番)
こんなんで数独の掲載料もらえるなら俺だって問題送りたい
っていうか、前にスリザーリンク解かせた奴と同じだろお前
479:デフォルトの名無しさん
09/02/13 01:10:45
数独よりもゆるい条件だけど、その例の列を並び換えるだけで
9 ! = 362 880通りになるねえ。列挙頑張ってね!
480:デフォルトの名無しさん
09/02/13 01:12:35
行の並び替えもOKだから1例だけで
(9 ! = 362 880) * (9 ! = 362 880)
481:デフォルトの名無しさん
09/02/14 20:37:06
>>476
勉強がてら作ってみた。
3×3で12通り
4×4で576通り
5×5で161280通り
合ってるかな?
URLリンク(codepad.org)
482:デフォルトの名無しさん
09/02/14 20:51:09
URLリンク(en.wikipedia.org)
483:デフォルトの名無しさん
09/02/14 21:08:12
>>482
おー、合ってるみたいだ
484:デフォルトの名無しさん
09/02/14 22:39:16
>>481
最終セルの判定は calc の前でいいんじゃないの
で、if文の中にnext入れとけば
return if line > @num
の判定も不要
485:デフォルトの名無しさん
09/02/14 23:03:11
>>484
なるほど。
少し簡潔になりました。
アドバイス、サンクス。
486:デフォルトの名無しさん
09/02/23 14:38:51
誰か人いるかな?
487:デフォルトの名無しさん
09/02/23 14:48:35
雑談は雑談スレで
488:デフォルトの名無しさん
09/03/23 11:08:21
[1] 授業単元:Ruby
[2] 問題文(含コード&リンク): 下の例参照
与えられた数字のみからなる文字列から各桁の数字に分割し、
隣り合う数字の合計の下一桁の値を並べたものを次の文字列とし、
結果が一桁になるまで繰り返しそれぞれの過程の文字列を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限: 例
525123214112431
77635535523674
4398088075931
727886872424
99564459666
8410894522
251873974
76950261
3545287
899705
78675
5432
95
4
489:デフォルトの名無しさん
09/03/23 11:15:22
[1] 授業単元:Ruby
[2] 問題文(含コード&リンク): 課題2
>>488 の出力において(上から1段目だけは入力なので)
上から2段目から最後の段までに現れる0から9数字の
総出現数と各数字毎の出現比率を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
129個
0: 10回 3%
1: 43回 20%
2: 8回 2%
...
9: 18回 6%
のように出力してください。
おながいします
490:デフォルトの名無しさん
09/03/23 11:32:14
[1] 授業単元:Ruby
[2] 問題文(含コード&リンク): 課題3
>>489 のスクリプト名を p2.rb とする
その入出力について入力はスクリプトへの標準入力として例えば
echo 525123214112431 | p2.rb
という形で受け取れるようにし、
10, 0.03, 43, 0.20, 8, 0.02, ... 18, 0.06, 129
の様に0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで
出力するように変更し、
さらに新たなスクリプト p3.rb から別プロセスとして p2.rb を起動し、
標準出力を介して 111111111 から 999999999 までの連続する数字を与え、
それぞれの結果を出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
491:デフォルトの名無しさん
09/03/23 11:41:04
[1] 授業単元:Ruby
[2] 問題文(含コード&リンク): 課題4
>>490 の出力について
111111111 から 999999999 までの連続する数字を与える代わりに
N 桁の全ての数字を与え、N を 2 ~ 9 まで変化させたときに
各 N における全ての出現数、出現比率を0から9までの数字毎に合計し、出力する。
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:
N = 2 のとき 10 ~ 99 について
10 -> 1 が 1回
11 -> 2 が 1回
12 -> 3 が 1回
...
99 -> 18, 9 -> 1 が 1回, 8 が 1回, 9 が 1回
の回数の合計として
0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで出力する。
よろしくおねがいします。
492:デフォルトの名無しさん
09/03/23 11:55:37
配列に対する map は習った?
each_with_index は知っている?
範囲オブジェクト (0..9) は授業で出た?
標準入力のキーワードはいくつかあるけど授業のは何?
493:デフォルトの名無しさん
09/03/23 11:57:58
あ、map は collect かもしれない
a = [1,2,3]
b = a.map{|e| e*2}
p b
これが [2, 4, 6] になるやつ
map でも collect でもいい
494:デフォルトの名無しさん
09/03/23 12:00:18
まだあった
>>490
> さらに新たなスクリプト p3.rb から別プロセスとして p2.rb を起動し
で使うと思われるメソッド(関数)って何?
system とか `` とかあるけどどれ習った?
495:デフォルトの名無しさん
09/03/23 22:10:59
>>488だけやってみた
まぁ後は誰かがやってくれるのを期待してみよう
s=gets.chomp.bytes.map{|x|x-?0.ord}
while (s=s.each_cons(2).map{|x,y|(x+y)%10}).any?
$> << s << "\n"
end
496:デフォルトの名無しさん
09/03/24 02:22:34
>>490までは既にできてる
というか each ばっかでバカみたいに愚直平凡なコード書きまくって疲れたので返事があるまで放置
497:デフォルトの名無しさん
09/03/27 11:23:10
>>495 の罪は重い
498:デフォルトの名無しさん
09/03/28 07:48:29
まあはっきり言って、なにをやってるのかわかりません>< >>495
499:デフォルトの名無しさん
09/03/28 09:11:38
>>488の例での最後の2つ間違ってね?
500:デフォルトの名無しさん
09/03/28 09:26:39
>>499
間違ってるよ
コピペされないように大元が間違いを入れてるんだろう
正しいプログラムを作れば、>>488がそもそも間違ってる(数字の個数自体が合わない)
ということに気づけるようになっているのだろう
とか教育的意図を深読みしたときに限って単なる投稿時の書き写しミスだったりするわけだが(w
501:デフォルトの名無しさん
09/04/06 04:01:10
スルー推奨
502:デフォルトの名無しさん
09/04/08 01:02:35
は?
503:デフォルトの名無しさん
09/04/14 23:19:09
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点
(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!
504:デフォルトの名無しさん
09/04/15 03:47:09
マルチ乙
505:デフォルトの名無しさん
09/04/17 21:36:12
Nの階乗を再帰を用いた方法で計算してその計算過程も表示するプログラムを教えてください
あと
def factorial(n)
i = 1
j = 1
while(i <= n)
j = j * i
i = i + 1
end
return j
end
print "Nを入力してください : "
n = gets.to_i
printf("\n%d次のようにして計算します。\n\n", n)
wh = factorial(n)
printf("\n%dの答えは%dです。\n", n, wh)
ってプログラムの「次のようにして計算します。」
の実際の計算過程を表示するにはどう書き直せば良いのでしょうか?
回答お願いします
506:デフォルトの名無しさん
09/04/17 21:50:46
>>505です
すいませんテンプレ入れるの忘れました
[1] 授業単元:Ruby
[2] 問題文 ホワイトとブラック
[3] 環境:Ruby 1.8.6
[4] 期限:2009年月20日07:00まで
[5] その他の制限: Rubyのことは基本的なことくらいしかわかりません
507:デフォルトの名無しさん
09/04/17 21:51:57
「Ruby 階乗 再帰」くらいで検索すれば一発で出てくると思うんだが、そういうことやらないのはなんで?
いや、ものすごく純粋に疑問なんだけど
508:デフォルトの名無しさん
09/04/17 21:59:43
>>507さん
変数を代入してその数の階乗を求めなおかつ計算過程を表示するプログラムが乗ってないからです
509:デフォルトの名無しさん
09/04/17 22:10:20
他人に宿題やってもらおうなんて奴に考えなんぞある訳無い
def fact(n)
m = (1 < n ? fact(n-1) : 1)
result = n * m
puts '%d * %d = %d'%[m,n,result]
result
end
510:デフォルトの名無しさん
09/04/17 23:43:33
>>509さん
えっと・・・本当に初歩的なこと聞いて申し訳ないんですが
どこにそれを入れればよいのでしょうか・・・?
511:デフォルトの名無しさん
09/04/18 00:20:23
ホワイトとブラック ?
512:デフォルトの名無しさん
09/04/18 01:08:53
>>510
ファイル
513:デフォルトの名無しさん
09/04/18 10:29:27
>>511さん
授業で総称してるだけです
ホワイトは普通のNの階乗で
ブラックが再帰を使用した階乗です
>>512さん
言い方がまずかったです
どこの部分を>>509さんの書き込みのように書き直せばいいんですか?
514:デフォルトの名無しさん
09/04/18 10:43:11
授業聞いてれば 1時間で終わったのにね
手抜くから何時間も無駄にかかる
手元に実行環境があれば適当に実行して試せばわかるんだが難しいか
>>509 は >>505 の factorial を置き換えるものだから、factorial(n) の代わりに fact(n) で呼べばいい
ただ、授業で使ってない方法で書かれてるだろうから、このまま提出したら呼び出し食らって減点対象だぞ
515:デフォルトの名無しさん
09/04/18 11:22:34
>>514さん
申し訳ないです
どうやら勘違いしてたみたいです
>>509さんの書き込んでくれたソースを実際走らせて見たんですが
ファイル名:rb2: Invalid char |201' in expression
ファイル名:rb3: Invalid char |201' in expression
ファイル名:rb4: Invalid char |201' in expression
ファイル名:rb4: syntax error, unexpected tSTRING_BEG, e
xpecting kEND
puts '%d * %d = %d'%[m,n,result]
^
ファイル名:rb5: Invalid char |201' in expression
って出てしまいます
516:デフォルトの名無しさん
09/04/18 11:29:08
^は%の下です
517:デフォルトの名無しさん
09/04/18 12:13:06
全角空白になってる
518:デフォルトの名無しさん
09/04/18 12:48:57
>>515
>>517の言ってる事をもう少し噛み砕くと、
>>509のコードはインデントを表すのに全角空白を使ってる。
だからまず行頭の空白を消すべし。もしインデントが欲しかったら新たに加えなおせ。
def とか end を半角で書かなきゃいかんように、
空白文字はtab, spaceを使わにゃいかんと決まっとる。
519:デフォルトの名無しさん
09/04/18 14:03:12
>>513
書き換える必要はない。全角空白は削除する必要はあるけど
520:デフォルトの名無しさん
09/04/18 23:20:53
>>518-519さん
def fact(n)
m = (1 < n ? fact(n-1) : 1)
result = n * m
puts '%d * %d = %d'%[m,n,result]
result
end
と入力してコマンド プロンプトで起動してみましたが
何も実行されませんでした・・・。
521:デフォルトの名無しさん
09/04/18 23:53:45
定義だけで呼び出してないから。
522:デフォルトの名無しさん
09/04/19 00:04:35
>>521さん
呼び出しは
print "Nを入力してください : "
n = gets.to_i
printf("\n%d次のようにして計算します。\n\n", n)
wh = factorial(n)
printf("\n%dの答えは%dです。\n", n, wh)
で良いんですか?
523:デフォルトの名無しさん
09/04/19 00:05:19
>>522
>>514読んでないだろ。
524:デフォルトの名無しさん
09/04/19 01:00:48
>>523読みましたが・・・。
def factorial(n)
if n <= 1
1
else
n * factorial(n-1)
end
end
if ARGV[0] == nil
STDERR.puts "数はいくつ?"
exit 0
end
n =ARGV[0].to_i
printf("%dの階乗=%d\n", n , factorial(n))
一応教科書見ながら作ってみたんですが動かないんですが
どこが悪いんでしょうか?
525:デフォルトの名無しさん
09/04/19 01:35:00
おまえのあたま
526:デフォルトの名無しさん
09/04/19 03:00:15
留学生なのかな?
527:デフォルトの名無しさん
09/04/19 08:39:13
>>514 を音読しろ、まずはそれからだ
528:デフォルトの名無しさん
09/04/19 09:37:23
みなさんご迷惑をおかけして申し訳なかったです・・・。
なんかえらく勘違いしてました・・・。
ようやくできました
ありがとうございました
どうでもいいですが留学生ではないですよ
529:デフォルトの名無しさん
09/04/20 17:47:05
宿題のようで、宿題なのですがよろしくお願いします。
[1] 授業単元:Ruby
[2] 問題文 ファイル分割
下記は、hoge.csvを均等に4分割して tmp/ 以下に書き込むプログラムである。
ruby split.rb hoge.csv tmp/ 4
出力例
tmp/1out.csv
tmp/2out.csv
tmp/3out.csv
tmp/4out.csv
このプログラムをできるだけ簡潔に書け。
ただし、出力された各csvは hoge.csv の1行目のヘッダーを含むものとする。
[3] 環境:Ruby 1.8.7
[4] 期限:2009年月21日12:00まで
[5] その他の制限: RubyGems等の使用など特に制限はなし。より簡潔に書けた方がよい。
530:デフォルトの名無しさん
09/04/20 17:48:43
x 宿題のようで、宿題なのですがよろしくお願いします。
o 宿題じゃないようで、宿題なのですがよろしくお願いします。
orz
531:デフォルトの名無しさん
09/04/20 17:50:18
均等に四分割ってw
少なくとも行数は四の倍数で入ってるとか?
532:デフォルトの名無しさん
09/04/20 20:14:01
x 宿題のようで、宿題なのですがよろしくお願いします。
o ネタのようで、ネタなのですがよろしくお願いします。
533:デフォルトの名無しさん
09/04/20 20:18:53
(1..ARGV[3].to_i).each do |i|
p ARGV[2] . i . "out.csv"
end
534:デフォルトの名無しさん
09/04/20 20:32:06
require 'csv'
org_csv, dest_dir, n_split, = ARGV
n_split = Integer(n_split)
rows = CSV.foreach(org_csv).to_a
header = rows.shift
matrix = Array.new((rows.size / Float(n_split)).ceil){ [] }
iter = matrix.cycle
rows.each{|row| iter.next << row }
matrix.transpose.each_with_index do |rows, i|
CSV.open File.join(dest_dir, "#{i + 1}out.csv"), "w" do |w|
w << header
rows.each{|row| w << row }
end
end
535:デフォルトの名無しさん
09/04/20 20:32:43
(1..ARGV[2].to_i).each do |i|
p ARGV[1]+i+"out.csv"
end
536:デフォルトの名無しさん
09/04/21 18:13:20
> このプログラムをできるだけ簡潔に書け。
つまりゴルフだな?
537:デフォルトの名無しさん
09/04/21 19:54:56
golf と聞いて(ry
i,d,c=$*;c=c.to_i;a=open i;h=a.gets;f=(1..c).map{|j|open("#{d}#{j}out.csv",'w')<<h};a.map{|l|f[$.%c]<<l}
538:デフォルトの名無しさん
09/04/22 06:12:44
>>534
ありがとうございます!無事できました。
>>537
ちょwwwワンライナーwww
539:デフォルトの名無しさん
09/04/22 12:56:44
File.readlines(ARGV[0]).each_slice(ARGV[2].to_i).with_index{|v,i|
File.open("#{ARGV[1]}#{i+1}out.csv", 'w+'){|f| f.puts v.join }
}
こっから縮めると、
i,d,c=$*;open(i).readlines.each_slice(c.to_i).with_index{|v,n|open("#{d}#{n}output.csv",'w+').puts v.join }
540:デフォルトの名無しさん
09/04/22 12:57:26
間違えて書き込んでしまった。
i,d,c=$*;open(i).readlines.each_slice(c.to_i).with_index{|v,n|open("#{d}#{n}output.csv",'w+')<<v.join}
動作確認はしてない。
541:デフォルトの名無しさん
09/04/22 12:57:59
Enumerable#each_slice初めて知ったw こんなメソッドあるんかよすげえ
542:デフォルトの名無しさん
09/04/22 14:10:09
each_slice だと n 個ずつに分割されるんだったorz
543:デフォルトの名無しさん
09/04/22 14:15:08
i,d,c=$*;open(i).readlines.group_by.with_index{|v,n| (n+1)%c.toi}.each{|k,v|open("#{d}#{k}output.csv",'w+')<<v.join}
長いな。動作確認はしてない。
544:デフォルトの名無しさん
09/04/22 17:22:23
ブロックなし group_by って何寸の?riみためいまいち
545:デフォルトの名無しさん
09/04/22 19:37:15
Enumeratorを返す
546:デフォルトの名無しさん
09/05/31 09:21:31
312 名前:デフォルトの名無しさん[] 投稿日:2009/05/31(日) 02:29:50
文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作る問題がわかりません。
547:デフォルトの名無しさん
09/05/31 10:35:02
[1] 授業単元: プログラミング初歩
[2] 問題文(含コード&リンク):(文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順
に小文字で並べた文字列を返すプログラムを作りなさい。)
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] バージョン: (Ruby 1.8.6 )
[3.3] 言語: (Ruby
[4] 期限: ([2009年06月01日21:00まで]
[5] その他の制限: 配列などの初歩的な概念まで
よろしくお願いします。
548:デフォルトの名無しさん
09/05/31 10:50:36
全く同じ課題をちょくちょく見るがどこの課題なんだろうね
str を与えられた文字列として
arr = str.downcase.split(//)
puts arr.sort_by{|a| arr.grep(a).size}.reverse.join
549:デフォルトの名無しさん
09/05/31 12:33:07
freq = Hash.new(0)
str.scan(/[a-z]/i) {|c| freq[c.downcase] += 1}
puts freq.keys.sort_by {|c| -freq[c]}.join("")
# 1.8.7以降
input.each_char.inject(Hash.new(0)) {|freq, c| freq[c.downcase] += 1 if /[a-z]/i =~ c; freq}.
sort_by {|c, n| -n}.map {|c, n| c}.join("")
550:デフォルトの名無しさん
09/06/11 01:50:29
[1] 授業単元: Ruby演習 [2] 問題文、URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境 [3.1] OS:Windows [3.3] 言語:Ruby [4] 期限: 6月11日午前11時30分まで [5] その他の制限: 現在ハッシュクラスを勉強中 よろしくお願いします
551:デフォルトの名無しさん
09/06/11 04:31:12
>>550
ギリギリすぎワロタ
552:デフォルトの名無しさん
09/06/11 04:52:41
wday = {"sunday" => "日曜日",
"monday" => "月曜日",
"tuesday" => "火曜日",
"wednesday" => "水曜日",
"thursday" => "木曜日",
"friday" => "金曜日",
"saturday" => "土曜日"}
size = wday.size
puts "wday の大きさは" + size.to_s + "です。"
wday.each do |eng, jap|
puts eng + "とは" + jap + "のことです。"
end
def str2hash(str)
hash = {}
array = str.split(/\s+/)
i = 0
while i < array.size
if i % 2 == 1 then
hash[array[i-1]] = array[i]
end
i = i + 1
end
return hash
end
puts "str2hashを検証します。"
str2hash("key1 value1 key2 value2").each do |key, value|
puts "キーは" + key1 + "で値は" + value "です。"
end
553:デフォルトの名無しさん
09/06/11 04:53:43
>>550
適当
(1)
wday = {"sunday"=>"日曜日", "monday"=>"月曜日", "tuesday"=>"火曜日", "wednesday"=>"水曜日", "thursday"=>"木曜日", "friday"=>"金曜日","saturday"=>"土曜日"}
(2)
p wday.size
(3)
wday.keys.each do |d|
puts "「#{d}」は#{wday[d]}のことです。"
end
(4)
def str2hash(s)
h = Hash.new
s.scan(/(\S+)\s+(\S+)\s*/) {|pair|
h[pair[0]] = pair[1]
}
h
end
554:デフォルトの名無しさん
09/06/11 05:12:51
実のところ、4が小難しい(テンプレ的にできそうでできないいい問題だとも言えるが)
こんなん通常は Hash[*str.split] で終了だが、おそらくは手作業であり
555:デフォルトの名無しさん
09/06/11 07:04:16
問題文くらい晴れよ。検索避けなのかもしれんが
----
Rubyの問題がわかりません
助けてください
(1)曜日を表す英語と日本語との対応を表すハッシュwdayを定義しなさい
p wday["sunday"] #=> "日曜日"
p wday["monday"] #=> "月曜日"
p wday["saturday"] #=> "土曜日"
(2)ハッシュのメソッドを使って(1)のハッシュwdayのペアの数を数えなさい
(3)eachメソッドと(1)のハッシュwdayを使って以下の文字列を出力させてください。
「sunday」は日曜日のことです。
「monday」は月曜日のことです。
…
(4)ハッシュには配列の%wのようなものがありません。そこで、空白とタブと改行
(正規表現で定義するなら「/\s+/」)で区切られた文字列をハッシュに変換するメソッド
str2hashを定義してください。
p str2hash("bule 青 white 白\nred赤");
#=> {"bule"=>"青", "white"=>"白", "red"=>"赤"}
556:デフォルトの名無しさん
09/06/11 07:18:06
>>555
君以外は全員読んで回答してるんだが?
557:デフォルトの名無しさん
09/06/11 11:52:38
>>552 >>553
550です
ありがとうございます
558:デフォルトの名無しさん
09/06/11 13:20:30
>>556
>>555じゃないけど
携帯からでなきゃ時間帯的に覗けない時とか
ちょっともどかしい
余裕のある人が答えてるからいいんだろうけど
559:デフォルトの名無しさん
09/06/11 13:24:27
そこまで頑張って答えるようなもんでもないと思うがどう
まあどうでもいいけどさ
560:デフォルトの名無しさん
09/06/11 23:57:47
>>550
「たのしいRuby 第2版」を買っておくといいかも
URLリンク(www.notwork.org)
561:デフォルトの名無しさん
09/07/12 01:45:26
そもそもなんだが、rubyって学校で教えてるものなの?
ふつうC++とかJavaとか使えそうなもの教えそうな気がするけど。
562:デフォルトの名無しさん
09/07/12 03:26:10
教えてる
563:デフォルトの名無しさん
09/07/12 03:55:04
プログラミングがメインじゃないけれども教わってる。
講義概要にはrailsって書いてあるけれども。
564:デフォルトの名無しさん
09/07/12 07:51:26
>>561
超マジレスすると、学校で教えるような部分が「使えるもの」になる可能性はゼロだ
その人がプログラミングができるかどうかの試金石として働けばなんでもいいんで、
教えやすかったりすればそれでいい
565:デフォルトの名無しさん
09/07/12 08:13:24
>>561
東大の場合
URLリンク(jp.rubyist.net)
URLリンク(lecture.ecc.u-tokyo.ac.jp)
ぶっちゃけ、言語は何でもいい。教育としては概念を把握させるのが目的。
それに、特定の言語でしか身動きできないような人間を作ってしまうような
教育なら大学で教える意味はない。
566:デフォルトの名無しさん
09/07/12 08:14:24
yes
567:デフォルトの名無しさん
09/07/12 10:53:31
オレの学校はリデュースってので習ったぜ
568:デフォルトの名無しさん
09/07/12 10:59:22
ただ、学校が「専門学校」であった場合、
学校で教えることはそれなりに即戦力の礎になることが期待されてはいるので
そこでRubyを教えることは稀だろうなとは思う
理系大学1年の教養の情報系授業のプログラミングで
Rubyを選択肢に入れるのは間違ってはいないと思う
3年4年のときに特定の言語でプログラミングするなら
3年や4年のときに特定の言語をツールとして勉強すれば充分
569:デフォルトの名無しさん
09/07/12 23:51:14
>理系大学1年の教養の情報系授業のプログラミングで
>Rubyを選択肢に入れるのは間違ってはいないと思う
なんかそれこそ、最初にruby教えたらプログラミングの概念間違って覚えてしまいそうだけどな。
570:デフォルトの名無しさん
09/07/12 23:56:15
>>569 がどういう概念を持ってるのか興味が出てきた。
571:デフォルトの名無しさん
09/07/13 06:04:39
>>569
572:デフォルトの名無しさん
09/07/13 15:17:18
ALGOL型ならなんでもいいよ
というか、東大とか行くくらいならRubyぐらい知ってて当然だろう
センターのBASICはどんなアホでできるぐらい簡単なんだし、そのつながりで
ALGOL型言語ならだいたいわかるだろう。
573:デフォルトの名無しさん
09/07/13 16:24:07
スレリンク(tech板)
574:デフォルトの名無しさん
09/07/15 14:14:17
大学の課題がわからなくて困っています
宜しくお願いします。こんなんです
スキャンラインアルゴリズムに基づいて,三角形を塗りつぶすメソッドを作成して,メソッドをテストするプログラムも含めて作成して下さい.
require 'gfc'
class Gfc
def draw_line(x0,y0,x1,y1,color)
#
# 前回作ったdraw_lineを拡張する
#
# (x0,y0)--(x1,y1)に線分を描く.color: 色の指定 [r,g,b]
# 同時にデジタル線分上のピクセル座標の列を次のような配列として返す
# trace=[[x0,y0],....,[x1,y1]]
#
# 最初にtraceを空の配列として用意する
trace = []
# デジタル線分を描きつつ,ピクセルの座標をtraceに格納していく
# 前回のdraw_lineに少し追加するだけでよいはず.
# (draw_pixelとともにtraceに座標を格納すればよい)
# 最後に次の式を書く(これがdraw_lineの値となる)
trace
end
end
575:デフォルトの名無しさん
09/07/15 14:15:39
class Gfc
class Triangle
## 指定された色で三角形を塗りつぶしてgの画像に描画する
## (描画色はparam[0]に格納されている)
def fill(g,param)
# 三角形の3頂点を取り出す
# vt = [[x0,y0],[x1,y1],[x2,y2]]
vt = vertices()
# 色を取りだす
color=param[0]
# 現在の色を退避して与えられた色に設定する
bkup_color=g.get_foreground()
g.set_foreground(color)
576:デフォルトの名無しさん
09/07/15 14:35:25
凹型三角形のときはどうするつもりなんだ
577:デフォルトの名無しさん
09/07/15 14:38:02
これでおしまい?続きは無いの?
あと gfc ってこれであってるかな
URLリンク(www.stdio.h.kyoto-u.ac.jp)
578:デフォルトの名無しさん
09/07/15 14:44:05
課題ってこれか
URLリンク(www.stdio.h.kyoto-u.ac.jp)
「線分の描画」のとこ理解してれば応用で出来るぞ
579:デフォルトの名無しさん
09/07/15 19:59:59
高い授業料払ってるんだから聞きにいけよ
580:デフォルトの名無しさん
09/07/27 20:59:43
[1] 授業単元: 論理学
[2] 問題文: 整数からなる配列を受け取り、その最大値を除いた配列を出力するメソッドを定義せよ。
ただし、配列の長さが3未満のときはnilを出力する。
[4] 期限: 7月27日9:00まで
[5] その他の制限: 筆記試験です
すみませんがよろしくお願いします。
581:デフォルトの名無しさん
09/07/27 21:13:51
def foo (array)
(array.length < 3) ? nil : array - array.max
end
完全に未テストだけど
重複の有無は言われてないので考慮してない
582:デフォルトの名無しさん
09/07/27 21:17:31
すげえ期限だな。
def hoge(list)
if list.length < 3
nil
else
max = list.max
list.reject{|e| e == max }
end
end
def kadai(list)
hoge(list).display
end
>>581
array - [array.max]
583:デフォルトの名無しさん
09/07/27 21:21:08
URLリンク(www.ruby-lang.org)
self - other
other が配列でなければ to_ary メソッドによる 暗黙の型変換を試みます。
と書いてあるので多分[]は必要ない
未テストだけど
584:デフォルトの名無しさん
09/07/27 21:24:26
irb(main):002:0> 666.respond_to?(:to_ary)
=> false
ほい。というわけで要る。
585:デフォルトの名無しさん
09/07/27 21:27:50
580です!
ありがとうございました!
586:デフォルトの名無しさん
09/07/27 21:29:46
ほう、マジか
587:デフォルトの名無しさん
09/07/27 21:36:04
解決してるがいっこだけ
>>581
引くな
要素を取り除くということと配列を引くということはまったく違う
588:デフォルトの名無しさん
09/07/27 21:41:14
$ refe Array#-
Array#-
--- -(other) -> Array
自身から other の要素を取り除いた配列を生成して返します。
……。
589:デフォルトの名無しさん
09/07/27 21:49:32
配列 self から 配列 other の各要素をすべて取り除いた結果の配列を新たに生成して返します
だろうから、まあ問題ないなというか言葉足りな過ぎるな
「要素 other」ではなく「配列 other の要素」
590:デフォルトの名無しさん
09/07/27 21:51:18
ていうか、そもそも - って同じクラスのオブジェクト同士のメソッド遣り取りだろ
to_ary すら本来は期待してはイカン
591:デフォルトの名無しさん
09/07/27 21:51:47
>>587
右辺の要素を取り除いた配列を新しく作るんだけど
こういうところで全くの素人相手にものを教えてやっていい気になってるような奴はやっぱ低レベルだな
592:デフォルトの名無しさん
09/07/27 21:58:44
>>591
>>580もう一度読め
どう考えても配列から要素1種だけ引く問題
delete や delete_if を使うべき
配列の「引き算」で回り道して実装する意味はなんもない
593:デフォルトの名無しさん
09/07/27 22:02:12
そこはrejectとかにしてやってくれ。
元の配列ぶっ壊して良いのかどうか窺い知れんから。
594:デフォルトの名無しさん
09/07/27 23:07:40
うーん…w
595:デフォルトの名無しさん
09/07/28 02:41:46
def hoge(arr)
if arr.size<3
return nil
end
return arr.sort.pop
end
でいいんじゃないの?
596:デフォルトの名無しさん
09/07/28 05:03:29
[3, 5, 2, 6, 4] を渡して [2, 3, 4, 5] が返ってきたら怒っていいと思う
普通は [3, 5, 2, 4] だろ
あと pop や shift はキューとしての擬似操作だ
キューだから操作した要素が返る
irb> p [1, 2, 3].pop
3
597:デフォルトの名無しさん
09/07/28 05:11:22
要するに回答するならテストぐらいしろと
598:デフォルトの名無しさん
09/07/28 05:34:24
よくわからないモノを無理して使うから…
599:デフォルトの名無しさん
09/07/28 07:20:19
[3, 6, 5, 2, 6, 4] を渡して [3, 5, 2, 4] が返ってきたら怒っていい?
600:デフォルトの名無しさん
09/07/28 07:31:07
重複は存在しない単純化された問題か、または一律取り除いていい処理だろうと思える
というか、1個だけ取って残りはそのままでいいというほうがなんか変だろ
601:デフォルトの名無しさん
09/08/25 10:32:13
Visual Basic の課題で困っております。
誰かお答えください。本当に助けてください。
1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて
2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。
3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
何故そのような制限があるかについて理由を答えよ
1) 48 x 100 - 81
2) 12 ÷ 9.3 x 247
3) 0.2 - 12 ÷ 69
4) -12 ÷ 100 + 100
602:デフォルトの名無しさん
09/08/25 10:42:08
Rubyの宿題スレで質問する意図は?
603:デフォルトの名無しさん
09/08/25 11:07:34
URLリンク(www.google.co.jp)()%E3%81%A8Str()%E3%81%AE%E9%81%95%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
multi
604:デフォルトの名無しさん
09/09/20 01:27:35
.
605:デフォルトの名無しさん
09/09/22 13:40:33
Mechanize(0.9.2)で教えていただきたいことが有ります。
目的のWEBページを取得して
単にリンク一覧を表示させたいだけなのですが
URLが表示できないリンクが存在します。
結果はnilになります。
ABC : nil <- 取得できていない
DEF : http://www.abcdefc.com
よく見ると、htmlのソースには
<A HREF=・・・・・> *** </A>
と、大文字でかかれてました。
Mechanizeで大文字が使えない仕様なのか、WEBで調べて見ましたが
答えは見つかりませんでした。
どなたか、情報をお持ちの方、お教えください。