Получение информации о вызовах Kattis - readline js - PullRequest
0 голосов
/ 01 марта 2020

Я делаю вызов Каттиса -

https://open.kattis.com/problems/bookingaroom

По сути, я получаю первоначальный ввод - скажем, 6, 4

Я должен где-то сохранить эти входные данные и затем запросить другие входные данные x, где x = первое значение, ie. 6. Эти входные данные хранятся в другом месте, в массиве массивов.

Я пробовал так много разных вещей, но либо мои изначально сохраненные значения (6 и 4) меняются, либо они слишком многократно повторяются в остальной части input.

Мне кажется, что документация на их сайте ужасна.

https://open.kattis.com/help/javascript - для nodeJS пример

Мои попытки кода:

rl.question("initial", answer => {
  let nums = answer.split(" ");
  numberKittens = parseInt(nums[0]);
  spareBeds = parseInt(nums[1]);
  console.log("spare be", spareBeds);
  console.log("num of kit", numberKittens);
  rl.on(
    (numberKittens,
    answer => {
      let first = answer.split(" ");
      initialValue.push([parseInt(first[1]), parseInt(first[0])]);
      console.log("initial val", initialValue);
    })enter code here
  );
});

Начальная часть работает нормально, но никогда не попадает в часть rl.on и постоянно запрашивает ввод

Попытка два

rl.on("line", line => {
  let nums = line.split(" ");
  numberKittens = parseInt(nums[0]);
  spareBeds = parseInt(nums[1]);
  let first = line.split(" ");
  let initialValue = [];
  initialValue.push([parseInt(first[1]), parseInt(first[0])]);
})
  • каждый раз меняет numberKittens и spareBeds, портит итерацию

EDIT: В принципе, я пытаюсь сделать что-то подобное в GO:

    fmt.Scanln(&numOfKittens, &numOfBeds)

    for i := 1; i <= numOfKittens; i++ {
        fmt.Scanln(&arrivalDate, &departureDate)
        fmt.Println(arrivalDate, departureDate)
}

1 Ответ

0 голосов
/ 13 марта 2020

Как я понимаю задачу, я бы сделал что-то вроде этого:

let a, b;

rl.on('init', (line) => { 
   const nums = line.split(' '); 
   a = parseInt(nums[0]); 
   b = parseInt(nums[1]); 
});

//next part
const nextAnswers = [...Array(a)].map((_,i)=>{
   let answer;
   rl.on(`Next answer N:${i + 1}:`, a => (answer = a));    
   return parseInt(answer);
})
...