Ppb2011 1
var http = require('http'); var url = require('url'); var alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' var server = http.createServer( function(req, res){ // Извлекаем строку запроса pathname = decodeURIComponent(url.parse(req.url).pathname).split('/')[1]; console.log(pathname); //Если запрос состоит из строки 'kill', завершаем работу сервиса if (pathname === 'kill') { res.writeHead(200,{"Content-Type": "application/json; charset=UTF-8"}); res.end(JSON.stringify({server:'Основание системы счисления', pathname:pathname, result:'Server кирдык'})); server.close(''); req.connection.destroy(''); console.log("кирдык"); process.exit(''); return; } // Парсинг строки запроса n1=pathname.split('+')[0]; // Первое слагаемое n2=(pathname.split('+')[1]).split('=')[0] // Второе слагаемое sum=(pathname.split('+')[1]).split('=')[1] // Сумма console.log(n1); console.log(n2); console.log(sum); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Поиск системы счисления // Если проверка введенных данных прошла успешно, выполняем поиск системы счисления if ((checkBound(n1,36)==true)&&(checkBound(n2,36)==true)&&(checkBound(sum,36)==true)) { // Поиск системы счисл. result=-1; for(var i=2;i<=36;i=i+1) { if(checkSystem(n1,n2,sum,i)==true) { result=i; break; } } } else { result='Неверный ввод'; } // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // Возвращаем результат в формате json res.writeHead(200,{"Content-Type": "application/json; charset=UTF-8"}); res.end(JSON.stringify({server:'Основание системы счисления', pathname:pathname, result:result})); console.log(result); }); server.listen(8000) console.log('Сервер стартовал на порту 8000') // Функция проверки заданного равенства в системе счисления с основанием i function checkSystem(n1, n2, sum, i) { if((checkBound(n1,i)==true)&&(checkBound(n2,i)==true)&&(checkBound(sum,i)==true)) { if(convert(n1,i)+convert(n2,i)==convert(sum,i)) return true; else return false; } else return false; } // Функция преобразования заданного числа в указанную систему счисления function convert(str, sys) { var value=0; for(var b=0; b<str.length; b=b+1) { for(var aa=0;aa<alphabet.length;aa=aa+1) { if(alphabet[aa]==str[b]) { value=value*sys+aa; break; } } } return value; }; // Функция, проверяющая, не превышает ли какой-либо разряд заданного числа // основание системы счисления syst, а также проверка на непустое значение function checkBound(str, syst) { if((str==null)||(str=='')) return false; for(var r=0;r<str.length;r=r+1) { var c=0; for(var a=0;a<syst;a=a+1) { if(alphabet[a]==str[r]) c=1; } if(c==0) {return false;} } return true; }