mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-18 17:49:40 +08:00

* Remove QuickSelect doctest There are more Jest test cases already. * Remove AverageMedian doctest Already migrated to jest * Migrate doctest for BinaryExponentiationRecursive.js (also remove inline "main" test method) * Migrate doctest for EulersTotient.js (also remove inline "main" test method) * Migrate doctest for PrimeFactors.js (also remove inline "main" test method) * Migrate doctest for BogoSort.js Re-write prototype-polluting helper methods, too. (also remove inline test driver code) * Migrate doctest for BeadSort.js (also remove inline test driver code) * Migrate doctest for BucketSort.js (also remove inline test driver code) * Migrate doctest for CocktailShakerSort.js (also remove inline test driver code) * Migrate doctest for MergeSort.js (also remove inline test driver code) * Migrate doctest for QuickSort.js (also remove inline test driver code) * Migrate doctest for ReverseString.js (also remove inline test driver code) * Migrate doctest for ReverseString.js * Migrate doctest for ValidateEmail.js * Migrate doctest for ConwaysGameOfLife.js (remove the animate code, too) * Remove TernarySearch doctest Already migrated to jest * Migrate doctest for BubbleSort.js (also remove inline test driver code) * Remove doctest from CI and from dependencies relates to #742 fixes #586 * Migrate doctest for RgbHsvConversion.js * Add --fix option to "standard" npm script * Migrate doctest for BreadthFirstSearch.js (also remove inline test driver code) * Migrate doctest for BreadthFirstShortestPath.js (also remove inline test driver code) * Migrate doctest for EulerMethod.js (also remove inline test driver code) Move manual test-code for plotting stuff in the browser in a distinct file, too. Those "*.manual-test.js" files are excluded from the UpdateDirectory.mjs script, as well. * Migrate doctest for Mandelbrot.js (also remove inline test driver code & moved manual drawing test into a *.manual-test.js) * Migrate doctest for FloodFill.js * Migrate doctest for KochSnowflake.js (also move manual drawing test into a *.manual-test.js) * Update npm lockfile * Update README and COMMITTING with a few bits & bobs regarding testing & code quality
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
import { eulerFull } from '../EulerMethod'
|
|
|
|
function plotLine (label, points, width, height) {
|
|
// utility function to plot the results
|
|
|
|
// container needed to control the size of the canvas
|
|
const container = document.createElement('div')
|
|
container.style.width = width + 'px'
|
|
container.style.height = height + 'px'
|
|
document.body.append(container)
|
|
|
|
// the canvas for plotting
|
|
const canvas = document.createElement('canvas')
|
|
container.append(canvas)
|
|
|
|
// Chart-class from chartjs
|
|
const chart = new Chart(canvas, { // eslint-disable-line
|
|
type: 'scatter',
|
|
data: {
|
|
datasets: [{
|
|
label: label,
|
|
data: points,
|
|
showLine: true,
|
|
fill: false,
|
|
tension: 0,
|
|
borderColor: 'black'
|
|
}]
|
|
},
|
|
options: {
|
|
maintainAspectRatio: false,
|
|
responsive: true
|
|
}
|
|
})
|
|
}
|
|
|
|
function exampleEquation1 (x, y) {
|
|
return x
|
|
}
|
|
|
|
// example from https://en.wikipedia.org/wiki/Euler_method
|
|
function exampleEquation2 (x, y) {
|
|
return y
|
|
}
|
|
|
|
// example from https://www.geeksforgeeks.org/euler-method-solving-differential-equation/
|
|
function exampleEquation3 (x, y) {
|
|
return x + y + x * y
|
|
}
|
|
|
|
// plot the results if the script is executed in a browser with a window-object
|
|
if (typeof window !== 'undefined') {
|
|
const points1 = eulerFull(0, 4, 0.1, 0, exampleEquation1)
|
|
const points2 = eulerFull(0, 4, 0.1, 1, exampleEquation2)
|
|
const points3 = eulerFull(0, 0.1, 0.025, 1, exampleEquation3)
|
|
|
|
const script = document.createElement('script')
|
|
|
|
// using chartjs
|
|
script.src = 'https://www.chartjs.org/dist/2.9.4/Chart.min.js'
|
|
script.onload = function () {
|
|
plotLine('example 1: dy/dx = x', points1, 600, 400)
|
|
plotLine('example 2: dy/dx = y', points2, 600, 400)
|
|
plotLine('example 3: dy/dx = x + y + x * y', points3, 600, 400)
|
|
}
|
|
document.body.append(script)
|
|
}
|