Задать вопрос
@ksimdexxx

Проходит тесты, но заканчивает с кодом 132. В чем проблема?

Собственно суть задания в том, чтобы создать спираль, например как здесь:
1 2 3
8 9 4
7 6 5 - Это спираль для n=3.

Вот код, который я написал:
vector<vector<int>> create_spiral(int n)
{
	int row = n, col = n; //  длина строк и столбиков
	vector<vector<int>> result; // возвращаемое значение
	int** arr = new int* [n]; // динамический массив, для того чтобы ставить n кол-во инициализаторов 
	for (int count = 0; count < n; count++)
		arr[count] = new int[n];
	int u = 0, r = 1, d = n - 2 , l = n - 1, count = 1; // все переменные, которые нам понадобятся: 
	for(int i = 1; i<=n/2; i++ )                        //u = up(верхний моток),  
	{                                                   // r = right(правый моток), d = down(нижний моток),
		for (int i = u; i <= row-1; i++)                //l = left(левый моток), count = число от 1 до n
			arr[u][i] = count++;                       // n/2 - общее число мотков, то есть при n=4, 
		for (int i = r; i <= col-1; i++)               //мы сделаем только 2 мотка,
			arr[i][row - 1] = count++;                   // при n=3 один моток и последнее число пишем отдельно
		for (int i = d; i >= u; i--)
			arr[d+1][i] = count++;
		for (int i = l - 1; i > u; i--)
			arr[i][u] = count++;
		u++;
		r++;
		d--;
		l--;
		row--;
		col--;
	}
	if (n % 2 != 0) // если n нечетное, то последнее число дописываем отдельно
	{
		arr[n / 2][n / 2] = n * n;
	}
	for (int i = 0; i < n;i++) // передаем значения динамического массива в result, через вектор, 
	{                           //который очищается при каждой итерации
		vector<int> agg;
		for (int b = 0; b < n;b++)
			agg.push_back(arr[i][b]);
		result.push_back(agg);
		agg.clear();
	}
	for (int i = 0; i < n; i++) // удаляем динамический массив
		delete[] arr[i];
	delete[] arr;
	return result;
}

Код работает, все спирали получаются как надо. Однако, когда вставляю его в codewars, он проходит оба теста и заканчивает с кодом 132. Решил изменить код, дабы посмотреть какие n дает кодварс для тестов. Первый это 1, а второй это 2. Вставил эти же значения в visual studio и все так же отлично работает и никакого кода 132 нет. Собственно в чем суть вопроса. Из за чего потенциально в codewars может вылазить код 132? Может ли быть проблема в самом codewars'е? Программирование изучаю относительно недавно, так что прошу отнестись с пониманием.
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@tugo
Не проходит 3-й тест. А их 4. Я чуть подправил, у меня прошло все 4.
В третьем тесте подается неправильное значение n. Нужно его нормально отработать.

fixed_tests
should_pass_some_example_tests
should_pass_some_more_fixed_tests
should_handle_invalid_input
randomized_tests
should_pass_some_randomized_tests
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы