<commit_before>/*
 * labyrinth.cpp
 *
 *  Created on: 15.01.2015 г.
 *      Author: trifon
 */

#include <iostream>
using namespace std;

const int MAX = 100;

char labyrinth[MAX][MAX];
int m, n;

void readLabyrinth() {
	cin >> m >> n;
	cin.ignore();
	for(int i = 0; i < m; i++)
		cin.getline(labyrinth[i], n + 2);
}

void printLabyrinth() {
	for(int i = 0; i < m; i++)
		cout << labyrinth[i] << endl;
}

void findStart(int& x, int& y) {
	for(int i = 0; i < m; i++)
		for(int j = 0; j < n; j++)
			if (labyrinth[i][j] == 'o') {
				x = i;
				y = j;
				return;
			}
}

// findTreasure(x, y) == true <->
//          можем от (x, y) да достигнем до съкровището
bool findTreasure(int x, int y) {
	if (labyrinth[x][y] == '$') {
		// лесен хубав случай
		cout << "Намерихме съкровището на (" << x <<
				"," << y << ")!\n";
		return true;
	}
	if (labyrinth[x][y] == '*')
		// лесен лош случай
		return false;
	// стъпка надолу
	if (findTreasure(x + 1, y))
		return true;
	// стъпка нагоре
	if (findTreasure(x - 1, y))
		return true;
	// стъпка наляво
	if (findTreasure(x, y - 1))
		return true;
	// стъпка надясно
	if (findTreasure(x, y + 1))
		return true;
	return false;
}

int main() {
	readLabyrinth();
	printLabyrinth();
	int startx, starty;
	findStart(startx, starty);
	cout << "Започваме от " << "("
			<< startx << "," << starty << ")\n";
	cout << findTreasure(startx, starty) << endl;
	printLabyrinth();
	return 0;
}

<commit_msg>Поправка на проблемите: проверка за излизане от лабиринта и "хвърляне на трохи" за отбелязване на пътя.<commit_after>/*
 * labyrinth.cpp
 *
 *  Created on: 15.01.2015 г.
 *      Author: trifon
 */

#include <iostream>
using namespace std;

const int MAX = 100;

char labyrinth[MAX][MAX];
int m, n;

void readLabyrinth() {
	cin >> m >> n;
	cin.ignore();
	for(int i = 0; i < m; i++)
		cin.getline(labyrinth[i], n + 2);
}

void printLabyrinth() {
	for(int i = 0; i < m; i++)
		cout << labyrinth[i] << endl;
}

void findStart(int& x, int& y) {
	for(int i = 0; i < m; i++)
		for(int j = 0; j < n; j++)
			if (labyrinth[i][j] == 'o') {
				x = i;
				y = j;
				return;
			}
}

// findTreasure(x, y) == true <->
//          можем от (x, y) да достигнем до съкровището
bool findTreasure(int x, int y) {
	cout << "Пробваме да стъпим на (" << x << "," << y << ")" << endl;
	if (x < 0 || y < 0 || x >= m || y >= n ||
			labyrinth[x][y] == '*' || labyrinth[x][y] == '"')
		// лесен лош случай
		return false;
	if (labyrinth[x][y] == '$') {
		// лесен хубав случай
		cout << "Намерихме съкровището на (" << x <<
				"," << y << ")!\n";
		cout << "Направихме " << move << " стъпки!\n";
		return true;
	}
	labyrinth[x][y] = '"';
	// стъпка надолу
	if (findTreasure(x + 1, y))
		return true;
	// стъпка нагоре
	if (findTreasure(x - 1, y))
		return true;
	// стъпка наляво
	if (findTreasure(x, y - 1))
		return true;
	// стъпка надясно
	if (findTreasure(x, y + 1))
		return true;
	labyrinth[x][y] = 'X';
	return false;
}

int main() {
	readLabyrinth();
	printLabyrinth();
	int startx, starty;
	findStart(startx, starty);
	cout << "Започваме от " << "("
			<< startx << "," << starty << ")\n";
	cout << findTreasure(startx, starty) << endl;
	printLabyrinth();
	return 0;
}


{'fraction_non_alphanumeric': 0.20081453634085214, 'fraction_numerical': 0.013784461152882205, 'mean_word_length': 2.9034229828850857, 'pattern_counts': {'":': 0, '<': 95, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2229832', 'n_tokens_mistral': 1532, 'n_tokens_neox': 1422, 'n_words': 371}