diff options
| author | cassiopc <cassiopc@gmail.com> | 2012-08-31 09:02:27 +0000 |
|---|---|---|
| committer | cassiopc <cassiopc@gmail.com> | 2012-08-31 09:02:27 +0000 |
| commit | 2948fe8d6055f6dfe6289e64bce426b5e0bb552f (patch) | |
| tree | 2cff8a28f2bcf1f21116b952738b5e683e11c193 /boca-1.5.1/src/hex.js | |
| parent | 37d5a8f2b6ecf585f91c2f7c804145853f0ca1e9 (diff) | |
| download | boca-2948fe8d6055f6dfe6289e64bce426b5e0bb552f.tar.gz boca-2948fe8d6055f6dfe6289e64bce426b5e0bb552f.zip | |
inclusion of dir 1.5.1 for boca
Diffstat (limited to 'boca-1.5.1/src/hex.js')
| -rw-r--r-- | boca-1.5.1/src/hex.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/boca-1.5.1/src/hex.js b/boca-1.5.1/src/hex.js new file mode 100644 index 0000000..9cd3709 --- /dev/null +++ b/boca-1.5.1/src/hex.js @@ -0,0 +1,98 @@ +/*////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//BOCA Online Contest Administrator +// Copyright (C) 2003-2012 by BOCA Development Team (bocasystem@gmail.com) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +/*hex1 e hex2 sao strings hexa + *devolve a soma das duas + */ +var hexchr="0123456789abcdef"; +function bighexsoma (hex1, hex2){ + if (hex1.length > hex2.length) { + a = hex2; + hex2 = hex1; + hex1 = a; + } + while (hex1.length < hex2.length) + hex1 = '0' + hex1; + + sobra = 0; + resultado = ""; + for(x = hex1.length-1; x>=0; x--) { + if (hex1.charAt(x) > '9') op1 = hex1.charCodeAt(x)-hexchr.charCodeAt(10)+10; + else op1 = hex1.charCodeAt(x)-hexchr.charCodeAt(0); + if (hex2.charAt(x) > '9') op2 = hex2.charCodeAt(x)-hexchr.charCodeAt(10)+10; + else op2 = hex2.charCodeAt(x)-hexchr.charCodeAt(0); + + r = op1 + op2 + sobra; + if (r > 15) { + r -= 16; + sobra = 1; + } else sobra = 0; + + resultado = hexchr.charAt(r) + resultado; + } + if (sobra == 1) + resultado = "1" + resultado; + return resultado; +} +/* + *hex1 e hex2 sao strings hexa + *devolve a string que representa hex2 - hex1 + */ +function bighexsub (hex1, hex2) { + if (hex1.length == hex2.length) { + i=0; + while (hex1.charAt(i) == hex2.charAt(i) && i<hex1.length) i++; + + if (i>=hex1.length) return 0; + if (hex1.charAt(i) > hex2.charAt(i)) { + sinal=""; + a = hex2; + hex2 = hex1; + hex1 = a; + } else sinal = "-"; + } + else { + if (hex1.length < hex2.length) sinal="-"; + else { + sinal=""; + a = hex2; + hex2 = hex1; + hex1 = a; + } + while (hex1.length < hex2.length) + hex1 = "0" + hex1; + } + + sobra = 0; + resultado = ""; + for(x=hex1.length-1; x>=0; x--) { + if (hex1.charAt(x) > '9') op1 = hex1.charCodeAt(x)-hexchr.charCodeAt(10)+10; + else op1 = hex1.charCodeAt(x)-hexchr.charCodeAt(0); + if (hex2.charAt(x) > '9') op2 = hex2.charCodeAt(x)-hexchr.charCodeAt(10)+10; + else op2 = hex2.charCodeAt(x)-hexchr.charCodeAt(0); + + r = op2 - op1 - sobra; + if (r < 0) { + r += 16; + sobra = 1; + } else sobra = 0; + + resultado = hexchr.charAt(r) + resultado; + } + return sinal + resultado; +} |