Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Created by sergey on 20.01.17.
- */
- let fs = require('fs');
- let rl = require('readline');
- let arr_in = [];
- let arr_out = [];
- let is_test_ok = true;
- let pool = 100;
- let total_iterations = 0;
- let is_in_finish = false;
- let is_out_finish = false;
- let readline_in = rl.createInterface({
- input: fs.createReadStream('./INPUT.txt')
- });
- let readline_out = rl.createInterface({
- input: fs.createReadStream('./OUTPUT.txt')
- });
- readline_in
- .on('line', (line) => {
- "use strict";
- arr_in.push(line);
- if (arr_in.length >= pool) {
- readline_in.pause();
- }
- })
- .on('pause', compute)
- .on('close', () => {
- "use strict";
- finish('in');
- });
- readline_out
- .on('line', (line) => {
- "use strict";
- arr_out.push(line);
- if (arr_out.length >= pool) {
- readline_out.pause();
- }
- })
- .on('pause', compute)
- .on('close', () => {
- "use strict";
- finish('out');
- });
- /**
- * Сравнивает самму чисел из входного файла и результат из выходного
- * @param input Одна строк из входного файла
- * @param output Одна строка из выходного файла
- * @returns {boolean}
- */
- function compare(input, output) {
- let varArr = input.split(' ', 2);
- let a = parseInt(varArr[0], 10);
- let b = parseInt(varArr[1], 10);
- let res = parseInt(output, 10);
- if ((a + b) !== res) {
- return false;
- }
- return true;
- }
- /**
- * Вычисляет расхождение в данных из входного файла с выходным
- */
- function compute() {
- "use strict";
- if (arr_in.length >= pool && arr_out.length >= pool) {
- let input, output;
- for (let i = 0; i < pool; i++) {
- input = arr_in.shift();
- output = arr_out.shift();
- is_test_ok = compare(input, output);
- total_iterations++;
- }
- if (arr_in.length < pool) {
- readline_in.resume();
- }
- if (arr_out.length < pool) {
- readline_out.resume();
- }
- }
- }
- /**
- * Функция вызывается после завершения чтения данных из файлов.
- * @param who
- */
- function finish(who) {
- if (who === 'in') {
- is_in_finish = true;
- }
- if (who === 'out') {
- is_out_finish = true;
- }
- if (is_in_finish && is_out_finish) {
- let input, output;
- for (let i = 0, ci = arr_in.length; i < ci; i++) {
- input = arr_in.shift();
- output = arr_out.shift();
- is_test_ok = compare(input, output);
- total_iterations++;
- }
- let mem = process.memoryUsage().heapTotal/1024/1024;
- console.log(`Testing result: [ ${is_test_ok} ]`);
- console.log('We made iterations: ', total_iterations);
- console.log('Total memory usage: ' + mem.toFixed(2) + ' Mb');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement