codeaddict

Vanadium 2

Jan 7th, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.58 KB | None | 0 0
  1. '''
  2.  author: _where
  3.  Simple sexy solution that shows a lil bit of panties
  4. '''
  5. def solution(s)
  6.   unique_ord_diff_values = s.split('').uniq.map { |i| i.ord - '0'.ord }
  7.   rand_shift = 1
  8.   mask = 3
  9.   mask_values = Hash.new(0)
  10.   palindrome_count = 0
  11.  
  12.   for i in 0...s.length
  13.     ord_diff = s[i].ord - '0'.ord
  14.     mask_values[mask] += 1
  15.     mask ^= (rand_shift << ord_diff)
  16.     palindrome_count += mask_values[mask]
  17.  
  18.     unique_ord_diff_values.each do |j|
  19.       palindrome_count += mask_values[mask ^ (rand_shift << j)]
  20.     end
  21.   end
  22.  
  23.   palindrome_count % 1000000007
  24. end
Advertisement
Add Comment
Please, Sign In to add comment