Advertisement
t_a_w

admin

Nov 9th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.15 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require "z3"
  4. require "pry"
  5.  
  6. solver = Z3::Solver.new
  7.  
  8. r = (0..35).map{|i| Z3.Int("c#{i}")}
  9. u = (0..4).map{|i| Z3.Int("u#{i}")}
  10.  
  11. solver.assert Z3.And(*u.zip("admin".chars.map(&:ord)).map{|var,val| var == val})
  12.  
  13. solver.assert Z3.And(
  14.   r[29] == u[3] - 56,
  15.   r[31] == r[4] + 2,
  16.   r[4] == r[18] + 1,
  17.   r[35] == r[8] - 45,
  18.   r[33] == r[10] - 7,
  19.   r[12] == r[25] + 28,
  20.   r[11] == r[31] - 19,
  21.   r[2] == u[0] - 46,
  22.   r[34] == r[6],
  23.   r[9] == r[26],
  24.   r[30] == r[19] + 57,
  25.   r[1] == r[12],
  26.   r[23] == r[7] + 63,
  27.   r[24] == r[0] - 33,
  28.   r[8] == r[28] - 29,
  29.   r[17] == r[1] - 55,
  30.   r[15] == r[23],
  31.   r[32] == u[4] - 40,
  32.   r[14] == r[24] + 17,
  33.   r[16] == r[17] - 1,
  34.   r[7] == r[9] + 3,
  35.   r[22] == r[16] + 69,
  36.   r[19] == r[3],
  37.   r[26] == r[21],
  38.   r[25] == r[34] - 38,
  39.   r[6] == r[15],
  40.   r[3] == r[35] + 20,
  41.   r[21] == r[33],
  42.   r[13] == u[2] - 58,
  43.   r[27] == r[22] - 6,
  44.   r[10] == r[20] - 34,
  45.   r[5] == r[30] - 45,
  46.   r[0] == r[11],
  47.   r[20] == r[5] + 24,
  48.   r[28] == r[14] + 39,
  49.   r[18] == u[1],
  50. )
  51.  
  52. raise unless solver.satisfiable?
  53. puts r.map{|ri| solver.model[ri].to_i.chr}.join # Th35eAr3N07Th3Dr01d5Y0ur3L0ok1ngF0r!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement