From de03fa87417756e3b03b2e1aaf2a6db6bc691281 Mon Sep 17 00:00:00 2001 From: Teppy Date: Mon, 13 Jan 2025 21:52:33 -0500 Subject: [PATCH] changes --- 1.log | 1 + demo.log | 28 +++++++++++++++------------- src/main.rs | 10 ++++++++-- 3 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 1.log diff --git a/1.log b/1.log new file mode 100644 index 0000000..a8ff397 --- /dev/null +++ b/1.log @@ -0,0 +1 @@ +NOP Error: diff --git a/demo.log b/demo.log index 4b15ae5..a9fac04 100644 --- a/demo.log +++ b/demo.log @@ -1,13 +1,15 @@ -AT Teppy -AT Luni -AT Hamza -AA USD -AA BTC -SR 1 51EB851 28F5C28 33333333 28F5C28 -AF 1 1 500000000 -AF 2 0 3D09000000000 -AF 3 0 3D09000000000 -SR 0 28F5C28 0 19999999 28F5C28 -OR 1 1 100000000 0 C35000000000 -OR 2 0 9C4000000000 1 100000000 -OR 3 0 753000000000 1 80000000 +AT Teppy ; addtrader Teppy +AT Luni ; addtrader Luni +AT Hamza ; addtrader Hamza +AA USD ; addasset USD +AA BTC ; addasset BTC +SR 0 51EB851 28F5C28 7AE147A 28F5C28 ; setroyalty USD 0.02 0.01 0.03 0.01 +SR 1 51EB851 28F5C28 7AE147A 28F5C28 ; setroyalty BTC 0.02 0.01 0.03 0.01 +AF 1 1 500000000 ; addfunds Teppy 5 BTC +AF 2 0 186A000000000 ; addfunds Luni 100000 USD +AF 3 0 186A000000000 ; addfunds Hamza 100000 USD +OR 1 1 200000000 0 186A000000000 ; [login Teppy] order 2 BTC 100000 USD +OR 2 0 753000000000 1 80000000 ; [login Luni] order 30000 USD 0.5 BTC +OR 2 0 4E2000000000 1 80000000 ; [login Luni] order 20000 USD 0.5 BTC +OR 2 0 55F000000000 1 80000000 +OR 2 1 40000000 0 35B600000000 diff --git a/src/main.rs b/src/main.rs index 49c7713..cd43a4c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -483,12 +483,12 @@ impl Market { for (ap,pq) in &self.orders { println!("Orders selling {} to buy {}:",self.number_to_name(ap.0),self.number_to_name(ap.1)); let mut sorted=pq.v.clone(); - sorted.sort_by(|a,b| { (a.sell_qty/a.buy_qty).cmp(&(b.sell_qty/b.buy_qty)) }); + sorted.sort_by(|a,b| { (b.sell_qty/b.buy_qty).cmp(&(a.sell_qty/a.buy_qty)) }); for off in sorted.iter() { let rt=self.royalties.get_mut(&ap.1).unwrap(); let indexr=rt.order_finder.get(&off.order_id).unwrap(); let royalty_amt=rt.get_royalty(*indexr); - println!(" {} @ {} ({}) OrderID: {} Royalties Accumulated: {} Royalties Offered {} Commissions Offered: {}", + println!(" {} @ {} ({}) OrderID: {} Accumulated: {} Royalties {} Commissions: {}", off.sell_remain, // off.buy_qty*off.sell_remain/off.sell_qty, (off.buy_qty/off.sell_qty).fmt_recip(), self.traders[off.owner as usize].name, @@ -532,6 +532,7 @@ impl Market { let reader=io::BufReader::new(f.unwrap()); for line in reader.lines() { if let Ok(line) = line { + let line=clean_replay(&line); let cmd=Command::deserialize(line); if let Command::NOP(comment)=cmd { println!("{}",comment); } else { @@ -957,6 +958,11 @@ enum Command { fn clean(s: &str) -> String { s.to_string() } +fn clean_replay(input: &str) -> String { + let before_semicolon = input.split(';').next().unwrap_or(""); // Split on semicolon; take first chunk (before semicolon), or "" if none + before_semicolon.trim_end().to_string() // Trim trailing whitespace, then convert to owned String + } + impl Command { fn serialize(&self) -> String { match self {