結果
問題 | No.5003 物理好きクリッカー |
ユーザー |
![]() |
提出日時 | 2018-12-07 08:25:56 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 391 ms / 10,000 ms |
コード長 | 2,053 bytes |
コンパイル時間 | 106 ms |
実行使用メモリ | 26,996 KB |
スコア | 5,577,940 |
平均クエリ数 | 10000.00 |
最終ジャッジ日時 | 2021-07-19 09:02:38 |
合計ジャッジ時間 | 14,807 ms |
ジャッジサーバーID (参考情報) |
judge15 / judge12 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 |
コンパイルメッセージ
Main.rb:100: warning: assigned but unused variable - n Main.rb:104: warning: assigned but unused variable - score Syntax OK
ソースコード
class Facilitydef initialize(val, price, num=0)@val = val@reinforce_price = price@price = price@num = num || 0enddef produce@num * @valenddef reinforce(cookie)diff = 0if cookie >= @reinforce_pricediff = -@reinforce_price@reinforce_price *= 10@val *= 2enddiffendendclass Clickerdef initialize@cookie = 0@facilities = {}@history = []@click = Facility.new(1, 15, 1)[[:hand, 1, 150],[:lily, 10, 2000],[:factory, 120, 30000],[:casino, 2000, 600000],[:grimoire, 25000, 10000000]].each do |name, sp, price|@facilities[name] = Facility.new(sp, price)endenddef do_action(cmd)@history << cmdcase cmdwhen 'click'@cookie += @click.producewhen /\Abuy (.*?)\z/name = $1.to_sym@cookie += @facilities[name].buy(@cookie)when /\Asell (.*?)\z/name = $1.to_sym@cookie += @facilities[name].sell(@cookie)when /\Areinforce (.*?)\z/name = $1.to_sym@cookie += @facilities[name].reinforce(@cookie)when 'enhclick'@cookie += @click.reinforce(@cookie)when 'nothing'# do nothingelseraise "Unknown action: '#{cmd}'"endenddef do_produce()@facilities.each do |name, f|@cookie += f.produceendenddef do_special(type)if type == 'B' # Bonus@cookie += (@cookie+99)/100elsif type == 'F'# Feverelsif type == 'S' # Saleelsif type == 'N' # Nothing# do nothingelseraiseendenddef run(s)s.each_char.with_index do |ch, turn|if @cookie >= @click.instance_eval{@reinforce_price}do_action("enhclick")elsedo_action("click")enddo_produce()do_special(ch)end@cookieendendn = gets.to_is = gets.chompcl = Clicker.newscore = cl.run(s)#$stderr.puts scorecl.instance_eval{@history}.each do |cmd|puts cmd$stdout.flushgetsend