sheltered-girl 4.0.4.4 → 4.0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/speak +1164 -1154
- data/lib/version.rb +1 -1
- data/wiki/README.md +1 -1
- metadata +1 -1
data/bin/speak
CHANGED
@@ -1,1154 +1,1164 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# vim: filetype=ruby
|
5
|
-
|
6
|
-
require "#{File.dirname(__FILE__)}/../req/speak"
|
7
|
-
|
8
|
-
lib = File.expand_path('lib', __dir__)
|
9
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
10
|
-
|
11
|
-
class Emerald
|
12
|
-
attr_accessor :fibonacci, :fizzbizz, :version, :kurage
|
13
|
-
|
14
|
-
def version
|
15
|
-
print 'Rubyのバージョン情報を出力します! : '
|
16
|
-
puts RUBY_VERSION
|
17
|
-
end
|
18
|
-
|
19
|
-
def fibonacci
|
20
|
-
puts 'フィボナッチ数列を出力します! '
|
21
|
-
puts ''
|
22
|
-
lo = 1
|
23
|
-
hi = 1
|
24
|
-
print lo
|
25
|
-
print ' '
|
26
|
-
while hi < 50
|
27
|
-
print hi
|
28
|
-
hi = lo + hi
|
29
|
-
lo = hi - lo
|
30
|
-
print ' '
|
31
|
-
end
|
32
|
-
puts ''
|
33
|
-
end
|
34
|
-
|
35
|
-
def fizzbizz
|
36
|
-
puts 'FizzBizz問題の出力結果です!'
|
37
|
-
puts ''
|
38
|
-
(1..15).each do |t|
|
39
|
-
if t % 15 == 0
|
40
|
-
print 'FizzBizz'
|
41
|
-
elsif t % 3 == 0
|
42
|
-
print 'Fizz'
|
43
|
-
elsif t % 5 == 0
|
44
|
-
print 'Bizz'
|
45
|
-
else
|
46
|
-
print t
|
47
|
-
end
|
48
|
-
print ' '
|
49
|
-
end
|
50
|
-
puts ''
|
51
|
-
end
|
52
|
-
|
53
|
-
def kurage
|
54
|
-
a = rand(15)
|
55
|
-
print '~'
|
56
|
-
0.upto(a) do
|
57
|
-
print '~'
|
58
|
-
end
|
59
|
-
puts '<コ:彡'
|
60
|
-
puts ''
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
saikoro = Random.rand(4)
|
65
|
-
case saikoro
|
66
|
-
when 2 then
|
67
|
-
Emerald.new.kurage
|
68
|
-
when 1 then
|
69
|
-
Emerald.new.fibonacci
|
70
|
-
when 0 then
|
71
|
-
Emerald.new.fizzbizz
|
72
|
-
else
|
73
|
-
Emerald.new.version
|
74
|
-
end
|
75
|
-
|
76
|
-
puts ''
|
77
|
-
puts 'helpを入力またはTab補完で実行しましょう!'
|
78
|
-
|
79
|
-
# search words
|
80
|
-
|
81
|
-
begin
|
82
|
-
str = %w[sessi kashi exit help].map!(&:freeze).freeze
|
83
|
-
|
84
|
-
once = %w[find delete remove rename makefolder NumberGame2 Encode week calendar NumberGame].map!(&:freeze).freeze
|
85
|
-
|
86
|
-
lucky = %w[loto6 Numbers kuji].map!(&:freeze).freeze
|
87
|
-
|
88
|
-
dark = %w[OneRunner Eval output].map!(&:freeze).freeze
|
89
|
-
|
90
|
-
denki = %w[Anpea Volt Rister].map!(&:freeze).freeze
|
91
|
-
|
92
|
-
other = %w[weather reader atom result rss].map!(&:freeze).freeze
|
93
|
-
|
94
|
-
WORDS = (str + once + lucky + dark + denki + other).map!(&:freeze).freeze
|
95
|
-
|
96
|
-
Readline.completion_proc = proc { |word|
|
97
|
-
WORDS.grep(/\A#{Regexp.quote word}/)
|
98
|
-
}
|
99
|
-
|
100
|
-
print '> '
|
101
|
-
|
102
|
-
# search words exit!
|
103
|
-
|
104
|
-
# Wainting Action code!
|
105
|
-
|
106
|
-
while (line = Readline.readline(''))
|
107
|
-
|
108
|
-
line.chomp!
|
109
|
-
|
110
|
-
if line.match?(str[0])
|
111
|
-
def seru(b)
|
112
|
-
(b - 32) * 5 / 9
|
113
|
-
end
|
114
|
-
puts '華氏を入力してください!'
|
115
|
-
.print '> '
|
116
|
-
f = gets.to_i
|
117
|
-
m = seru(f)
|
118
|
-
puts "摂氏は、#{m.round}です。"
|
119
|
-
|
120
|
-
print '> '
|
121
|
-
|
122
|
-
elsif line.match?(str[1])
|
123
|
-
def seru(b)
|
124
|
-
(1.8 * b) + 32
|
125
|
-
end
|
126
|
-
puts '摂氏を入力してください!'
|
127
|
-
print '> '
|
128
|
-
f = gets.to_i
|
129
|
-
m = seru(f)
|
130
|
-
puts "華氏は、#{m.round}です。"
|
131
|
-
|
132
|
-
print '> '
|
133
|
-
|
134
|
-
elsif line.match?(str[2])
|
135
|
-
exit!
|
136
|
-
elsif line.match?(lucky[0])
|
137
|
-
|
138
|
-
class Loto6
|
139
|
-
def sum(a, b, c, d, e, f)
|
140
|
-
x = Random.rand(a) + 1
|
141
|
-
y = Random.rand(b) + 1
|
142
|
-
z = Random.rand(c) + 1
|
143
|
-
s = Random.rand(d) + 1
|
144
|
-
t = Random.rand(e) + 1
|
145
|
-
d = Random.rand(f) + 1
|
146
|
-
[x, y, z, s, t, d]
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
taka = Loto6.new
|
151
|
-
n = taka.sum(43, 43, 43, 43, 43, 43)
|
152
|
-
|
153
|
-
puts 'Loto6で参考にする数字をランダムで表示します!'
|
154
|
-
puts ''
|
155
|
-
print n
|
156
|
-
print ' '
|
157
|
-
puts ''
|
158
|
-
puts ''
|
159
|
-
puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
|
160
|
-
|
161
|
-
print '> '
|
162
|
-
|
163
|
-
elsif line.match?(lucky[1])
|
164
|
-
puts 'ナンバーズで参考にする数字をランダムで表示します!'
|
165
|
-
puts ''
|
166
|
-
class Numbers
|
167
|
-
def sum(a, b, c, d)
|
168
|
-
x = Random.rand(a)
|
169
|
-
y = Random.rand(b)
|
170
|
-
z = Random.rand(c)
|
171
|
-
s = Random.rand(d)
|
172
|
-
[x, y, z, s]
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
taka = Numbers.new
|
177
|
-
p taka.sum(10, 10, 10, 10)
|
178
|
-
puts ''
|
179
|
-
puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
|
180
|
-
|
181
|
-
print '> '
|
182
|
-
|
183
|
-
elsif line.match?(lucky[2])
|
184
|
-
puts '今日の運勢を占ってみましょう。'
|
185
|
-
puts '大吉→中吉→吉→小吉→凶→大凶'
|
186
|
-
|
187
|
-
a = rand(16)
|
188
|
-
|
189
|
-
case a
|
190
|
-
when 0..2
|
191
|
-
puts '大吉'
|
192
|
-
puts 'さぁ、外に出て頑張ろう。仕事へGo!'
|
193
|
-
when 3..5
|
194
|
-
puts '中吉'
|
195
|
-
puts 'ほどほどな普通。ストレスと向き合え!'
|
196
|
-
when 6..8
|
197
|
-
puts '吉'
|
198
|
-
puts 'だんだん疲れてきたんだな。ゆっくり休め!'
|
199
|
-
when 9..11
|
200
|
-
puts '小吉'
|
201
|
-
puts 'あまりいいことがないから、ジッとしているに限る。'
|
202
|
-
when 12..14
|
203
|
-
puts '凶'
|
204
|
-
puts 'ピンチのあとのチャンス到来。あきらめるな。'
|
205
|
-
when 15..16
|
206
|
-
puts '大凶'
|
207
|
-
puts '今日は何かまずい気をつけろ!'
|
208
|
-
else
|
209
|
-
puts '数字があふれています!注意!'
|
210
|
-
end
|
211
|
-
print '> '
|
212
|
-
|
213
|
-
elsif line.match?(dark[0])
|
214
|
-
|
215
|
-
begin
|
216
|
-
puts '
|
217
|
-
ワンライナー、1行コードの館へようこそ。さぁ、はじめましょう!'
|
218
|
-
print '> '
|
219
|
-
re = gets.chomp
|
220
|
-
puts ''
|
221
|
-
eval(re)
|
222
|
-
puts ''
|
223
|
-
rescue StandardError => et
|
224
|
-
p et
|
225
|
-
print '> '
|
226
|
-
puts 'エラーです。文字列を確認してください!'
|
227
|
-
puts ''
|
228
|
-
retry
|
229
|
-
ensure
|
230
|
-
puts '終了は exit を入力してください!'
|
231
|
-
end
|
232
|
-
|
233
|
-
print '> '
|
234
|
-
|
235
|
-
elsif line.match?(denki[0])
|
236
|
-
|
237
|
-
def anpea(a, b)
|
238
|
-
b / a
|
239
|
-
end
|
240
|
-
|
241
|
-
puts
|
242
|
-
puts '抵抗を入力してください'
|
243
|
-
|
244
|
-
print '> '
|
245
|
-
f = gets.to_i
|
246
|
-
|
247
|
-
puts
|
248
|
-
puts '電圧を入力してください'
|
249
|
-
print '> '
|
250
|
-
|
251
|
-
g = gets.to_i
|
252
|
-
|
253
|
-
m = anpea(f, g)
|
254
|
-
|
255
|
-
puts
|
256
|
-
puts "電流は#{m.round}です。"
|
257
|
-
|
258
|
-
print '> '
|
259
|
-
|
260
|
-
elsif line.match?(denki[1])
|
261
|
-
|
262
|
-
def volt(c, d)
|
263
|
-
c * d
|
264
|
-
end
|
265
|
-
|
266
|
-
puts
|
267
|
-
puts '抵抗を入力してください'
|
268
|
-
print '> '
|
269
|
-
|
270
|
-
h = gets.to_i
|
271
|
-
puts
|
272
|
-
puts '電流を入力してください'
|
273
|
-
|
274
|
-
print '> '
|
275
|
-
i = gets.to_i
|
276
|
-
|
277
|
-
j = volt(h, i)
|
278
|
-
|
279
|
-
puts
|
280
|
-
puts "電圧は#{j.round}です。"
|
281
|
-
|
282
|
-
print '> '
|
283
|
-
|
284
|
-
elsif line.match?(denki[2])
|
285
|
-
|
286
|
-
def rister(k, l)
|
287
|
-
k / l
|
288
|
-
end
|
289
|
-
|
290
|
-
puts
|
291
|
-
puts '電流を入力してください'
|
292
|
-
print '> '
|
293
|
-
|
294
|
-
l = gets.to_i
|
295
|
-
puts
|
296
|
-
puts '電圧を入力してください'
|
297
|
-
|
298
|
-
print '> '
|
299
|
-
k = gets.to_i
|
300
|
-
|
301
|
-
q = rister(k, l)
|
302
|
-
|
303
|
-
puts
|
304
|
-
puts "抵抗は#{q.round}です。"
|
305
|
-
|
306
|
-
print '> '
|
307
|
-
|
308
|
-
# It is a help document of zinbeic.
|
309
|
-
|
310
|
-
elsif line.match?(str[3])
|
311
|
-
|
312
|
-
puts 'COMMAND'.center(60, '-')
|
313
|
-
|
314
|
-
puts '
|
315
|
-
sessi 華氏から摂氏へ変換します
|
316
|
-
|
317
|
-
kashi 摂氏から華氏へ変換します
|
318
|
-
|
319
|
-
kuji 今日の運勢を占います
|
320
|
-
|
321
|
-
Numbers Numbers4の候補となる数字を乱数を使って出力します
|
322
|
-
|
323
|
-
loto6 Loto6の候補となる数字を乱数を使って出力します
|
324
|
-
|
325
|
-
OneRunner ワンライナーの館へ案内します
|
326
|
-
|
327
|
-
delete ファイルを指定して削除できます
|
328
|
-
|
329
|
-
find 単語を探します
|
330
|
-
|
331
|
-
remove フォルダを消します
|
332
|
-
|
333
|
-
rename ファイルの名前を変えます
|
334
|
-
|
335
|
-
makefolder フォルダを作成します
|
336
|
-
|
337
|
-
NumberGame 数字当てゲームです (疑似乱数版)
|
338
|
-
|
339
|
-
NumberGame2 数字当てゲームです (乱数版)
|
340
|
-
|
341
|
-
Encode 文字列のエンコードを評価します
|
342
|
-
|
343
|
-
Eval eval族の館へようこそ、足し算などが行えます
|
344
|
-
|
345
|
-
Anpea オームの法則を使い、電流を調べます
|
346
|
-
|
347
|
-
Volt オームの法則を使い、電圧を調べます
|
348
|
-
|
349
|
-
Rister オームの法則を使い、抵抗を調べます
|
350
|
-
|
351
|
-
week 現在日付と曜日を表示します
|
352
|
-
|
353
|
-
calendar PyCallでpythonを呼び出しカレンダー表示します
|
354
|
-
|
355
|
-
output 外部コマンドを実行できます
|
356
|
-
※ ただし、入力待ちは実行できません
|
357
|
-
|
358
|
-
weather zinbei2の天気機能を移植しました
|
359
|
-
|
360
|
-
reader RSSの取得先からタイトル表示 (雨音から移植)
|
361
|
-
|
362
|
-
atom gem install feedjira (v3.0.0~)
|
363
|
-
gem install httparty
|
364
|
-
atom形式のrssを読み込むことができます
|
365
|
-
|
366
|
-
result rssの記号を個数としてカウントします
|
367
|
-
※ ただし、カウント後zinbeiwを終了します
|
368
|
-
|
369
|
-
rss RSS投稿時間帯を判別します
|
370
|
-
|
371
|
-
終了するときは、exitと入力します'
|
372
|
-
|
373
|
-
puts 'COMMAND'.center(60, '-')
|
374
|
-
|
375
|
-
print '> '
|
376
|
-
|
377
|
-
# It is a help document of zinbeic exit!
|
378
|
-
|
379
|
-
# The command which can be called is only once.
|
380
|
-
elsif line.match?(once[0])
|
381
|
-
|
382
|
-
begin
|
383
|
-
print '探したい文字列を入力してください: '
|
384
|
-
re = gets.chomp
|
385
|
-
rescue StandardError => et
|
386
|
-
p et
|
387
|
-
puts 'エラーです。文字列を確認してください!'
|
388
|
-
retry
|
389
|
-
end
|
390
|
-
|
391
|
-
begin
|
392
|
-
print '探したいフォルダのパスを指定してください: '
|
393
|
-
fo = gets.chomp
|
394
|
-
rescue StandardError => es
|
395
|
-
p es
|
396
|
-
puts 'エラーです。文字列を確認してください!'
|
397
|
-
end
|
398
|
-
|
399
|
-
begin
|
400
|
-
Dir.chdir(fo)
|
401
|
-
rescue Errno::EEXIST
|
402
|
-
Errno::EEXIST
|
403
|
-
end
|
404
|
-
|
405
|
-
begin
|
406
|
-
print 'ファイル名を拡張子を含んで入力してください: '
|
407
|
-
|
408
|
-
filename = gets.chomp
|
409
|
-
File.open(filename) do |d|
|
410
|
-
puts ' '
|
411
|
-
|
412
|
-
while (liner = d.gets)
|
413
|
-
liner.chomp!
|
414
|
-
next unless liner.match?(re)
|
415
|
-
printf('%4d 行目 : %s ', d.lineno, liner)
|
416
|
-
print ': Find!(発見!)'
|
417
|
-
puts ' '
|
418
|
-
puts ' '
|
419
|
-
end
|
420
|
-
end
|
421
|
-
rescue StandardError => ex
|
422
|
-
p ex
|
423
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
424
|
-
retry
|
425
|
-
ensure
|
426
|
-
puts '終了は exit を入力してください!'
|
427
|
-
end
|
428
|
-
print '> '
|
429
|
-
|
430
|
-
elsif line.match?(once[1])
|
431
|
-
|
432
|
-
begin
|
433
|
-
print '消したいフォルダのパスを指定してください: '
|
434
|
-
mo = gets.chomp
|
435
|
-
rescue StandardError => es
|
436
|
-
p es
|
437
|
-
puts 'エラーです。文字列を確認してください!'
|
438
|
-
end
|
439
|
-
|
440
|
-
begin
|
441
|
-
Dir.chdir(mo)
|
442
|
-
rescue Errno::EEXIST
|
443
|
-
Errno::EEXIST
|
444
|
-
end
|
445
|
-
|
446
|
-
begin
|
447
|
-
print 'ファイル名を拡張子を含んで入力してください: '
|
448
|
-
|
449
|
-
del = readline.chomp!
|
450
|
-
File.delete(del)
|
451
|
-
|
452
|
-
puts '削除しました。'
|
453
|
-
rescue StandardError => ex
|
454
|
-
p ex
|
455
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
456
|
-
retry
|
457
|
-
ensure
|
458
|
-
puts '終了は exit を入力してください!'
|
459
|
-
end
|
460
|
-
print '> '
|
461
|
-
|
462
|
-
elsif line.match?(once[2])
|
463
|
-
|
464
|
-
begin
|
465
|
-
print '削除したいフォルダのパスを指定してください: '
|
466
|
-
st = gets.chomp
|
467
|
-
rescue StandardError => es
|
468
|
-
p es
|
469
|
-
puts 'エラーです。文字列を確認してください!'
|
470
|
-
end
|
471
|
-
|
472
|
-
begin
|
473
|
-
Dir.chdir(st)
|
474
|
-
rescue Errno::EEXIST
|
475
|
-
Errno::EEXIST
|
476
|
-
end
|
477
|
-
|
478
|
-
begin
|
479
|
-
print '削除したいフォルダ名を拡張子を含んで入力してください: '
|
480
|
-
|
481
|
-
rem = readline.chomp!
|
482
|
-
Dir.rmdir(rem)
|
483
|
-
|
484
|
-
puts '削除しました。'
|
485
|
-
rescue StandardError => ex
|
486
|
-
p ex
|
487
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
488
|
-
retry
|
489
|
-
ensure
|
490
|
-
puts '終了は exit を入力してください!'
|
491
|
-
end
|
492
|
-
print '> '
|
493
|
-
elsif line.match?(once[3])
|
494
|
-
|
495
|
-
begin
|
496
|
-
print '名前を変えたいフォルダのパスを指定してください: '
|
497
|
-
nem = gets.chomp
|
498
|
-
rescue StandardError => es
|
499
|
-
p es
|
500
|
-
puts 'エラーです。文字列を確認してください!'
|
501
|
-
end
|
502
|
-
|
503
|
-
begin
|
504
|
-
Dir.chdir(nem)
|
505
|
-
rescue Errno::EEXIST
|
506
|
-
Errno::EEXIST
|
507
|
-
end
|
508
|
-
|
509
|
-
begin
|
510
|
-
print '現在のファイル名を拡張子を含んで入力してください: '
|
511
|
-
re = gets.chomp!
|
512
|
-
rescue StandardError => ex
|
513
|
-
p ex
|
514
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
515
|
-
retry
|
516
|
-
end
|
517
|
-
|
518
|
-
begin
|
519
|
-
print '変更するファイル名を拡張子を含んで入力してください: '
|
520
|
-
|
521
|
-
no = gets.chomp!
|
522
|
-
|
523
|
-
File.rename(re, no)
|
524
|
-
|
525
|
-
puts '変更しました。'
|
526
|
-
rescue StandardError => ex
|
527
|
-
p ex
|
528
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
529
|
-
retry
|
530
|
-
ensure
|
531
|
-
puts '終了は exit を入力してください!'
|
532
|
-
end
|
533
|
-
|
534
|
-
print '> '
|
535
|
-
elsif line.match?(once[4])
|
536
|
-
|
537
|
-
begin
|
538
|
-
print '作成したいフォルダのパスを指定してください: '
|
539
|
-
mk = gets.chomp
|
540
|
-
rescue StandardError => es
|
541
|
-
p es
|
542
|
-
puts 'エラーです。文字列を確認してください!'
|
543
|
-
end
|
544
|
-
|
545
|
-
begin
|
546
|
-
Dir.chdir(mk)
|
547
|
-
rescue Errno::EEXIST
|
548
|
-
Errno::EEXIST
|
549
|
-
end
|
550
|
-
|
551
|
-
begin
|
552
|
-
print 'フォルダ名を入力してください: '
|
553
|
-
|
554
|
-
ma = readline.chomp!
|
555
|
-
Dir.mkdir(ma)
|
556
|
-
|
557
|
-
puts '作成しました。'
|
558
|
-
rescue StandardError => ex
|
559
|
-
p ex
|
560
|
-
puts 'エラーです。ファイル名を確認してください。\n'
|
561
|
-
retry
|
562
|
-
ensure
|
563
|
-
puts '終了は exit を入力してください!'
|
564
|
-
end
|
565
|
-
|
566
|
-
print '> '
|
567
|
-
elsif line.match?(once[5])
|
568
|
-
begin
|
569
|
-
x = SecureRandom.random_number(1..
|
570
|
-
|
571
|
-
puts ''
|
572
|
-
puts '何回まで、繰り返すか指定してください (20回が限度です)'
|
573
|
-
print '> '
|
574
|
-
num = (gets.chomp.to_i).freeze
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
puts ''
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
puts
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
puts '
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
puts
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
puts
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
puts ''
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
puts '
|
705
|
-
puts ''
|
706
|
-
|
707
|
-
|
708
|
-
puts ''
|
709
|
-
|
710
|
-
puts
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
puts
|
716
|
-
puts ''
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
puts '
|
730
|
-
puts ''
|
731
|
-
puts '
|
732
|
-
puts ''
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
puts '
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
puts '
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
puts '
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
puts
|
777
|
-
|
778
|
-
|
779
|
-
puts
|
780
|
-
|
781
|
-
|
782
|
-
puts
|
783
|
-
|
784
|
-
|
785
|
-
puts
|
786
|
-
|
787
|
-
|
788
|
-
puts
|
789
|
-
|
790
|
-
|
791
|
-
puts '
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
puts '
|
804
|
-
puts ''
|
805
|
-
puts '
|
806
|
-
puts ''
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
puts '
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
puts '
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
puts
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
require '
|
848
|
-
require '
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
------------------------------------------------------------------------
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
puts '
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
puts
|
891
|
-
puts '
|
892
|
-
puts ''
|
893
|
-
puts '
|
894
|
-
puts ''
|
895
|
-
puts ''
|
896
|
-
puts '
|
897
|
-
puts
|
898
|
-
puts
|
899
|
-
puts ''
|
900
|
-
|
901
|
-
puts
|
902
|
-
puts
|
903
|
-
puts
|
904
|
-
|
905
|
-
print '
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
puts '
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
puts '
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
print '
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
puts '
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
print '
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
puts ''
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
puts ' 回です'
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
puts '
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
print '
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
puts ''
|
1074
|
-
puts '
|
1075
|
-
print '> '
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
puts '
|
1112
|
-
puts ''
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# vim: filetype=ruby
|
5
|
+
|
6
|
+
require "#{File.dirname(__FILE__)}/../req/speak"
|
7
|
+
|
8
|
+
lib = File.expand_path('lib', __dir__)
|
9
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
10
|
+
|
11
|
+
class Emerald
|
12
|
+
attr_accessor :fibonacci, :fizzbizz, :version, :kurage
|
13
|
+
|
14
|
+
def version
|
15
|
+
print 'Rubyのバージョン情報を出力します! : '
|
16
|
+
puts RUBY_VERSION
|
17
|
+
end
|
18
|
+
|
19
|
+
def fibonacci
|
20
|
+
puts 'フィボナッチ数列を出力します! '
|
21
|
+
puts ''
|
22
|
+
lo = 1
|
23
|
+
hi = 1
|
24
|
+
print lo
|
25
|
+
print ' '
|
26
|
+
while hi < 50
|
27
|
+
print hi
|
28
|
+
hi = lo + hi
|
29
|
+
lo = hi - lo
|
30
|
+
print ' '
|
31
|
+
end
|
32
|
+
puts ''
|
33
|
+
end
|
34
|
+
|
35
|
+
def fizzbizz
|
36
|
+
puts 'FizzBizz問題の出力結果です!'
|
37
|
+
puts ''
|
38
|
+
(1..15).each do |t|
|
39
|
+
if t % 15 == 0
|
40
|
+
print 'FizzBizz'
|
41
|
+
elsif t % 3 == 0
|
42
|
+
print 'Fizz'
|
43
|
+
elsif t % 5 == 0
|
44
|
+
print 'Bizz'
|
45
|
+
else
|
46
|
+
print t
|
47
|
+
end
|
48
|
+
print ' '
|
49
|
+
end
|
50
|
+
puts ''
|
51
|
+
end
|
52
|
+
|
53
|
+
def kurage
|
54
|
+
a = rand(15)
|
55
|
+
print '~'
|
56
|
+
0.upto(a) do
|
57
|
+
print '~'
|
58
|
+
end
|
59
|
+
puts '<コ:彡'
|
60
|
+
puts ''
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
saikoro = Random.rand(4)
|
65
|
+
case saikoro
|
66
|
+
when 2 then
|
67
|
+
Emerald.new.kurage
|
68
|
+
when 1 then
|
69
|
+
Emerald.new.fibonacci
|
70
|
+
when 0 then
|
71
|
+
Emerald.new.fizzbizz
|
72
|
+
else
|
73
|
+
Emerald.new.version
|
74
|
+
end
|
75
|
+
|
76
|
+
puts ''
|
77
|
+
puts 'helpを入力またはTab補完で実行しましょう!'
|
78
|
+
|
79
|
+
# search words
|
80
|
+
|
81
|
+
begin
|
82
|
+
str = %w[sessi kashi exit help].map!(&:freeze).freeze
|
83
|
+
|
84
|
+
once = %w[find delete remove rename makefolder NumberGame2 Encode week calendar NumberGame].map!(&:freeze).freeze
|
85
|
+
|
86
|
+
lucky = %w[loto6 Numbers kuji].map!(&:freeze).freeze
|
87
|
+
|
88
|
+
dark = %w[OneRunner Eval output].map!(&:freeze).freeze
|
89
|
+
|
90
|
+
denki = %w[Anpea Volt Rister].map!(&:freeze).freeze
|
91
|
+
|
92
|
+
other = %w[weather reader atom result rss].map!(&:freeze).freeze
|
93
|
+
|
94
|
+
WORDS = (str + once + lucky + dark + denki + other).map!(&:freeze).freeze
|
95
|
+
|
96
|
+
Readline.completion_proc = proc { |word|
|
97
|
+
WORDS.grep(/\A#{Regexp.quote word}/)
|
98
|
+
}
|
99
|
+
|
100
|
+
print '> '
|
101
|
+
|
102
|
+
# search words exit!
|
103
|
+
|
104
|
+
# Wainting Action code!
|
105
|
+
|
106
|
+
while (line = Readline.readline(''))
|
107
|
+
|
108
|
+
line.chomp!
|
109
|
+
|
110
|
+
if line.match?(str[0])
|
111
|
+
def seru(b)
|
112
|
+
(b - 32) * 5 / 9
|
113
|
+
end
|
114
|
+
puts '華氏を入力してください!'
|
115
|
+
.print '> '
|
116
|
+
f = gets.to_i
|
117
|
+
m = seru(f)
|
118
|
+
puts "摂氏は、#{m.round}です。"
|
119
|
+
|
120
|
+
print '> '
|
121
|
+
|
122
|
+
elsif line.match?(str[1])
|
123
|
+
def seru(b)
|
124
|
+
(1.8 * b) + 32
|
125
|
+
end
|
126
|
+
puts '摂氏を入力してください!'
|
127
|
+
print '> '
|
128
|
+
f = gets.to_i
|
129
|
+
m = seru(f)
|
130
|
+
puts "華氏は、#{m.round}です。"
|
131
|
+
|
132
|
+
print '> '
|
133
|
+
|
134
|
+
elsif line.match?(str[2])
|
135
|
+
exit!
|
136
|
+
elsif line.match?(lucky[0])
|
137
|
+
|
138
|
+
class Loto6
|
139
|
+
def sum(a, b, c, d, e, f)
|
140
|
+
x = Random.rand(a) + 1
|
141
|
+
y = Random.rand(b) + 1
|
142
|
+
z = Random.rand(c) + 1
|
143
|
+
s = Random.rand(d) + 1
|
144
|
+
t = Random.rand(e) + 1
|
145
|
+
d = Random.rand(f) + 1
|
146
|
+
[x, y, z, s, t, d]
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
taka = Loto6.new
|
151
|
+
n = taka.sum(43, 43, 43, 43, 43, 43)
|
152
|
+
|
153
|
+
puts 'Loto6で参考にする数字をランダムで表示します!'
|
154
|
+
puts ''
|
155
|
+
print n
|
156
|
+
print ' '
|
157
|
+
puts ''
|
158
|
+
puts ''
|
159
|
+
puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
|
160
|
+
|
161
|
+
print '> '
|
162
|
+
|
163
|
+
elsif line.match?(lucky[1])
|
164
|
+
puts 'ナンバーズで参考にする数字をランダムで表示します!'
|
165
|
+
puts ''
|
166
|
+
class Numbers
|
167
|
+
def sum(a, b, c, d)
|
168
|
+
x = Random.rand(a)
|
169
|
+
y = Random.rand(b)
|
170
|
+
z = Random.rand(c)
|
171
|
+
s = Random.rand(d)
|
172
|
+
[x, y, z, s]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
taka = Numbers.new
|
177
|
+
p taka.sum(10, 10, 10, 10)
|
178
|
+
puts ''
|
179
|
+
puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
|
180
|
+
|
181
|
+
print '> '
|
182
|
+
|
183
|
+
elsif line.match?(lucky[2])
|
184
|
+
puts '今日の運勢を占ってみましょう。'
|
185
|
+
puts '大吉→中吉→吉→小吉→凶→大凶'
|
186
|
+
|
187
|
+
a = rand(16)
|
188
|
+
|
189
|
+
case a
|
190
|
+
when 0..2
|
191
|
+
puts '大吉'
|
192
|
+
puts 'さぁ、外に出て頑張ろう。仕事へGo!'
|
193
|
+
when 3..5
|
194
|
+
puts '中吉'
|
195
|
+
puts 'ほどほどな普通。ストレスと向き合え!'
|
196
|
+
when 6..8
|
197
|
+
puts '吉'
|
198
|
+
puts 'だんだん疲れてきたんだな。ゆっくり休め!'
|
199
|
+
when 9..11
|
200
|
+
puts '小吉'
|
201
|
+
puts 'あまりいいことがないから、ジッとしているに限る。'
|
202
|
+
when 12..14
|
203
|
+
puts '凶'
|
204
|
+
puts 'ピンチのあとのチャンス到来。あきらめるな。'
|
205
|
+
when 15..16
|
206
|
+
puts '大凶'
|
207
|
+
puts '今日は何かまずい気をつけろ!'
|
208
|
+
else
|
209
|
+
puts '数字があふれています!注意!'
|
210
|
+
end
|
211
|
+
print '> '
|
212
|
+
|
213
|
+
elsif line.match?(dark[0])
|
214
|
+
|
215
|
+
begin
|
216
|
+
puts '
|
217
|
+
ワンライナー、1行コードの館へようこそ。さぁ、はじめましょう!'
|
218
|
+
print '> '
|
219
|
+
re = gets.chomp
|
220
|
+
puts ''
|
221
|
+
eval(re)
|
222
|
+
puts ''
|
223
|
+
rescue StandardError => et
|
224
|
+
p et
|
225
|
+
print '> '
|
226
|
+
puts 'エラーです。文字列を確認してください!'
|
227
|
+
puts ''
|
228
|
+
retry
|
229
|
+
ensure
|
230
|
+
puts '終了は exit を入力してください!'
|
231
|
+
end
|
232
|
+
|
233
|
+
print '> '
|
234
|
+
|
235
|
+
elsif line.match?(denki[0])
|
236
|
+
|
237
|
+
def anpea(a, b)
|
238
|
+
b / a
|
239
|
+
end
|
240
|
+
|
241
|
+
puts
|
242
|
+
puts '抵抗を入力してください'
|
243
|
+
|
244
|
+
print '> '
|
245
|
+
f = gets.to_i
|
246
|
+
|
247
|
+
puts
|
248
|
+
puts '電圧を入力してください'
|
249
|
+
print '> '
|
250
|
+
|
251
|
+
g = gets.to_i
|
252
|
+
|
253
|
+
m = anpea(f, g)
|
254
|
+
|
255
|
+
puts
|
256
|
+
puts "電流は#{m.round}です。"
|
257
|
+
|
258
|
+
print '> '
|
259
|
+
|
260
|
+
elsif line.match?(denki[1])
|
261
|
+
|
262
|
+
def volt(c, d)
|
263
|
+
c * d
|
264
|
+
end
|
265
|
+
|
266
|
+
puts
|
267
|
+
puts '抵抗を入力してください'
|
268
|
+
print '> '
|
269
|
+
|
270
|
+
h = gets.to_i
|
271
|
+
puts
|
272
|
+
puts '電流を入力してください'
|
273
|
+
|
274
|
+
print '> '
|
275
|
+
i = gets.to_i
|
276
|
+
|
277
|
+
j = volt(h, i)
|
278
|
+
|
279
|
+
puts
|
280
|
+
puts "電圧は#{j.round}です。"
|
281
|
+
|
282
|
+
print '> '
|
283
|
+
|
284
|
+
elsif line.match?(denki[2])
|
285
|
+
|
286
|
+
def rister(k, l)
|
287
|
+
k / l
|
288
|
+
end
|
289
|
+
|
290
|
+
puts
|
291
|
+
puts '電流を入力してください'
|
292
|
+
print '> '
|
293
|
+
|
294
|
+
l = gets.to_i
|
295
|
+
puts
|
296
|
+
puts '電圧を入力してください'
|
297
|
+
|
298
|
+
print '> '
|
299
|
+
k = gets.to_i
|
300
|
+
|
301
|
+
q = rister(k, l)
|
302
|
+
|
303
|
+
puts
|
304
|
+
puts "抵抗は#{q.round}です。"
|
305
|
+
|
306
|
+
print '> '
|
307
|
+
|
308
|
+
# It is a help document of zinbeic.
|
309
|
+
|
310
|
+
elsif line.match?(str[3])
|
311
|
+
|
312
|
+
puts 'COMMAND'.center(60, '-')
|
313
|
+
|
314
|
+
puts '
|
315
|
+
sessi 華氏から摂氏へ変換します
|
316
|
+
|
317
|
+
kashi 摂氏から華氏へ変換します
|
318
|
+
|
319
|
+
kuji 今日の運勢を占います
|
320
|
+
|
321
|
+
Numbers Numbers4の候補となる数字を乱数を使って出力します
|
322
|
+
|
323
|
+
loto6 Loto6の候補となる数字を乱数を使って出力します
|
324
|
+
|
325
|
+
OneRunner ワンライナーの館へ案内します
|
326
|
+
|
327
|
+
delete ファイルを指定して削除できます
|
328
|
+
|
329
|
+
find 単語を探します
|
330
|
+
|
331
|
+
remove フォルダを消します
|
332
|
+
|
333
|
+
rename ファイルの名前を変えます
|
334
|
+
|
335
|
+
makefolder フォルダを作成します
|
336
|
+
|
337
|
+
NumberGame 数字当てゲームです (疑似乱数版)
|
338
|
+
|
339
|
+
NumberGame2 数字当てゲームです (乱数版)
|
340
|
+
|
341
|
+
Encode 文字列のエンコードを評価します
|
342
|
+
|
343
|
+
Eval eval族の館へようこそ、足し算などが行えます
|
344
|
+
|
345
|
+
Anpea オームの法則を使い、電流を調べます
|
346
|
+
|
347
|
+
Volt オームの法則を使い、電圧を調べます
|
348
|
+
|
349
|
+
Rister オームの法則を使い、抵抗を調べます
|
350
|
+
|
351
|
+
week 現在日付と曜日を表示します
|
352
|
+
|
353
|
+
calendar PyCallでpythonを呼び出しカレンダー表示します
|
354
|
+
|
355
|
+
output 外部コマンドを実行できます
|
356
|
+
※ ただし、入力待ちは実行できません
|
357
|
+
|
358
|
+
weather zinbei2の天気機能を移植しました
|
359
|
+
|
360
|
+
reader RSSの取得先からタイトル表示 (雨音から移植)
|
361
|
+
|
362
|
+
atom gem install feedjira (v3.0.0~)
|
363
|
+
gem install httparty
|
364
|
+
atom形式のrssを読み込むことができます
|
365
|
+
|
366
|
+
result rssの記号を個数としてカウントします
|
367
|
+
※ ただし、カウント後zinbeiwを終了します
|
368
|
+
|
369
|
+
rss RSS投稿時間帯を判別します
|
370
|
+
|
371
|
+
終了するときは、exitと入力します'
|
372
|
+
|
373
|
+
puts 'COMMAND'.center(60, '-')
|
374
|
+
|
375
|
+
print '> '
|
376
|
+
|
377
|
+
# It is a help document of zinbeic exit!
|
378
|
+
|
379
|
+
# The command which can be called is only once.
|
380
|
+
elsif line.match?(once[0])
|
381
|
+
|
382
|
+
begin
|
383
|
+
print '探したい文字列を入力してください: '
|
384
|
+
re = gets.chomp
|
385
|
+
rescue StandardError => et
|
386
|
+
p et
|
387
|
+
puts 'エラーです。文字列を確認してください!'
|
388
|
+
retry
|
389
|
+
end
|
390
|
+
|
391
|
+
begin
|
392
|
+
print '探したいフォルダのパスを指定してください: '
|
393
|
+
fo = gets.chomp
|
394
|
+
rescue StandardError => es
|
395
|
+
p es
|
396
|
+
puts 'エラーです。文字列を確認してください!'
|
397
|
+
end
|
398
|
+
|
399
|
+
begin
|
400
|
+
Dir.chdir(fo)
|
401
|
+
rescue Errno::EEXIST
|
402
|
+
Errno::EEXIST
|
403
|
+
end
|
404
|
+
|
405
|
+
begin
|
406
|
+
print 'ファイル名を拡張子を含んで入力してください: '
|
407
|
+
|
408
|
+
filename = gets.chomp
|
409
|
+
File.open(filename) do |d|
|
410
|
+
puts ' '
|
411
|
+
|
412
|
+
while (liner = d.gets)
|
413
|
+
liner.chomp!
|
414
|
+
next unless liner.match?(re)
|
415
|
+
printf('%4d 行目 : %s ', d.lineno, liner)
|
416
|
+
print ': Find!(発見!)'
|
417
|
+
puts ' '
|
418
|
+
puts ' '
|
419
|
+
end
|
420
|
+
end
|
421
|
+
rescue StandardError => ex
|
422
|
+
p ex
|
423
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
424
|
+
retry
|
425
|
+
ensure
|
426
|
+
puts '終了は exit を入力してください!'
|
427
|
+
end
|
428
|
+
print '> '
|
429
|
+
|
430
|
+
elsif line.match?(once[1])
|
431
|
+
|
432
|
+
begin
|
433
|
+
print '消したいフォルダのパスを指定してください: '
|
434
|
+
mo = gets.chomp
|
435
|
+
rescue StandardError => es
|
436
|
+
p es
|
437
|
+
puts 'エラーです。文字列を確認してください!'
|
438
|
+
end
|
439
|
+
|
440
|
+
begin
|
441
|
+
Dir.chdir(mo)
|
442
|
+
rescue Errno::EEXIST
|
443
|
+
Errno::EEXIST
|
444
|
+
end
|
445
|
+
|
446
|
+
begin
|
447
|
+
print 'ファイル名を拡張子を含んで入力してください: '
|
448
|
+
|
449
|
+
del = readline.chomp!
|
450
|
+
File.delete(del)
|
451
|
+
|
452
|
+
puts '削除しました。'
|
453
|
+
rescue StandardError => ex
|
454
|
+
p ex
|
455
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
456
|
+
retry
|
457
|
+
ensure
|
458
|
+
puts '終了は exit を入力してください!'
|
459
|
+
end
|
460
|
+
print '> '
|
461
|
+
|
462
|
+
elsif line.match?(once[2])
|
463
|
+
|
464
|
+
begin
|
465
|
+
print '削除したいフォルダのパスを指定してください: '
|
466
|
+
st = gets.chomp
|
467
|
+
rescue StandardError => es
|
468
|
+
p es
|
469
|
+
puts 'エラーです。文字列を確認してください!'
|
470
|
+
end
|
471
|
+
|
472
|
+
begin
|
473
|
+
Dir.chdir(st)
|
474
|
+
rescue Errno::EEXIST
|
475
|
+
Errno::EEXIST
|
476
|
+
end
|
477
|
+
|
478
|
+
begin
|
479
|
+
print '削除したいフォルダ名を拡張子を含んで入力してください: '
|
480
|
+
|
481
|
+
rem = readline.chomp!
|
482
|
+
Dir.rmdir(rem)
|
483
|
+
|
484
|
+
puts '削除しました。'
|
485
|
+
rescue StandardError => ex
|
486
|
+
p ex
|
487
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
488
|
+
retry
|
489
|
+
ensure
|
490
|
+
puts '終了は exit を入力してください!'
|
491
|
+
end
|
492
|
+
print '> '
|
493
|
+
elsif line.match?(once[3])
|
494
|
+
|
495
|
+
begin
|
496
|
+
print '名前を変えたいフォルダのパスを指定してください: '
|
497
|
+
nem = gets.chomp
|
498
|
+
rescue StandardError => es
|
499
|
+
p es
|
500
|
+
puts 'エラーです。文字列を確認してください!'
|
501
|
+
end
|
502
|
+
|
503
|
+
begin
|
504
|
+
Dir.chdir(nem)
|
505
|
+
rescue Errno::EEXIST
|
506
|
+
Errno::EEXIST
|
507
|
+
end
|
508
|
+
|
509
|
+
begin
|
510
|
+
print '現在のファイル名を拡張子を含んで入力してください: '
|
511
|
+
re = gets.chomp!
|
512
|
+
rescue StandardError => ex
|
513
|
+
p ex
|
514
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
515
|
+
retry
|
516
|
+
end
|
517
|
+
|
518
|
+
begin
|
519
|
+
print '変更するファイル名を拡張子を含んで入力してください: '
|
520
|
+
|
521
|
+
no = gets.chomp!
|
522
|
+
|
523
|
+
File.rename(re, no)
|
524
|
+
|
525
|
+
puts '変更しました。'
|
526
|
+
rescue StandardError => ex
|
527
|
+
p ex
|
528
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
529
|
+
retry
|
530
|
+
ensure
|
531
|
+
puts '終了は exit を入力してください!'
|
532
|
+
end
|
533
|
+
|
534
|
+
print '> '
|
535
|
+
elsif line.match?(once[4])
|
536
|
+
|
537
|
+
begin
|
538
|
+
print '作成したいフォルダのパスを指定してください: '
|
539
|
+
mk = gets.chomp
|
540
|
+
rescue StandardError => es
|
541
|
+
p es
|
542
|
+
puts 'エラーです。文字列を確認してください!'
|
543
|
+
end
|
544
|
+
|
545
|
+
begin
|
546
|
+
Dir.chdir(mk)
|
547
|
+
rescue Errno::EEXIST
|
548
|
+
Errno::EEXIST
|
549
|
+
end
|
550
|
+
|
551
|
+
begin
|
552
|
+
print 'フォルダ名を入力してください: '
|
553
|
+
|
554
|
+
ma = readline.chomp!
|
555
|
+
Dir.mkdir(ma)
|
556
|
+
|
557
|
+
puts '作成しました。'
|
558
|
+
rescue StandardError => ex
|
559
|
+
p ex
|
560
|
+
puts 'エラーです。ファイル名を確認してください。\n'
|
561
|
+
retry
|
562
|
+
ensure
|
563
|
+
puts '終了は exit を入力してください!'
|
564
|
+
end
|
565
|
+
|
566
|
+
print '> '
|
567
|
+
elsif line.match?(once[5])
|
568
|
+
begin
|
569
|
+
x = SecureRandom.random_number(1..99).freeze
|
570
|
+
|
571
|
+
puts ''
|
572
|
+
puts '何回まで、繰り返すか指定してください (20回が限度です)'
|
573
|
+
print '> '
|
574
|
+
num = (gets.chomp.to_i).freeze
|
575
|
+
|
576
|
+
# ^[+-]?([1-9][0-9]*|0)$
|
577
|
+
num_s = num.to_s
|
578
|
+
unless num_s.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
|
579
|
+
tanraku_execute
|
580
|
+
end
|
581
|
+
|
582
|
+
puts "#{num}回、繰り返すまでに当ててください:"
|
583
|
+
puts ''
|
584
|
+
puts '1 ~ 99までの数字をいれてください、NumberGameスタート!'
|
585
|
+
print '> '
|
586
|
+
|
587
|
+
if num < 21
|
588
|
+
num.times do |z|
|
589
|
+
input_n = (gets.chomp.to_i).freeze
|
590
|
+
input_m = input_n.to_s
|
591
|
+
|
592
|
+
# 1 ~ 99までの整数
|
593
|
+
unless input_m.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
|
594
|
+
tanraku_execute
|
595
|
+
end
|
596
|
+
|
597
|
+
if input_m.match(/^0/o)
|
598
|
+
puts ''
|
599
|
+
puts '0と00または空白を入力したため、終了します...'
|
600
|
+
puts ''
|
601
|
+
break
|
602
|
+
elsif input_n < x
|
603
|
+
puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
|
604
|
+
print '> '
|
605
|
+
elsif input_n > x
|
606
|
+
puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
|
607
|
+
print '> '
|
608
|
+
elsif input_n == x
|
609
|
+
puts ''
|
610
|
+
puts 'おめでとうございます、正解です'
|
611
|
+
puts ''
|
612
|
+
puts "#{num}回範囲内: #{z+1}回目で正解しました"
|
613
|
+
puts ''
|
614
|
+
break
|
615
|
+
else
|
616
|
+
puts ''
|
617
|
+
puts '正解は' + x.to_s + 'でした'
|
618
|
+
puts ''
|
619
|
+
puts '処理を終了します...'
|
620
|
+
puts ''
|
621
|
+
break
|
622
|
+
end
|
623
|
+
end
|
624
|
+
else
|
625
|
+
puts ''
|
626
|
+
puts '繰り返す回数が20回を超えたため、終了します...'
|
627
|
+
puts ''
|
628
|
+
end
|
629
|
+
|
630
|
+
rescue StandardError => s
|
631
|
+
puts s.backtrace
|
632
|
+
tanraku_execute
|
633
|
+
|
634
|
+
ensure
|
635
|
+
puts '正解は' + x.to_s + 'でした'
|
636
|
+
puts ''
|
637
|
+
puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
|
638
|
+
print '> '
|
639
|
+
end
|
640
|
+
|
641
|
+
elsif line.match?(once[6])
|
642
|
+
puts
|
643
|
+
|
644
|
+
class Enco
|
645
|
+
begin
|
646
|
+
puts '文字列を入力してください'
|
647
|
+
print '> '
|
648
|
+
filename = gets.chomp
|
649
|
+
rescue StandardError => ee
|
650
|
+
p ee
|
651
|
+
puts 'エラーです。文字列を確認してください!'
|
652
|
+
end
|
653
|
+
|
654
|
+
puts ''
|
655
|
+
puts '変更前のエンコードを指定してください'
|
656
|
+
puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
|
657
|
+
print '> '
|
658
|
+
befenco = gets.chomp
|
659
|
+
|
660
|
+
begin
|
661
|
+
puts ''
|
662
|
+
puts 'エンコードを指定してください'
|
663
|
+
puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
|
664
|
+
print '> '
|
665
|
+
aftenco = gets.chomp
|
666
|
+
puts
|
667
|
+
rescue StandardError => ed
|
668
|
+
p ed
|
669
|
+
puts 'エラーです。エンコーディングを確認してください!'
|
670
|
+
end
|
671
|
+
|
672
|
+
ut = Encoding::Converter.new(befenco, aftenco)
|
673
|
+
p ut.convert(filename)
|
674
|
+
ut.finish.dump
|
675
|
+
puts
|
676
|
+
|
677
|
+
ensure
|
678
|
+
puts '終了は exit を入力してください!'
|
679
|
+
puts
|
680
|
+
end
|
681
|
+
print '> '
|
682
|
+
elsif line.match?(dark[1])
|
683
|
+
begin
|
684
|
+
puts 'eval族の館へようこそ!
|
685
|
+
簡単な文字列を評価してください'
|
686
|
+
print '> '
|
687
|
+
re = gets.chomp
|
688
|
+
puts ''
|
689
|
+
p eval(re)
|
690
|
+
puts ''
|
691
|
+
rescue StandardError => et
|
692
|
+
p et
|
693
|
+
print '> '
|
694
|
+
puts 'エラーです。文字列を確認してください!'
|
695
|
+
puts ''
|
696
|
+
retry
|
697
|
+
ensure
|
698
|
+
puts '終了は exit を入力してください!'
|
699
|
+
end
|
700
|
+
print '> '
|
701
|
+
|
702
|
+
elsif line.match?(dark[2])
|
703
|
+
begin
|
704
|
+
puts ''
|
705
|
+
puts 'OUTPUT'.center(60, '-')
|
706
|
+
puts ''
|
707
|
+
puts '外部コマンドを実行できます!'
|
708
|
+
puts ''
|
709
|
+
puts 'OUTPUT'.center(60, '-')
|
710
|
+
puts ''
|
711
|
+
print '> '
|
712
|
+
re = gets.chomp
|
713
|
+
puts ''
|
714
|
+
stdout, stderr, status = Open3.capture3(re)
|
715
|
+
puts stdout
|
716
|
+
puts ''
|
717
|
+
rescue StandardError => et
|
718
|
+
p et
|
719
|
+
print '> '
|
720
|
+
puts 'エラーです。文字列を確認してください!'
|
721
|
+
puts ''
|
722
|
+
retry
|
723
|
+
ensure
|
724
|
+
puts '終了は exit を入力してください!'
|
725
|
+
end
|
726
|
+
print '> '
|
727
|
+
|
728
|
+
elsif line.match?(once[7])
|
729
|
+
puts ''
|
730
|
+
puts 'WEEK'.center(60, '-')
|
731
|
+
puts ''
|
732
|
+
puts '入力した日付を曜日で判定します'
|
733
|
+
puts '半角数字で入力してください'
|
734
|
+
puts 'それでは、スタート!'
|
735
|
+
puts ''
|
736
|
+
puts 'WEEK'.center(60, '-')
|
737
|
+
puts ''
|
738
|
+
|
739
|
+
begin
|
740
|
+
puts '調べたい年を入力してください'
|
741
|
+
print '> '
|
742
|
+
nen = gets.chomp.to_i
|
743
|
+
rescue StandardError => ee
|
744
|
+
p ee
|
745
|
+
puts 'エラーです。数字を確認してください!'
|
746
|
+
end
|
747
|
+
|
748
|
+
puts ''
|
749
|
+
|
750
|
+
begin
|
751
|
+
puts '調べたい月を入力してください'
|
752
|
+
print '> '
|
753
|
+
mon = gets.chomp.to_i
|
754
|
+
rescue StandardError => ey
|
755
|
+
p ey
|
756
|
+
puts 'エラーです。数字を確認してください!'
|
757
|
+
end
|
758
|
+
|
759
|
+
puts ''
|
760
|
+
|
761
|
+
begin
|
762
|
+
puts '調べたい日を入力してください'
|
763
|
+
print '> '
|
764
|
+
days = gets.chomp.to_i
|
765
|
+
rescue StandardError => ex
|
766
|
+
p ex
|
767
|
+
puts 'エラーです。数字を確認してください!'
|
768
|
+
end
|
769
|
+
|
770
|
+
puts ''
|
771
|
+
|
772
|
+
t = Time.local(nen, mon, days)
|
773
|
+
|
774
|
+
if t.sunday?
|
775
|
+
puts "#{nen}年#{mon}月#{days}日は、日曜日です。"
|
776
|
+
puts ''
|
777
|
+
elsif t.monday?
|
778
|
+
puts "#{nen}年#{mon}月#{days}日は、月曜日です。"
|
779
|
+
puts ''
|
780
|
+
elsif t.tuesday?
|
781
|
+
puts "#{nen}年#{mon}月#{days}日は、火曜日です。"
|
782
|
+
puts ''
|
783
|
+
elsif t.wednesday?
|
784
|
+
puts "#{nen}年#{mon}月#{days}日は、水曜日です。"
|
785
|
+
puts ''
|
786
|
+
elsif t.thursday?
|
787
|
+
puts "#{nen}年#{mon}月#{days}日は、木曜日です。"
|
788
|
+
puts ''
|
789
|
+
elsif t.friday?
|
790
|
+
puts "#{nen}年#{mon}月#{days}日は、金曜日です。"
|
791
|
+
puts ''
|
792
|
+
elsif t.saturday?
|
793
|
+
puts "#{nen}年#{mon}月#{days}日は、土曜日です。"
|
794
|
+
puts ''
|
795
|
+
else
|
796
|
+
puts 'ありえない曜日を指しています...終了します! '
|
797
|
+
exit!
|
798
|
+
end
|
799
|
+
|
800
|
+
print '> '
|
801
|
+
|
802
|
+
elsif line.match?(once[8])
|
803
|
+
puts ''
|
804
|
+
puts 'WEEK'.center(60, '-')
|
805
|
+
puts ''
|
806
|
+
puts '入力した日付をカレンダーで表示します'
|
807
|
+
puts '半角数字で入力してください'
|
808
|
+
puts 'それでは、スタート!'
|
809
|
+
puts ''
|
810
|
+
puts 'WEEK'.center(60, '-')
|
811
|
+
puts ''
|
812
|
+
|
813
|
+
begin
|
814
|
+
puts '調べたい年を入力してください'
|
815
|
+
print '> '
|
816
|
+
nen = gets.chomp.to_i
|
817
|
+
rescue StandardError => ee
|
818
|
+
p ee
|
819
|
+
puts 'エラーです。数字を確認してください!'
|
820
|
+
end
|
821
|
+
|
822
|
+
puts ''
|
823
|
+
|
824
|
+
begin
|
825
|
+
puts '調べたい月を入力してください'
|
826
|
+
print '> '
|
827
|
+
mon = gets.chomp.to_i
|
828
|
+
rescue StandardError => ey
|
829
|
+
p ey
|
830
|
+
puts 'エラーです。数字を確認してください!'
|
831
|
+
end
|
832
|
+
|
833
|
+
puts ''
|
834
|
+
|
835
|
+
t = Time.local(nen, mon)
|
836
|
+
|
837
|
+
pyimport :calendar
|
838
|
+
puts(calendar.month(nen, mon))
|
839
|
+
|
840
|
+
puts ''
|
841
|
+
|
842
|
+
# The command which can be called is only once.
|
843
|
+
print '> '
|
844
|
+
|
845
|
+
elsif line.match?(other[0])
|
846
|
+
|
847
|
+
require 'net/http'
|
848
|
+
require 'uri'
|
849
|
+
require 'json'
|
850
|
+
require 'time'
|
851
|
+
require 'date'
|
852
|
+
require 'rinku'
|
853
|
+
require 'sanitize'
|
854
|
+
|
855
|
+
|
856
|
+
text = <<-EOS
|
857
|
+
------------------------------------------------------------------------
|
858
|
+
|
859
|
+
IDの詳細はこちら → https://github.com/takkii/Utakata/wiki/Utakata-wiki
|
860
|
+
|
861
|
+
※ 日本全国のIDから自分の地域IDを入力!
|
862
|
+
------------------------------------------------------------------------
|
863
|
+
EOS
|
864
|
+
|
865
|
+
links = Rinku.auto_link(text, mode=:all, link_attr=nil, skip_tags=nil)
|
866
|
+
puts Sanitize.clean(links)
|
867
|
+
|
868
|
+
begin
|
869
|
+
puts '調べたい地域のIDを入力してください'
|
870
|
+
puts ''
|
871
|
+
print '> '
|
872
|
+
ID = gets.chomp
|
873
|
+
rescue StandardError => es
|
874
|
+
p es
|
875
|
+
puts 'エラーです。IDを確認してください!'
|
876
|
+
end
|
877
|
+
|
878
|
+
url = 'https://weather.tsukumijima.net/api/forecast?city=' + ID
|
879
|
+
uri = URI.parse(url)
|
880
|
+
json = Net::HTTP.get(uri)
|
881
|
+
result = JSON.parse!(json)
|
882
|
+
today_tel = result['forecasts'][0]['telop']
|
883
|
+
tomor_tel = result['forecasts'][1]['telop']
|
884
|
+
min_tem = result['forecasts'][1]['temperature']['min']['celsius']
|
885
|
+
max_tem = result['forecasts'][1]['temperature']['max']['celsius']
|
886
|
+
des = result['description']['text']
|
887
|
+
des1 = result['description']['publicTime']
|
888
|
+
des2 = DateTime.parse(des1)
|
889
|
+
|
890
|
+
# puts result
|
891
|
+
puts ' 天気予報 '.center(60, '-')
|
892
|
+
puts ''
|
893
|
+
puts '今日の天気は、' + today_tel + ' でしょう '
|
894
|
+
puts '最低気温は、' + min_tem + '℃' + ' でしょう '
|
895
|
+
puts '最高気温は、' + max_tem + '℃' + ' でしょう '
|
896
|
+
puts '明日の天気は、' + tomor_tel + ' でしょう '
|
897
|
+
puts ''
|
898
|
+
puts ' 天気予報 '.center(60, '-')
|
899
|
+
puts ''
|
900
|
+
puts ''
|
901
|
+
puts ' 天気概況文 '.center(60, '-')
|
902
|
+
puts
|
903
|
+
puts des
|
904
|
+
puts ''
|
905
|
+
print ' 天気概況文の発表時刻 : '
|
906
|
+
puts des2.strftime('%Y年%m月%d日 %H時%M分%S秒')
|
907
|
+
puts ''
|
908
|
+
puts ' 天気概況文 '.center(60, '-')
|
909
|
+
|
910
|
+
print '> '
|
911
|
+
|
912
|
+
elsif line.match?(other[1])
|
913
|
+
require 'rss'
|
914
|
+
require 'date'
|
915
|
+
require 'kconv'
|
916
|
+
|
917
|
+
begin
|
918
|
+
puts '調べたいRSSのURLを入力してください'
|
919
|
+
print '> '
|
920
|
+
URL = gets.chomp
|
921
|
+
rescue StandardError => eq
|
922
|
+
p eq
|
923
|
+
puts 'エラーです。URLを確認してください!'
|
924
|
+
end
|
925
|
+
|
926
|
+
rss = RSS::Parser.parse(URL)
|
927
|
+
|
928
|
+
puts ''
|
929
|
+
|
930
|
+
rss.items.collect do |scale|
|
931
|
+
puts scale.title
|
932
|
+
end
|
933
|
+
|
934
|
+
puts ''
|
935
|
+
print '> '
|
936
|
+
|
937
|
+
elsif line.match?(other[2])
|
938
|
+
|
939
|
+
require 'feedjira'
|
940
|
+
require 'httparty'
|
941
|
+
require 'date'
|
942
|
+
require 'kconv'
|
943
|
+
|
944
|
+
begin
|
945
|
+
puts ''
|
946
|
+
puts '調べたいRSSのURLを入力してください'
|
947
|
+
puts ''
|
948
|
+
print '>'
|
949
|
+
URL = gets.chomp
|
950
|
+
rescue StandardError => es
|
951
|
+
p es
|
952
|
+
puts 'エラーです。URLを確認してください!'
|
953
|
+
end
|
954
|
+
|
955
|
+
Feedjira.logger.level = Logger::FATAL
|
956
|
+
atom = HTTParty.get(URL).body
|
957
|
+
|
958
|
+
Feedjira.parse(atom).entries.collect do |entry|
|
959
|
+
v = /1[0-9]/
|
960
|
+
w = /0[0-9]/
|
961
|
+
x = /2[0-4]/
|
962
|
+
s = entry.published.to_time.strftime '%H'
|
963
|
+
|
964
|
+
if s.match?(v)
|
965
|
+
print '#'
|
966
|
+
print ' '
|
967
|
+
elsif s.match?(w)
|
968
|
+
print '$'
|
969
|
+
print ' '
|
970
|
+
elsif s.match?(x)
|
971
|
+
print '@'
|
972
|
+
print ' '
|
973
|
+
end
|
974
|
+
end
|
975
|
+
|
976
|
+
puts ''
|
977
|
+
print '>'
|
978
|
+
|
979
|
+
elsif line.match?(other[3])
|
980
|
+
|
981
|
+
begin
|
982
|
+
puts 'rssの出力結果を貼り付けてください'
|
983
|
+
print '>'
|
984
|
+
re = gets.chomp
|
985
|
+
rescue StandardError => ee
|
986
|
+
p ee
|
987
|
+
puts 'エラーです。数字を確認してください!'
|
988
|
+
end
|
989
|
+
|
990
|
+
puts 'ログの最近の投稿時間を判別します...'
|
991
|
+
|
992
|
+
str = re.split('')
|
993
|
+
|
994
|
+
puts ''
|
995
|
+
print '20~24時に投稿した回数は...'
|
996
|
+
print str.count('@')
|
997
|
+
puts ' 回あります'
|
998
|
+
print '0時から9時に投稿した回数は...'
|
999
|
+
print str.count('$')
|
1000
|
+
puts ' 回あります'
|
1001
|
+
print '10時から19時に投稿した回数は...'
|
1002
|
+
print str.count('#')
|
1003
|
+
puts ' 回あります'
|
1004
|
+
|
1005
|
+
puts ''
|
1006
|
+
enum = [str.count('@'), str.count('$'), str.count('#')]
|
1007
|
+
|
1008
|
+
q = enum.max
|
1009
|
+
t = enum.min
|
1010
|
+
|
1011
|
+
puts '最も多い数字は ' + q.to_s + ' 回です'
|
1012
|
+
puts '最も少ない数字は ' + t.to_s + ' 回です'
|
1013
|
+
|
1014
|
+
puts ''
|
1015
|
+
print '合計 '
|
1016
|
+
print str.count('@') + str.count('$') + str.count('#')
|
1017
|
+
puts ' 回です'
|
1018
|
+
puts ''
|
1019
|
+
|
1020
|
+
exit!
|
1021
|
+
|
1022
|
+
elsif line.match?(other[4])
|
1023
|
+
|
1024
|
+
require 'rss'
|
1025
|
+
require 'date'
|
1026
|
+
require 'kconv'
|
1027
|
+
|
1028
|
+
# date = Time.new.strftime('現在時刻 : %Y年%m月%d日 %H時%M分')
|
1029
|
+
|
1030
|
+
begin
|
1031
|
+
puts '調べたいRSSのURLを入力してください'
|
1032
|
+
print '>'
|
1033
|
+
URL = gets.chomp
|
1034
|
+
rescue StandardError => es
|
1035
|
+
p es
|
1036
|
+
puts 'エラーです。URLを確認してください!'
|
1037
|
+
end
|
1038
|
+
|
1039
|
+
rss = RSS::Parser.parse(URL)
|
1040
|
+
|
1041
|
+
rss.items.collect do |scale|
|
1042
|
+
# puts scale.pubDate.strftime '投稿時刻 : %Y年%m月%d日 %H時%M分'
|
1043
|
+
# scale.pubDate.strftime '%H'
|
1044
|
+
|
1045
|
+
v = /1[0-9]/
|
1046
|
+
w = /0[0-9]/
|
1047
|
+
x = /2[0-4]/
|
1048
|
+
s = scale.pubDate.strftime '%H'
|
1049
|
+
|
1050
|
+
if s.match?(v)
|
1051
|
+
print '#'
|
1052
|
+
print ' '
|
1053
|
+
elsif s.match?(w)
|
1054
|
+
print '$'
|
1055
|
+
print ' '
|
1056
|
+
elsif s.match?(x)
|
1057
|
+
print '@'
|
1058
|
+
print ' '
|
1059
|
+
# print ' '
|
1060
|
+
# puts scale.title
|
1061
|
+
# puts scale.link
|
1062
|
+
# puts scale.description
|
1063
|
+
# print ' '
|
1064
|
+
end
|
1065
|
+
end
|
1066
|
+
puts ''
|
1067
|
+
print '>'
|
1068
|
+
|
1069
|
+
elsif line.match?(once[9])
|
1070
|
+
begin
|
1071
|
+
x = Random.rand(1..99)
|
1072
|
+
|
1073
|
+
puts ''
|
1074
|
+
puts '何回まで、繰り返すか指定してください (20回が限度です)'
|
1075
|
+
print '> '
|
1076
|
+
num = (gets.chomp.to_i).freeze
|
1077
|
+
|
1078
|
+
# ^[+-]?([1-9][0-9]*|0)$
|
1079
|
+
num_s = num.to_s
|
1080
|
+
unless num_s.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
|
1081
|
+
tanraku_execute
|
1082
|
+
end
|
1083
|
+
|
1084
|
+
puts "#{num}回、繰り返すまでに当ててください:"
|
1085
|
+
puts ''
|
1086
|
+
puts '1 ~ 99までの数字をいれてください、NumberGameスタート!'
|
1087
|
+
print '> '
|
1088
|
+
|
1089
|
+
if num < 21
|
1090
|
+
num.times do |z|
|
1091
|
+
input_n = (gets.chomp.to_i).freeze
|
1092
|
+
input_m = input_n.to_s
|
1093
|
+
|
1094
|
+
# 1 ~ 99までの整数
|
1095
|
+
unless input_m.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
|
1096
|
+
tanraku_execute
|
1097
|
+
end
|
1098
|
+
|
1099
|
+
if input_m.match(/^0/o)
|
1100
|
+
puts ''
|
1101
|
+
puts '0と00または空白を入力したため、終了します...'
|
1102
|
+
puts ''
|
1103
|
+
break
|
1104
|
+
elsif input_n < x
|
1105
|
+
puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
|
1106
|
+
print '> '
|
1107
|
+
elsif input_n > x
|
1108
|
+
puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
|
1109
|
+
print '> '
|
1110
|
+
elsif input_n == x
|
1111
|
+
puts ''
|
1112
|
+
puts 'おめでとうございます、正解です'
|
1113
|
+
puts ''
|
1114
|
+
puts "#{num}回範囲内: #{z+1}回目で正解しました"
|
1115
|
+
puts ''
|
1116
|
+
break
|
1117
|
+
else
|
1118
|
+
puts ''
|
1119
|
+
puts '正解は' + x.to_s + 'でした'
|
1120
|
+
puts ''
|
1121
|
+
puts '処理を終了します...'
|
1122
|
+
puts ''
|
1123
|
+
break
|
1124
|
+
end
|
1125
|
+
end
|
1126
|
+
else
|
1127
|
+
puts ''
|
1128
|
+
puts '繰り返す回数が20回を超えたため、終了します...'
|
1129
|
+
puts ''
|
1130
|
+
end
|
1131
|
+
|
1132
|
+
rescue StandardError => s
|
1133
|
+
puts s.backtrace
|
1134
|
+
tanraku_execute
|
1135
|
+
|
1136
|
+
ensure
|
1137
|
+
puts '正解は' + x.to_s + 'でした'
|
1138
|
+
puts ''
|
1139
|
+
puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
|
1140
|
+
print '> '
|
1141
|
+
end
|
1142
|
+
|
1143
|
+
else
|
1144
|
+
puts "Can't Enter this Words. Please input help"
|
1145
|
+
print '> '
|
1146
|
+
end
|
1147
|
+
end
|
1148
|
+
# Wainting Action Code exit!
|
1149
|
+
|
1150
|
+
# Exception throw!
|
1151
|
+
rescue StandardError => ex
|
1152
|
+
p ex
|
1153
|
+
puts 'エラーです。文字列を確認してください!'
|
1154
|
+
retry
|
1155
|
+
print '> '
|
1156
|
+
|
1157
|
+
# Ruby ensure is Java Exception of finally.
|
1158
|
+
ensure
|
1159
|
+
puts '終了は exit を入力してください!'
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
GC.compact
|
1163
|
+
|
1164
|
+
__END__
|