first commit
This commit is contained in:
parent
415e7d9678
commit
77b5b65d15
14
sk1a/Makefile
Normal file
14
sk1a/Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
all: program
|
||||
|
||||
maze.o: maze.c
|
||||
gcc -c -g -Wall maze.c -o maze.o
|
||||
|
||||
main.o: main.c
|
||||
gcc -c -g -Wall main.c -o main.o
|
||||
|
||||
program: maze.o main.o
|
||||
gcc -g -Wall maze.o main.o -o program
|
||||
|
||||
clean:
|
||||
rm program
|
||||
rm *.o
|
39
sk1a/main.c
Normal file
39
sk1a/main.c
Normal file
@ -0,0 +1,39 @@
|
||||
#define SZ 5
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "maze.h"
|
||||
|
||||
void print_solution(char* matrix,int sz){
|
||||
for (int i = 0; i < sz * sz; i++){
|
||||
printf("%c ",matrix[i]);
|
||||
if (i % sz == (sz-1)){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
char tmaze[SZ+1][SZ+1]={
|
||||
"*x ",
|
||||
" x ",
|
||||
" x ",
|
||||
" x ",
|
||||
" ",
|
||||
};
|
||||
char maze[SZ*SZ];
|
||||
memset(maze,' ',SZ*SZ);
|
||||
for (int i= 0; i < SZ; i++){
|
||||
for (int j= 0; j < SZ; j++){
|
||||
if (tmaze[i][j] == 'x'){
|
||||
maze[i*SZ+j] = 'x';
|
||||
}
|
||||
}
|
||||
}
|
||||
int r = solve_maze(maze,SZ);
|
||||
if (!r){
|
||||
printf("Nenasiel som riesenie\n");
|
||||
}
|
||||
print_solution(maze,SZ);
|
||||
|
||||
return 0;
|
||||
}
|
BIN
sk1a/main.o
Normal file
BIN
sk1a/main.o
Normal file
Binary file not shown.
64
sk1a/maze.c
Normal file
64
sk1a/maze.c
Normal file
@ -0,0 +1,64 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "maze.h"
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
int solve_maze(char* maze, int size){
|
||||
for(int i = 0; i < size * size; i++){
|
||||
if(maze[i] == ' '){
|
||||
maze[i] = '*';
|
||||
continue;
|
||||
}else{
|
||||
i = i+size-2;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*int solve_maze(char* maze,int size){
|
||||
|
||||
char smaze[size+1][size+1];
|
||||
char* wmaze = smaze;
|
||||
int k = 0;
|
||||
memset(smaze, 0, size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
for (int j = 0; j < size; j++) {
|
||||
smaze[i][j] = maze[k];
|
||||
k++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
for (int j = 0; j < size; j++) {
|
||||
printf("%c ",smaze[i][j]);
|
||||
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
int r = findWay(0,0,size);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int findWay(int i, int j, int size){
|
||||
|
||||
if(wmaze[i][j] == ' '){
|
||||
|
||||
wmaze[i][j] = '*';
|
||||
if(findWay(i, j+1, size) == 1) return 1;
|
||||
if(findWay(i+1, j+1, size) == 1) return 1;
|
||||
|
||||
wmaze[i][j] = ' ';
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
*/
|
22
sk1a/maze.h
Normal file
22
sk1a/maze.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef _MAZEH
|
||||
#define _MAZEH
|
||||
|
||||
/**
|
||||
* Funkcia by mala zobrať vstupnú mriežku a
|
||||
* vyznačiť na nej cestu z ľavého horného rohu do pravého dolného rohu.
|
||||
* Mriežka je uložená do jednorozmerného poľa, pričom najprv ide prvý riadok,
|
||||
* za ním druhý a tak ďalej.
|
||||
*
|
||||
* Na mriežke sa nachádzajú znaky:
|
||||
* ' ' - voľné miesto
|
||||
* 'x' - stena. Stena nesmie byť prepísaná.
|
||||
* '*' - poloha potkana. Na začiatku je na 0,0.
|
||||
*
|
||||
* @param maze Štvorcová mriežka rozmeru size x size.
|
||||
* @param size Rozmer mriežky
|
||||
* @return 1 ak existuje riešenie, 0 inak.
|
||||
*/
|
||||
int solve_maze(char* maze,int size);
|
||||
|
||||
|
||||
#endif
|
BIN
sk1a/maze.o
Normal file
BIN
sk1a/maze.o
Normal file
Binary file not shown.
BIN
sk1a/program
Executable file
BIN
sk1a/program
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user