Event Emitter Basics
JavaScript
Hard
5 views
Problem Description
Process commands on an emitter: ON event, ONCE event, EMIT event, OFF event. Maintain how many times handler runs and print total at end.
Input Format
First line q. Next q lines commands.
Output Format
One integer totalCalls.
Sample Test Case
Input:
7
ON ping
EMIT ping
ONCE ping
EMIT ping
EMIT ping
OFF ping
EMIT ping
Official Solution
const fs=require('fs');const lines=fs.readFileSync(0,'utf8').trim().split(/\
?\
/);if(!lines[0])process.exit(0);const q=Number(lines[0]);let on=false;let once=false;let calls=0;for(let i=1;i<=q;i++){const [cmd,ev]=lines[i].trim().split(/\\s+/);if(cmd==='ON')on=true;else if(cmd==='ONCE')once=true;else if(cmd==='OFF'){on=false;once=false;}else if(cmd==='EMIT'){if(on){calls++;}if(once){calls++;once=false;}}}process.stdout.write(String(calls));
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!