From 9663de9384b84002eecedb27dd519aaf9988898d Mon Sep 17 00:00:00 2001 From: Andrew Morris Date: Thu, 1 Jun 2023 13:32:37 +1000 Subject: [PATCH] Fix factorizeAsPowers --- valuescript_vm/src/bytecode_decoder.rs | 5 ++++- website/src/playground/files/root/lib/primes.ts | 12 ++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/valuescript_vm/src/bytecode_decoder.rs b/valuescript_vm/src/bytecode_decoder.rs index db69149..1ae1459 100644 --- a/valuescript_vm/src/bytecode_decoder.rs +++ b/valuescript_vm/src/bytecode_decoder.rs @@ -250,7 +250,10 @@ impl BytecodeDecoder { let type_ = self.clone_at(pos).decode_type(); match type_ { - BytecodeType::Function | BytecodeType::Class | BytecodeType::Unrecognized => {} + BytecodeType::Function + | BytecodeType::GeneratorFunction + | BytecodeType::Class + | BytecodeType::Unrecognized => {} _ => { panic!("Invalid: {:?} pointer that points backwards", type_); } diff --git a/website/src/playground/files/root/lib/primes.ts b/website/src/playground/files/root/lib/primes.ts index 4ca4007..fb23261 100644 --- a/website/src/playground/files/root/lib/primes.ts +++ b/website/src/playground/files/root/lib/primes.ts @@ -17,20 +17,16 @@ export function* factorize(n: number) { } export function* factorizeAsPowers(n: number) { - const factors = factorize(n); + let factors = factorize(n); - let currentFactor: number | undefined; - let currentPower = 1; - - for (const factor of factors) { - currentFactor = factor; - break; - } + let currentFactor = factors.next().value; if (currentFactor === undefined) { return; } + let currentPower = 1; + for (const factor of factors) { if (factor === currentFactor) { currentPower += 1;