main.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const fs = require('fs');
  2. const readline = require('readline');
  3. function ElfeSections(input) {
  4. let inputP = input.split('-').map(i => parseInt(i));
  5. this.min = inputP[0];
  6. this.max = inputP[1];
  7. }
  8. ElfeSections.prototype._partialContains = function(section) {
  9. return (this.min <= section.max && section.min <= this.max);
  10. }
  11. ElfeSections.prototype.partialContains = function(section) {
  12. return this._partialContains(section) || section._partialContains(this);
  13. }
  14. ElfeSections.prototype.fullyContains = function(section) {
  15. return ((section.min >= this.min && section.max <= this.max) ||
  16. (this.min >= section.min && this.max <= section.max));
  17. }
  18. async function main() {
  19. let fullyContains = 0;
  20. let partialContains = 0;
  21. for await (let line of readline.createInterface({ input: process.stdin })) {
  22. if (!line || !line.length)
  23. continue;
  24. let lineGroup = line.split(',').map(i => new ElfeSections(i));
  25. if (lineGroup[0].fullyContains(lineGroup[1]))
  26. fullyContains++;
  27. if (lineGroup[0].partialContains(lineGroup[1]))
  28. partialContains++;
  29. }
  30. console.log("Fully contains: "+ fullyContains);
  31. console.log("Partial contains: "+ partialContains);
  32. };
  33. (main());