changes
This commit is contained in:
54
royalty2.log
Normal file
54
royalty2.log
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
NOP Error: adduser
|
||||||
|
AT Teppy
|
||||||
|
AT Luni
|
||||||
|
AT Hamza
|
||||||
|
AA USD
|
||||||
|
AA BTC
|
||||||
|
SR 0 19999999 0 0 0
|
||||||
|
AF 2 1 300000000
|
||||||
|
AF 1 0 186A000000000
|
||||||
|
OR 2 1 100000000 0 C35000000000
|
||||||
|
OR 2 1 100000000 0 EA6000000000
|
||||||
|
OR 1 0 1117000000000 1 80000000
|
||||||
|
OR 1 1 6EFB69849 0 15B1A8C689
|
||||||
|
OR 2 0 18E34B32E1 1 243BBBBA10
|
||||||
|
OR 1 0 1F0979696D 1 11E5CB8C5F
|
||||||
|
AF 2 1 215364483C
|
||||||
|
AF 3 1 891AFC8C0
|
||||||
|
AF 3 1 F04D7CABB
|
||||||
|
OR 3 1 1B7058942F 1 12573225F2
|
||||||
|
AF 1 0 25DA2D6060
|
||||||
|
AF 3 0 151F8E8A18
|
||||||
|
AF 2 1 1BDE6E5DDA
|
||||||
|
OR 3 0 59A71E33C 0 10C9FD83D2
|
||||||
|
AF 3 1 1F88B59AA8
|
||||||
|
AF 3 1 1B6E614618
|
||||||
|
OR 3 1 24F94C98D5 1 24F66B030C
|
||||||
|
OR 2 1 19E28BC7F0 1 5968F1DAD
|
||||||
|
AF 3 1 21C75333CF
|
||||||
|
AF 2 1 CFCD48BE0
|
||||||
|
OR 2 0 240430F1A5 0 25E13E81E1
|
||||||
|
AF 3 0 4E5E96272
|
||||||
|
OR 2 0 2299F8EFBF 1 1D39E5B911
|
||||||
|
AF 1 1 42C7269F7
|
||||||
|
AF 1 1 12F8E79E5F
|
||||||
|
AF 3 0 16425358DC
|
||||||
|
AF 1 1 F96CD972D
|
||||||
|
OR 2 0 82B856AA5 1 34A36393D
|
||||||
|
OR 3 0 C75D24EBE 1 C6041BD97
|
||||||
|
OR 3 1 1DFC18EC34 1 8B9B41EB1
|
||||||
|
OR 3 0 19786E00B5 1 1A16FDCAD3
|
||||||
|
OR 1 0 1C72D46C4A 1 1DB942B756
|
||||||
|
OR 2 1 228C580C87 0 27F3A63C53
|
||||||
|
OR 1 1 1778DBCA22 1 1C4D5277D3
|
||||||
|
OR 2 1 F28C33FFB 1 323E37A2D
|
||||||
|
OR 2 1 1C2587E46F 1 22E2E04B31
|
||||||
|
OR 1 0 C48222DF7 0 A75B450D4
|
||||||
|
AF 3 0 496C0DAD5
|
||||||
|
AF 1 1 85260D486
|
||||||
|
AF 2 1 364A56B55
|
||||||
|
AF 1 0 28FB02AF7
|
||||||
|
AF 2 0 210D21849F
|
||||||
|
AF 1 0 96BDA2649
|
||||||
|
AF 3 1 2641D775EC
|
||||||
|
OR 2 1 1B7225879A 0 20E963C8A8
|
||||||
58
src/main.rs
58
src/main.rs
@@ -176,6 +176,8 @@ impl RoyaltyTree {
|
|||||||
self.tree[index].lazy=FiNum::zero();
|
self.tree[index].lazy=FiNum::zero();
|
||||||
} else {
|
} else {
|
||||||
let lazy=self.tree[index].lazy;
|
let lazy=self.tree[index].lazy;
|
||||||
|
println!("Index is {}",index);
|
||||||
|
self.raw_dump();
|
||||||
let d1=if lazy>0.into() { lazy*self.weight_here(index)/self.weight_here_below(index) } else { FiNum::zero() };
|
let d1=if lazy>0.into() { lazy*self.weight_here(index)/self.weight_here_below(index) } else { FiNum::zero() };
|
||||||
let d02=lazy-d1;
|
let d02=lazy-d1;
|
||||||
let index_left =wt_left (index).unwrap();
|
let index_left =wt_left (index).unwrap();
|
||||||
@@ -254,6 +256,11 @@ impl RoyaltyTree {
|
|||||||
println!("Index {} Weight {} Lazy {} Acc {} Royalty {}",index,self.tree[index].weight,self.tree[index].lazy,self.tree[index].acc,roy);
|
println!("Index {} Weight {} Lazy {} Acc {} Royalty {}",index,self.tree[index].weight,self.tree[index].lazy,self.tree[index].acc,roy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn raw_dump(&mut self) {
|
||||||
|
for index in 0..self.tree.len() {
|
||||||
|
println!("Index {}: Weight {} Lazy {} Acc {} Order_ID {}",index,self.tree[index].weight,self.tree[index].lazy,self.tree[index].acc,self.tree[index].order_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -286,6 +293,7 @@ struct Market {
|
|||||||
royalty_rate: HashMap<usize,FiNum>,
|
royalty_rate: HashMap<usize,FiNum>,
|
||||||
order_finder: HashMap<usize,(usize,usize)>, // To find an order, look in Orders.get(usize,usize) at position usize
|
order_finder: HashMap<usize,(usize,usize)>, // To find an order, look in Orders.get(usize,usize) at position usize
|
||||||
next_order_id: usize,
|
next_order_id: usize,
|
||||||
|
rng: StdRng,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Market {
|
impl Market {
|
||||||
@@ -301,6 +309,7 @@ impl Market {
|
|||||||
royalty_rate: HashMap::new(),
|
royalty_rate: HashMap::new(),
|
||||||
order_finder: HashMap::new(),
|
order_finder: HashMap::new(),
|
||||||
next_order_id: 1,
|
next_order_id: 1,
|
||||||
|
rng: StdRng::seed_from_u64(1u64),
|
||||||
};
|
};
|
||||||
rval.register_trader("*HOUSE*");
|
rval.register_trader("*HOUSE*");
|
||||||
rval
|
rval
|
||||||
@@ -622,21 +631,20 @@ impl OrderQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Market {
|
impl Market {
|
||||||
fn random_orders(&mut self, seed: u64, count: u64) {
|
fn seed_random(&mut self, seed: u64) {
|
||||||
let mut rng: StdRng=StdRng::seed_from_u64(13u64);
|
self.rng=StdRng::seed_from_u64(seed);
|
||||||
for _ in 1..count {
|
}
|
||||||
let cmd=match rng.gen_range(1..2) {
|
fn random_command(&mut self) -> Command {
|
||||||
1 => Command::AddFunds { user_id: rng.gen_range(1..self.traders.len()-1),
|
match self.rng.gen_range(1..3) {
|
||||||
asset_id: rng.gen_range(0..self.assets.len()-1),
|
1 => Command::AddFunds { user_id: self.rng.gen_range(1..self.traders.len()),
|
||||||
amt: FiNum::new(rng.gen_range(1<<32..20<<32)), },
|
asset_id: self.rng.gen_range(0..self.assets.len()),
|
||||||
2 => Command::Order { user_id: rng.gen_range(1..self.traders.len()-1),
|
amt: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), },
|
||||||
sell_type: rng.gen_range(0..self.assets.len()-1),
|
2 => Command::Order { user_id: self.rng.gen_range(1..self.traders.len()),
|
||||||
sell_qty: FiNum::new(rng.gen_range(1<<32..20<<32)),
|
sell_type: self.rng.gen_range(0..self.assets.len()),
|
||||||
buy_type: rng.gen_range(0..self.assets.len()-1),
|
sell_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)),
|
||||||
buy_qty: FiNum::new(rng.gen_range(1<<32..20<<32)), },
|
buy_type: self.rng.gen_range(0..self.assets.len()),
|
||||||
_ => Command::Error("This can never happen".to_string()),
|
buy_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), },
|
||||||
};
|
_ => Command::Error("This can never happen".to_string()),
|
||||||
self.execute(&cmd);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn exercise(&mut self) {
|
fn exercise(&mut self) {
|
||||||
@@ -1017,6 +1025,26 @@ fn interactive(m: &mut Market, mut out: Option<File>) {
|
|||||||
} else { println!("Could not find trader {}",username); }
|
} else { println!("Could not find trader {}",username); }
|
||||||
Command::None
|
Command::None
|
||||||
},
|
},
|
||||||
|
["seedrandom", seed] => {
|
||||||
|
let seed=seed.parse().unwrap();
|
||||||
|
m.seed_random(seed);
|
||||||
|
println!("Seeded RNG with {}",seed);
|
||||||
|
Command::None
|
||||||
|
}
|
||||||
|
["randomcommands", qty] => {
|
||||||
|
let qty:u32=qty.parse().unwrap();
|
||||||
|
for i in 0..qty {
|
||||||
|
let cmd=m.random_command();
|
||||||
|
println!("RandomCommand #{}: {}",1+i,cmd.serialize());
|
||||||
|
if let Some(ref mut f)=out {
|
||||||
|
let ser=cmd.serialize();
|
||||||
|
if let Err(e)=writeln!(f,"{}",ser) { eprintln!("An error occurred while writing {}",e); }
|
||||||
|
} else { println!("{}",cmd.serialize()); }
|
||||||
|
let res=m.execute(&cmd);
|
||||||
|
println!("Result: {}",res.describe());
|
||||||
|
}
|
||||||
|
Command::None
|
||||||
|
},
|
||||||
["quit"] => { return },
|
["quit"] => { return },
|
||||||
_ => {
|
_ => {
|
||||||
let cmd=tokens_to_command(m,trader,tokens,&input);
|
let cmd=tokens_to_command(m,trader,tokens,&input);
|
||||||
|
|||||||
Reference in New Issue
Block a user