/ / Що стосується програми, яка обчислює час за допомогою клавіатури [closed] - c #

Що стосується програми, яка обчислює час за допомогою клавіатури [closed] - c #

Мобільний телефон має 12 клавіш для введення ('1', 2, 3, 4, 5, 6, 7, 8, 9, 0, '*' та '#').

У стандартному режимі введення тексту кожна клавіша може використовуватися для введення літер алфавіту та пробілу. Наприклад, щоб отримати доступ до літери "b", користувач двічі натискає клавішу "2".

Для того, щоб натиснути клавішу, користувачеві потрібно щонайменше 100 мсекключ Якщо користувачеві доводиться використовувати ту ж клавішу для введення послідовних символів, то телефон має принаймні 0,5 секунди паузи, щоб прийняти, що наступний натискання клавіші представляє новий символ.

Я хочу написати консольну програму, якаприймає будь-який рядок, який можна ввести за допомогою клавішних призначень у сітку за допомогою C #. Програма повинна приймати введення від користувача та обчислити мінімальний час, необхідний для введення цієї строки за допомогою клавіатури та послідовності ключів, які будуть потрібні.

Якщо хтось знає, хто може мені допомогти написати програму.

Відповіді:

0 для відповіді № 1

Це має дати вам уявлення:

class Mobilegrid
{
const int MIN_DURATION = 100;
const int WAIT_DURATION = 500;

private static Dictionary<Char, Tuple<Char, int>> Grid;
static Mobilegrid()
{
Grid = new Dictionary<Char, Tuple<Char, int>>();
Grid.Add("a", Tuple.Create("2", 1));
Grid.Add("b", Tuple.Create("2", 2));
Grid.Add("c", Tuple.Create("2", 3));
Grid.Add("d", Tuple.Create("3", 1));
Grid.Add("e", Tuple.Create("3", 2));
Grid.Add("f", Tuple.Create("3", 3));
Grid.Add("g", Tuple.Create("4", 1));
Grid.Add("h", Tuple.Create("4", 2));
Grid.Add("i", Tuple.Create("4", 3));
Grid.Add("j", Tuple.Create("5", 1));
Grid.Add("k", Tuple.Create("5", 2));
Grid.Add("l", Tuple.Create("5", 3));
Grid.Add("m", Tuple.Create("6", 1));
Grid.Add("n", Tuple.Create("6", 2));
Grid.Add("o", Tuple.Create("6", 3));
Grid.Add("p", Tuple.Create("7", 1));
Grid.Add("q", Tuple.Create("7", 2));
Grid.Add("r", Tuple.Create("7", 3));
Grid.Add("s", Tuple.Create("7", 4));
Grid.Add("t", Tuple.Create("8", 1));
Grid.Add("u", Tuple.Create("8", 2));
Grid.Add("v", Tuple.Create("8", 3));
Grid.Add("w", Tuple.Create("9", 1));
Grid.Add("x", Tuple.Create("9", 2));
Grid.Add("y", Tuple.Create("9", 3));
Grid.Add("z", Tuple.Create("9", 4));
}

public static int CalculateMinimumTime(String word)
{
int totalMillis = 0;
for (int index = 0; index < word.Length; index++)
{
Tuple<Char, int> charInfo = Grid[word[index]];
int Pos = charInfo.Item2;
int clickTime = Pos * MIN_DURATION;
if (index != 0)
{
Tuple<Char, int> lastCharInfo = Grid[word[index - 1]];
if (lastCharInfo.Item1 == charInfo.Item1)
clickTime += WAIT_DURATION;
}
totalMillis += clickTime;
}
return totalMillis;
}
}

Тоді ви отримаєте мінімальний необхідний час:

int totalMillis = Mobilegrid.CalculateMinimumTime("hello"); //1800

Примітка: вам потрібно додати спеціальні символи, такі як білий простір.