From 609338de80de82143f07107e3dfbb5f55f22e6e7 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Fri, 9 Feb 2024 11:27:11 -0700 Subject: [PATCH] show pure function --- src/components/function_box.tsx | 2 +- src/scenes/index.ts | 14 ++++----- src/scenes/pure_functions.tsx | 55 +++++++++++++++++++++++---------- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/components/function_box.tsx b/src/components/function_box.tsx index 8b3b243..d116a47 100644 --- a/src/components/function_box.tsx +++ b/src/components/function_box.tsx @@ -300,7 +300,7 @@ export class FunctionBox extends Node { yield* all( this.boxMoji().text("", duration), this.boxMoji().opacity(0, duration), - this.block().fontSize(30, duration), + this.block().fontSize(20, duration), this.node().opacity(1, duration), ); } diff --git a/src/scenes/index.ts b/src/scenes/index.ts index 8544e23..1b467c0 100644 --- a/src/scenes/index.ts +++ b/src/scenes/index.ts @@ -8,12 +8,12 @@ import hungry_partner from "./hungry_partner?scene"; import pure_functions from "./pure_functions?scene"; export const scenes = [ - title, - me, - partone, - flirtingwithfunctions, - doctor, - first_box, - hungry_partner, + //title, + //me, + //partone, + //flirtingwithfunctions, + //doctor, + //first_box, + //hungry_partner, pure_functions, ]; diff --git a/src/scenes/pure_functions.tsx b/src/scenes/pure_functions.tsx index c7e1f35..af1cc4f 100644 --- a/src/scenes/pure_functions.tsx +++ b/src/scenes/pure_functions.tsx @@ -1,4 +1,4 @@ -import { Node, Rect, Txt, makeScene2D } from "@motion-canvas/2d"; +import { Rect, Txt, makeScene2D } from "@motion-canvas/2d"; import { Direction, all, @@ -10,11 +10,10 @@ import { import { FunctionBox } from "../components/function_box"; import { theme } from "../theme"; -const pureFunction = `const pureFib = (n: number) => { - if (n <= 1) { - retun 1; - } - return fib(n - 1) + fib(n - 2); +const pureFib = `const pureFib = (n: number) => { + if (n <= 1) + return 1; + return pureFib(n - 1) + pureFib(n - 2); }; pureFib;`; @@ -27,7 +26,8 @@ const impureFib = (n: number) => { impureFib;`; const impureFactFunction = `const impureFact = (n: number): number => { while (cache.length <= n) - cache.push(cache.length * cache[cache.length - 1]); + cache.push(cache.length * + cache[cache.length - 1]); return cache[n]; }; impureFact;`; @@ -66,7 +66,7 @@ export default makeScene2D(function* (view) { arity={1} idlingText="" workingText="" - source={pureFunction} + source={pureFib} ref={pureFunctionBox} /> @@ -81,24 +81,47 @@ export default makeScene2D(function* (view) { impureFactFunctionBox().showCode(0.5), ); - yield* impureFibFunctionBox().setInputs([{ val: 5 }], 0.05); + yield* impureFibFunctionBox().setInputs([{ val: 5 }], 0.2); yield* beginSlide("Show FibImpure(5)"); - yield* impureFibFunctionBox().propogateInput(0.05); - yield* impureFibFunctionBox().propogateOutput(0.05); + yield* impureFibFunctionBox().propogateInput(0.2); + yield* impureFibFunctionBox().propogateOutput(0.2); yield* beginSlide("FibImpure(5)"); - yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.05); + yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.2); yield* beginSlide("Show FactImpure(5)"); - yield* impureFactFunctionBox().propogateInput(0.05); - yield* impureFactFunctionBox().propogateOutput(0.05); + yield* impureFactFunctionBox().propogateInput(0.2); + yield* impureFactFunctionBox().propogateOutput(0.2); yield* beginSlide("FactImpure(5)"); yield* impureFactFunctionBox().reset(0.15); yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.15); yield* beginSlide("FactImpure(5) Add 5"); - yield* impureFactFunctionBox().propogateInput(0.05); - yield* impureFactFunctionBox().propogateOutput(0.05); + yield* impureFactFunctionBox().propogateInput(0.2); + yield* impureFactFunctionBox().propogateOutput(0.2); yield* beginSlide("FactImpure(5) Correct"); + + yield* all( + impureFibFunctionBox().reset(0.5), + impureFactFunctionBox().reset(0.5), + impureFibFunctionBox().hideCode(0.5), + pureFunctionBox().showCode(0.5), + ); + + yield* beginSlide("Show Fib Pure"); + yield* pureFunctionBox().reset(0.15); + yield* all( + pureFunctionBox().setInputs([{ val: 5 }], 0.15), + impureFactFunctionBox().setInputs([{ val: 5 }], 0.15), + ); + + yield* beginSlide("Set Inputs"); + + yield* pureFunctionBox().propogateInput(0.2); + yield* pureFunctionBox().propogateOutput(0.2); + yield* impureFactFunctionBox().propogateInput(0.2); + yield* impureFactFunctionBox().propogateOutput(0.2); + + yield* beginSlide("Compute Fib"); });