Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. use std::collections::BTreeMap;
  2. use std::ops::Bound::Included;
  3.  
  4. fn main () {
  5. test();
  6. }
  7.  
  8. fn test() {
  9. let mut bt: BTreeMap<u128, u128> = BTreeMap::new();
  10. let mut a: u128 = 0;
  11. let div: u128 = 8;
  12. for x in 0..100_u128 {
  13. for y in 0..100_u128 {
  14. let zey = zeeify(x*div, y*div);
  15. a += 1;
  16. bt.insert(zey, a);
  17. }
  18. }
  19.  
  20. let xs: u128 = 46;
  21. let ys: u128 = 46;
  22. let test: u128 = zeeify(xs, ys);
  23. let mut min: u128 = 1000000;
  24. let mut closest: (u128, u128) = (0,0);
  25. for r in 0..div {
  26. let yss = (ys-div/2) + r;
  27. let xss = xs-div/2;
  28. let minzee = zeeify(xss, yss);
  29. let maxzee = zeeify(xss+div, yss);
  30. for v in bt.range( (Included(minzee), Included(maxzee)) ) {
  31. println!("{:?}", v);
  32. if min > abs_u128(*v.0, test) {
  33. min = abs_u128(*v.0, test);
  34. closest.0 = *v.0;
  35. closest.1 = *v.1;
  36. }
  37. }
  38. }
  39. println!("{:?} {:?} {:?}", min, closest, test);
  40. }
  41.  
  42. fn abs_u128(a: u128, b: u128) -> u128 {
  43. if a > b {a - b} else { b-a }
  44. }
  45.  
  46. fn zee_neighbors(zee: u128, div: u128) -> [u128; 4] {
  47. let a: u128 = 0b10101010101010101010101010101010;
  48. let b: u128 = 0b01010101010101010101010101010101;
  49. let t: u128 = (((zee & a) - div) & a) | (zee & b);
  50. let b: u128 = (((zee & b) + div) & a) | (zee & b);
  51. let l: u128 = (((zee & b) - div) & b) | (zee & a);
  52. let r: u128 = (((zee & a) + div) & b) | (zee & a);
  53. [t,b,l,r]
  54. }
  55.  
  56. fn zeeify(a: u128, b: u128) -> u128 {
  57. let mut f: u128 = 0;
  58. for i in 0..16 {
  59. f |= ((a & 1<<i) << i) | ((b & 1<<i) << (i+1));
  60. //println!("{:b} {:b} | {:b} {:b} | {:b}", a, a&1<<i, b, b&1<<i, f);
  61. }
  62. f
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement