Advertisement
YanislavD

Farm

Apr 7th, 2025
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve (input) {
  2.  
  3.     const countFarmers = input.shift();
  4.     let farmers = [];
  5.  
  6.     for (let i = 0; i < countFarmers; i++) {
  7.         let currentFarmer = input.shift().split(' ');
  8.         const farmerName = currentFarmer.shift();
  9.         const workArea = currentFarmer.shift();
  10.         let tasks = currentFarmer.shift().split(',');
  11.  
  12.         let farmer = {
  13.             name: farmerName,
  14.             workArea: workArea,
  15.             tasks: tasks
  16.         };
  17.  
  18.         farmers.push(farmer);
  19.     }
  20.  
  21.     let tokens = input.shift().split(' / ');
  22.  
  23.     while(tokens[0] !== "End") {
  24.  
  25.         switch (tokens[0]) {
  26.  
  27.             case 'Execute': {
  28.                 const farmerName = tokens[1];
  29.                 const workArea = tokens[2];
  30.                 const task = tokens[3];
  31.  
  32.                 let farmer = farmers.find(f => f.name === farmerName);
  33.  
  34.                 if (farmer.workArea === workArea && farmer.tasks.includes(task)) {
  35.                     console.log(`${farmerName} has executed the task: ${task}!`);
  36.                 } else {
  37.                     console.log(`${farmerName} cannot execute the task: ${task}.`);
  38.                 }
  39.                 break;
  40.             }
  41.  
  42.             case `Change Area`: {
  43.                 const farmerName = tokens[1];
  44.                 const newWorkArea = tokens[2];
  45.  
  46.                 farmers.find(f => f.name === farmerName).workArea = newWorkArea;
  47.  
  48.                 console.log(`${farmerName} has changed their work area to: ${newWorkArea}`)
  49.                 break;
  50.             }
  51.  
  52.             case `Learn Task`: {
  53.                 const farmerName = tokens[1];
  54.                 const newTask = tokens[2];
  55.  
  56.                 if (farmers.find(f => f.name === farmerName).tasks.includes(newTask)) {
  57.                     console.log(`${farmerName} already knows how to perform ${newTask}.`);
  58.                 } else {
  59.                     farmers.find(f => f.name === farmerName).tasks.push(newTask);
  60.                     console.log(`${farmerName} has learned a new task: ${newTask}.`);
  61.                 }
  62.                 break;
  63.             }
  64.         }
  65.  
  66.  
  67.         tokens = input.shift().split(' / ');
  68.     }
  69.  
  70.     for (let farmer of farmers) {
  71.        farmer.tasks.sort((a, b) => a.localeCompare(b));
  72.        console.log(`Farmer: ${farmer.name}, Area: ${farmer.workArea}, Tasks: ${farmer.tasks.join(', ')}`);
  73.     }
  74.  
  75. }
  76.  
  77. solve([
  78.     "2",
  79.     "John garden watering,weeding",
  80.     "Mary barn feeding,cleaning",
  81.     "Execute / John / garden / watering",
  82.     "Execute / Mary / garden / feeding",
  83.     "Learn Task / John / planting",
  84.     "Execute / John / garden / planting",
  85.     "Change Area / Mary / garden",
  86.     "Execute / Mary / garden / cleaning",
  87.     "End"
  88.   ] )
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement