Mathematica JS

by evgkch

JavaScript

const createArray = (length) => Array.from( {length: length}, (v, k) => k );

const shuffle = (array) => array.sort( (a, b) => Math.random() - 0.5 );

function Pi (precision = 5) {
	if (precision === 0) {
  	return 3;
  } else {
  	let pow = Math.pow(10, precision)
  	return Math.round(Math.PI * pow) / pow
  }
}

function pow (num) {
	let numExpand = num.toString().split('').length;
	return (numExpand > 1) ? Math.pow(10, numExpand - 2) : 1
} 

function Range (...args) {
	
  switch (args.length) {
  	case 1:
    	return Array.from( {length: args[0] + 1}, (v, k) => k );
    case 2:
    	return Array.from( {length: args[1] - args[0] + 1}, (v, k) => args[0] + k );
    case 3:
    	let precision = pow(args[2]);
    	return Array.from( {length: (args[1] - args[0]) / args[2] + 1}, (v, k) => Math.round((args[0] + args[2] * k) * precision) / precision );
    default:
    	console.error(`------------------------------------------------------- \n Range(iMax) returns the array [1, 2, ..., iMax]; \n Range(iMin, iMax) returns the array [iMin, ..., iMax]; \n Range(iMin, iMax, di) uses step di.`)
      break;
  }
	
}
//Array.from( {length: (step + iMax - iMin) / step}, (v, k) => iMin + step * k );

console.log(Pi())
console.log(Range(10))
console.log(Range(10,20))
console.log(Range(0, 10, Pi(3)))