fork download
  1. process.stdin.resume();
  2. process.stdin.setEncoding('utf8');
  3.  
  4. // your code goes here
  5. const draw = keys => {
  6. const dir = {'>': {y: 0, x: 1}, 'v': {y: 1, x: 0}, '<': {y: 0, x: -1}, '^': {y: -1, x: 0}};
  7. const max = {y: 0, x: 0}, min = {y: 0, x: 0};
  8. const scr = [];
  9. const lastPos = [...keys].reduce((acc, key) => {
  10. const {y, x} = dir[key];
  11. const cur = {y: acc.y + y, x: acc.x + x};
  12. if (!(cur.y in scr)) scr[cur.y] = [];
  13. scr[cur.y][cur.x] = key;
  14.  
  15. if (cur.y > max.y) max.y = cur.y;
  16. else if (cur.y < min.y) min.y = cur.y;
  17. if (cur.x > max.x) max.x = cur.x;
  18. else if (cur.x < min.x) min.x = cur.x;
  19.  
  20. return cur;
  21. }, {y: -dir[keys[0]].y, x: -dir[keys[0]].x});
  22. const strs = [];
  23. for (let y = min.y; y <= max.y; y++) {
  24. let row = '';
  25. for (let x = min.x; x <= max.x; x++) {
  26. row += scr[y][x] || '*';
  27. }
  28. strs.push(row);
  29. }
  30. return strs.join('\n');
  31. }
  32. console.log(draw('<<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv'));
Success #stdin #stdout 0.04s 146816KB
stdin
Standard input is empty
stdout
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********