PTA提交node.js程式碼

and80506發表於2018-07-10

目錄

  1. PTA簡介
  2. PTA提交node.js程式碼遇到的坑
  3. PTA提交node.js程式碼的正確姿勢

PTA簡介

PTA全名:程式設計類實驗輔助教學平臺,網址:https://pintia.cn 是一個提供線上程式試題測評的教學平臺。

PTA提交node.js程式碼遇到的坑

  • 題目 以上省略題目內容... 要求的輸入格式和輸出格式 輸入格式:輸入第1行給出正整數K (≤100000);第2行給出K個整數,其間以空格分隔。 輸出格式:在一行中輸出最大子列和。如果序列中所有整數皆為負數,則輸出0。

  • 答題 編譯器選擇Javascript(node)提交了如下程式碼,看下測試結果:

var k = 6;
var arr = [-2, 11, -4, 13, -5, -2];
function testFn(k, arr) {
  var total = 0;
  var maxNum = 0;
  for(var i = 0; i < arr.length; i++) {
    var arrI = arr[i];
    total += arrI;
    if (total < 0) {
      total = 0;
      continue;
    } else if( total > maxNum){
      maxNum = total;
    }
  }
  return maxNum;
}
console.log(testFn(k, arr));
複製程式碼
  • 測試結果 明明本地測試通過後的程式碼,總是提示答案錯誤。猜測可能是沒有正確讀入輸入。

  • 看下官方的常見問題解答(FAQ)

*我應該從哪裡讀輸入,另外應該輸出到哪裡? 如果沒有特別說明,你的程式應該從標準輸入(stdin,傳統意義上的“鍵盤”)讀入,並輸出到標準輸出(stdout,傳統意義上的“螢幕”),不要使用檔案做輸入輸出。由於系統是在你的程式執行結束後開始檢查輸出是否是正確的,對於有多組測試資料的輸入,可以全部讀入之後再輸出,也可以處理一組測試資料就輸出一組。

PTA提交node.js程式碼的正確姿勢

使用process.stdin讀入測試程式的輸入值作為測試程式的引數,使用process.stdout或者console.log輸出給標準輸出。 示例程式碼如下

var buf = '';

var k;
var arr;
process.stdin.on('readable', function() {
  var chunk = process.stdin.read();
  if (chunk) buf += chunk.toString();
});

process.stdin.on('end', function() {
  buf.split('\n').forEach(function(line, i) {
    // 第1行輸入
    if (i === 0) {
      k = parseInt(line);
    // 第2行輸入
    } else if (i === 1) {
      arr = line.split(' ').map(function(x) { return parseInt(x); });
      // 在這裡使用輸入作為引數執行測試程式
      console.log(testFn(k, arr));
    }
  });
});

// 測試程式
function testFn() {
  // 在這裡編寫測試程式
  // ...
  
  // 使用process.stdout.write或者console.log輸出測試結果
  console.log('測試成功');
}
複製程式碼

相關文章