题解 | 坐标移动 - 2026 use struct to express x,y
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text.RegularExpressions;
namespace testConsoleApp {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public class Program {
public static void Main() {
string line = Console.ReadLine();
string[] listOfDirection = line.Split(';');
var moveSystem = new MovingSystem();
string pattern = @"^([WASD])(0?\d{1}|[1-9]\d{1})$";
foreach (var directionUnit in listOfDirection) {
if (null == directionUnit) continue;
Match match = Regex.Match(directionUnit, pattern);
if (match.Success) {
var directinput = match.Groups[1].ToString();
var lengthinput = Convert.ToInt32(match.Groups[2].ToString());
//Console.WriteLine($"{directionUnit}");
//Console.WriteLine($"{directinput}");
//Console.WriteLine($"{lengthinput}");
moveSystem.Move(directinput, lengthinput);
}
}
var result = moveSystem.GetPosition();
Console.WriteLine($"{result.x},{result.y}");
}
}
public class MovingSystem {
public struct VectorMoving {
public int x;
public int y;
}
public VectorMoving Position = new VectorMoving {x = 0, y = 0};
public void Move(string input, int length) {
switch (input) {
case "W":
Position.y += length;
break;
case "S":
Position.y -= length;
break;
case "A":
Position.x -= length;
break;
case "D":
Position.x += length;
break;
default :
break;
}
}
public VectorMoving GetPosition() {
return Position;
}
}
}
