pragma solidity ^0.6.12; contract SimpleStore { uint256 [] private _allAmountArray; uint256 _low = 20; function _getMid() private return(uint256){ return findAmountAverage(_allAmountArray, _low); } function findAmountAverage(uint256[] storage array, uint256 _low) internal view returns (uint256) { if (array.length == 0 || _low > array.length) { return 0; } uint256 low = array.length.sub(_low); uint256 high = array.length; while (low < high) { uint256 tLastAmount = 0; uint256 lowAmount = array[low]; tLastAmount = tLastAmount.add(lowAmount); low += 1; } uint256 mid = tLastAmount.div(_low) return mid; } function transfer(address recipient, uint256 amount) public override returns (bool) { require(amount <= _getMid(), "Require the amount must be less than last 20 transaction average "); _transfer(_msgSender(), recipient, amount); return true; } }
0.4.18