UNPKG

aureooms-js-algo

Version:

playground for algorithmic code bricks in JavaScript

64 lines (33 loc) 1.33 kB
var sort = require( "aureooms-js-sort" ) ; var array = require( "aureooms-js-array" ) ; var random = require( "aureooms-js-random" ) ; var compare = require( "aureooms-js-compare" ) ; test( "minima 1" , function ( ) { var a = [ 1 , 2 , 3 , 4 , 6 , 12 ] ; var divides = function ( a , b ) { return b % a === 0 ; } ; random.shuffle( a , 0 , a.length ) ; var min = algo.clarkson( divides , a , 0 , a.length ) ; deepEqual( min , 1 , "minima set has cardinality 1" ) ; deepEqual( a[0] , 1 , "minimum is 1" ) ; } ) ; test( "minima 2,3" , function ( ) { var a = [ 1 , 2 , 3 , 4 , 6 , 12 ] ; var i = 1 ; var j = a.length ; var divides = function ( a , b ) { return b % a === 0 ; } ; random.shuffle( a , i , j ) ; var min = algo.clarkson( divides , a , i , j ) ; deepEqual( min - i , 2 , "minima set has cardinality 2" ) ; sort.insertionsort( compare.increasing , a , i , min ) ; deepEqual( a[i+0] , 2 , "1st minimum is 2" ) ; deepEqual( a[i+1] , 3 , "2nd minimum is 3" ) ; } ) ; test( "minima totally unordered set" , function ( ) { n = 1000 ; var a = array.alloc( n ) ; array.iota( a , 0 , n , 0 ) ; var prec = function ( a , b ) { return false ; } ; random.shuffle( a , 0 , n ) ; var min = algo.clarkson( prec , a , 0 , n ) ; deepEqual( min , n , "minima set has cardinality n" ) ; } ) ;