1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 'use strict'; const fs = require('fs'); process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; process.stdin.on('data', function(inputStdin) { inputString += inputStdin; }); process.stdin.on('end', function() { inputString = inputString.split('\n'); main(); }); function readLine() { return inputString[currentLine++]; } const completedNotes = []; const activeNotes = []; const otherNotes = []; class NotesStore { addNote(state, name) { if (name === undefined || name === null || name === '') { throw new Error('Name cannot be empty'); } if (!this.isValid(state)) { throw new Error('Invalid state ' + state); } this.getNotesList(state).push(name); } getNotes(state) { if (!this.isValid(state)) { throw new Error('Invalid state ' + state); } return this.getNotesList(state); } getNotesList(state) { if (state === 'completed') { return completedNotes; } else if (state === 'active') { return activeNotes; } return otherNotes; } isValid(state) { return state === 'completed' || state === 'active' || state === 'others'; } } function main() { const ws = fs.createWriteStream(process.env.OUTPUT_PATH); const obj = new NotesStore(); const operationCount = parseInt(readLine().trim()); for(let i = 1; i <= operationCount; i++) { const operationInfo = readLine().trim().split(' '); try { if (operationInfo[0] === 'addNote') { obj.addNote(operationInfo[1], operationInfo[2] || ''); } else if (operationInfo[0] === 'getNotes') { const res = obj.getNotes(operationInfo[1]); if (res.length === 0) { ws.write('No Notes\n'); } else { ws.write(`${res.join(',')}\n`); } } } catch (e) { ws.write(`${e}\n`); } } ws.end(); } |
Notes Store - Java Script (Basic) Certification test Solution | HackerRank
3 min read