////////// Exercice 1 ////////// import {stateToString, otherPlayer} from '#src/utils/tictactoe.js'; import {leaf, node, val, children, treeDisp} from '#src/utils/tree.imperative.api.js'; let aState = [ 'x', ' ', 'o', 'x', 'o', ' ', 'x', ' ', ' ' ]; console.log(`A state :\n${stateToString(aState)}`); stateEmptySlots([ 'x', ' ', 'o', 'x', 'o', ' ', 'x', ' ', ' ' ]); // -> [ 1, 5, 7, 8 ] stateNexts(['x', 'o', 'x', ' ', ' ', ' ', 'x', 'o', 'x'], 'x'); // -> [ [ 'x', 'o', 'x', 'x', ' ', ' ', 'x', 'o', 'x' ], // [ 'x', 'o', 'x', ' ', 'x', ' ', 'x', 'o', 'x' ], // [ 'x', 'o', 'x', ' ', ' ', 'x', 'x', 'o', 'x' ] ] ////////// Exercice 2 ////////// import { evaluated, freeze, isFrozen, thaw, value } from '#src/utils/lazy.js'; const aFrozenValue = freeze(() => 7); // Create a lazy frozen value isFrozen(aFrozenValue); // -> true (it is indeed frozen) thaw(aFrozenValue); // Thaw it (this is a side-effect) isFrozen(aFrozenValue); // -> false (it has been thawed) value(aFrozenValue); // -> 7 const anEvaluatedValue = evaluated(5); // Create a lazy value that is in fact evaluated isFrozen(anEvaluatedValue); // -> false (it has never been frozen) import { leaf, node, treeThawAtDepth, treeDisp } from '#src/utils/tree.lazy.api.js'; let normalTree = node("root", evaluated([ leaf("unique son") ])); console.logA(normalTree); let frozenTree = node("root", freeze(() => [ leaf("1st son"), leaf("2nd son") ])); console.logA(frozenTree); ////////// Exercice 3 ////////// import { stateWinner, stateIsFinal, initialState, stateToString, stateNexts } from '#src/utils/tictactoe.js' import { nodeThaw } from '#src/utils/tree.lazy.api.js';