PascalABC.NET 3.4.2, сборка 1843 от 24.10.2018
Внимание! Если программа не работает, обновите версию!
begin
var s := ReadlnString;
var L := s.MatchValues('\d+[NWSE]').ToList;
var (x, y) := (0, 0); // N: +y, E: +x, S: -y, W: -x
foreach var t in L do
begin
var n := t[:t.Length].ToInteger;
case t.Last of
'N': y += n;
'E': x += n;
'S': y -= n;
'W': x -= n
end
end;
var sy := y > 0 ? 'N' : 'S';
var sx := x > 0 ? 'E' : 'W';
$'{Abs(y)}{sy}{Abs(x)}{sx}'.Println
end.