Machineboy空
Excercism - Building Telemetry (out, ref) 본문
문제요약
RemoteControlCar가 있고, 이것을 사용하는 클라이언트가 있을 때 여러 정보(스폰서, 달린 거리)등을 보내줘라.
- SetSponsors(), DisplaySponsors()
- GetTelemetryData()
- GetBatteryUsagePerMeter()
https://exercism.org/tracks/csharp/exercises/building-telemetry/
Building Telemetry in C# on Exercism
Can you solve Building Telemetry in C#? Improve your C# skills with support from our world-class team of mentors.
exercism.org
난이도
Easy
풀이 포인트
- out, ref 키워드 잘 이해하고 사용하기
REVIEW
키워드가 붙었을 뿐, 파라미터라는 것은 같은데 사용이 어색해서 기록해둔다.
CODE
public class RemoteControlCar
{
private int batteryPercentage = 100;
private int distanceDrivenInMeters = 0;
private string[] sponsors = new string[0];
private int latestSerialNum = 0;
public void Drive()
{
if (batteryPercentage > 0)
{
batteryPercentage -= 10;
distanceDrivenInMeters += 2;
}
}
public void SetSponsors(params string[] sponsors)
{
this.sponsors = sponsors;
}
public string DisplaySponsor(int sponsorNum)
{
return sponsors[sponsorNum];
}
public bool GetTelemetryData(ref int serialNum,
out int batteryPercentage, out int distanceDrivenInMeters)
{
if (serialNum < this.latestSerialNum)
{
serialNum = this.latestSerialNum;
batteryPercentage = -1;
distanceDrivenInMeters = -1;
return false;
}
this.latestSerialNum = serialNum;
batteryPercentage = this.batteryPercentage;
distanceDrivenInMeters = this.distanceDrivenInMeters;
return true;
}
public static RemoteControlCar Buy()
{
return new RemoteControlCar();
}
}
public class TelemetryClient
{
private RemoteControlCar car;
public TelemetryClient(RemoteControlCar car)
{
this.car = car;
}
public string GetBatteryUsagePerMeter(int serialNum)
{
int battery = 0;
int distance = 0;
if(car.GetTelemetryData(ref serialNum, out battery, out distance)){
if(distance == 0) return "no data";
return $"usage-per-meter={(100 - battery)/distance}";
}
return "no data";
}
}
'Computer > Coding Test' 카테고리의 다른 글
| [Kata] Crack the PIN (0) | 2026.01.06 |
|---|---|
| [Kata] Find the odd int (0) | 2025.11.19 |
| 連想配列(query) C#編 (0) | 2025.06.10 |
| Day20: プログラマー必携!2025年バイブコーディング(vibe coding)ツール完全ガイド (0) | 2025.06.06 |
| 「RPG C#編」 (0) | 2025.06.04 |
