5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

遠い世界の数式をRubyで解く

Posted at

神奈川Ruby会議01のペアプロ大会のお題を解いてみました。
問題はこちら
http://nabetani.sakura.ne.jp/kanagawa.rb/evalex/

この解き方をする人は少ないと思ったけれど、出題者の鍋谷さんが、もっとエレガントに解いていました。
http://nabetani.sakura.ne.jp/kanagawa.rb/evalex/a2.html

class Fixnum
  def **(other)
    self|other
  end
  def /(other)
    self&other
  end
  def -(other)
    self+other
  end
  def ^(other)
    self*other
  end
end
class Bignum
  def **(other)
    self|other
  end
  def /(other)
    self&other
  end
  def -(other)
    self+other
  end
  def ^(other)
    self*other
  end
end

def solve(q)
  eval(q.tr('&+*','/\-\^').gsub('|','**'))
end

DATA.readlines.each do |line|
  no,q,a = line.strip.split(/\s+/)
  ans = solve(q)
  print no + "\t" + ans.to_s
  puts ans.to_s == a ? ' o' : ' x'
end
__END__
0	4*5+6&7|8	44
1	15*5	75
2	15+5	20
3	15&5	5
4	15|5	15
5	30*15*5	2250
6	30*15+5	600
7	30*15&5	150
8	30*15|5	450
9	30+15*5	225
10	30+15+5	50
11	30+15&5	35
12	30+15|5	45
13	30&15*5	70
14	30&15+5	19
15	30&15&5	4
16	30&15|5	14
17	30|15*5	155
18	30|15+5	36
19	30|15&5	5
20	30|15|5	31
21	1+2+3+4+5+6+7+8+9+10	55
22	1*2*3*4*5*6*7*8*9*10	3628800
23	1+2+3+4+5*6+7+8+9+10	600
24	1*2*3*4*5+6*7*8*9*10	1330560
25	1|2|4|8|16|32|64|128|256|512	1023
26	2046&2045&2043&2039&2031&2015&1983&1919&1791&1535	1024
27	0+1|7*6	42
28	6|4+2&9+4	10
29	0&6+1&6|4*2	0
30	4|4*7+7+4&9	56
31	9&8*2+3*1|2|7	280
32	230+83*751&176	50080
33	89+62465*94&84	5254536
34	668&925+398*562	599092
35	15|9+348*302&23&77	1452
36	3&3&6|7+3|5*3|2&4*4	0
37	7*6|7|7*1&7|7&3&8*3	0
38	896+316*209*264&728	2026464
39	1844+41*64|7906|66842	138965970
40	2&41&6884*69857+68083	0
41	2+3*9*3|6|7&0+3+3*6&8	0
42	895+400*988|549&237+488	938875
43	30*48&99036+140&33+75|645	22050
44	278+2033+53*96*56|3303|3&14	3177216
45	5380&27|643*2+1888&74+30|16	0
46	0&3845+6645*4293+78&78*3102|9|3	90127550385
47	78&44956&67*974|413+13237*5588|54*668	0
48	500*206+145|167|163|465&668+662+806*681&458	123896000
49	82+14&0*344+34+542916&18*11|844|64*873223|840993	23813260003764
50	374958|6727+53965&53*954&29|6*138572+59|547783&43*8998	12178274756590800
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?