Так и не понял, как проходить несколько тестов, а не один) В любом случае писал для себя ибо сокобан и так есть. Вот код, может кому-то пригодиться для начала своих разработок. (ввиду отсутствия в роботе многих плюх фреймворка год получился несколько длиннее)
static void Main()
{
Console.WriteLine(Unbox("4AB5C4D", 80));
}
static string Unbox(string text, int maxLength)
{
string res = string.Empty;
string[] sepAlfLetters = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y" };
string[] sepAlfFigures = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
string[] letArr = text.Split(sepAlfFigures, StringSplitOptions.RemoveEmptyEntries);
string[] figArr = text.Split(sepAlfLetters, StringSplitOptions.RemoveEmptyEntries);
int letCount = 0;
for (int i = 0; i < figArr.Length; i++)
{
string temp = string.Empty;
if (letArr[letCount].Length > 1)
{
for (int j = 1; j < letArr[letCount].Length; j++) temp += letArr[letCount][j];
letArr[letCount] = letArr[letCount][0].ToString();
}
for (int j = 0; j < int.Parse(figArr[i]); j++) res += letArr[letCount];
letCount++;
res += temp;
}
if (res.Length > maxLength) throw new Exception("Длина строки более 80 символов");
else if (res.Length > 40) res = res.Insert(40, Environment.NewLine);
return res;
}
"Что значит, что "строка должна быть разбита на строчки длиной по 40 символов"? То есть если на вход дана строка 100А, то на выходе должно быть две строки по 40 А и одна строка с 20 А?"
эксепшн бросать
Очень здорово! По-моему это первый такой отчет с двумя компьютерами!
Евгений, шикарная работа, ты еще и на двух компах протестировал как я поняла и все работает! Молодец! :)
Евгений, замечательно что продолжаешь создавать игру, что занимаешься! Если хочешь попробуй реализовать так и пожалуйста поделись своими результатами! :)
Евгения, замечательно двигаешься вперед, твои результаты очень радуют! Молодец! :)
Женя, я в восторге от твоих успехов!!!!
Евгений, замечательные познания! :)
Евгений, очень рада что урок тебе понравился и ты освоил новый алгоритм! :)
Да, просто лишнее пишем:
if(...) return false; // 1
if(...) return false; // 2
if(...) return true; // 3
return false;
Смысл писать первые два условия. так же и в предыдущем уроке было.
Евгений, я завтра начинаю этот курс, пока ничего не отвечу, попробую твое предложение! А ты так пробовал? Работает корректно!? :)
Солнечно! Класс! Отлично придумано!
Евгений, очень позитивно! :)
Евгений, очень хорошо что ты продолжаешь создавать эту замечательную игру, у тебя хорошо получилось! :)
ты это узнаешь из последующих уроков;-)
Ух ты! Классные текстуры!!
Хорошие уровни ты придумал.
Евгений, я хочу попросить не ставь пожалуйста прочерки, напиши хоть что-то словами! Спасибо! :)
Евгений, замечательно что продолжаешь заниматься, завтра присоединяюсь буду догонять вас! :)
Евгений, мне очень нравится как у тебя получилось, особенно зеленые человечки! :)
Красиво получается.
Евгений, прикольненькие у тебя картинки!:)
Дополнительные функции - это хорошо,
всегда может потребоваться что-то добавить.
Евгений, я очень рада что ты все же продолжаешь заниматься! Уверена ты найдешь для себя наиболее лучший способ! :)
Ну, этот вариант простой только на первый взгляд.
Потом начинаются всякие проблемы. Так что сериализация,
хоть и посложнее вначале, но проще при дальнейшем развитии проекта.
Такой вариант загрузки мне понравился, например, своей наглядностью и простотой реализации, т.к. в xml так наглядно не будет. А текстовый файл всегда просто создать или исправить, если где-то ошибся. А сериализация есть, например, в спрайтах - там как раз удобнее информацию хранить в xml .
Если эта игра бесполезная, то, наверное, не стоит её писать.
Делать нужно только то, что интересно и полезно.