diff --git a/jmaths/bin/main b/jmaths/bin/main index b985017ec3177668cc94ef1ecbe6dfa516c6d705..3d1a5db6978452da79edfad815e7bd8230d71315 100755 Binary files a/jmaths/bin/main and b/jmaths/bin/main differ diff --git a/jmaths/src/jmath.c b/jmaths/src/jmath.c index 45560d843d603c11d1a3907c28479d3b6596a913..1894d71183284bd5fc56babde037be9d913bd690 100644 --- a/jmaths/src/jmath.c +++ b/jmaths/src/jmath.c @@ -44,6 +44,25 @@ uint64_t GCD(uint64_t a, uint64_t b) uint64_t LCM(uint64_t a, uint64_t b) { return( a / (GCD(a, b)) * b); +} + +/** + * @brief Get the Lowest Common Multiplier Recursivly + * + * @param a + * @param b + * @return int64_t + */ +uint64_t LCMR(uint64_t ma, uint64_t mb, uint64_t a, uint64_t b) +{ + // STOP + if(ma == mb){return ma;} + else if(ma > mb){ LCMR(); } + + + + + } diff --git a/jmaths/src/main.c b/jmaths/src/main.c index 90a0ef6483d465f18d78d953f8a4357400201fed..3b9b4140739257e5ee8e23dcef0a62c47c304119 100644 --- a/jmaths/src/main.c +++ b/jmaths/src/main.c @@ -57,12 +57,13 @@ int main() printf("COMPUTED FACTORIAL IN %lfs\n", timeT); printf("FACT(%ld) = %ld \n", a, r); - t = clock(); - r = fibo(b); - t = clock() - t; - timeT = ((double)t) / CLOCKS_PER_SEC; - printf("COMPUTED FIBO IN %lfs\n", timeT); - printf("FACT(%ld) = %ld \n", a, r); + // // FIBO + // t = clock(); + // r = fibo(b); + // t = clock() - t; + // timeT = ((double)t) / CLOCKS_PER_SEC; + // printf("COMPUTED FIBO IN %lfs\n", timeT); + // printf("FACT(%ld) = %ld \n", a, r); return 0; diff --git a/queen_backtrack/kreate.py b/queen_backtrack/kreate.py new file mode 100644 index 0000000000000000000000000000000000000000..40079e06763dce3bb1573f2de50ba83f73314ddc --- /dev/null +++ b/queen_backtrack/kreate.py @@ -0,0 +1,196 @@ +# * PROJ +# * Author: Jonas S. +# * Date: 11/07/21 +# ! OBJECTIVE +# ? CREATE A BASIC RUNNING PROJECT +# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS +# ? CREATE MAKEFILE +# ! NEED COLORAMA AND OS + + + + +import colorama +from colorama import Fore, Back + + +#HARD CODED STUFF +NAME = "Jonas S." +colorama.init() + +# ! FILE CREATION +def createFile(fileName, content): + with open(f"{fileName}", 'w', encoding = 'utf-8') as f: + f.write(content) + +def createHeaderFile(fileName): + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* HEADER {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + f"#ifndef _{fileName.upper()}_H_\n" + f"#define _{fileName.upper()}_H_\n\n" + "// DEFINES\n\n" + "// PROTOTYPE FUNCTIONS\n\n" + "#endif" + ) + + if not os.path.exists('include'): + mkdir('include') + createFile(f"include/{fileName}.h", content) + +def createCodeFile(fileName): + from datetime import datetime + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* CODE {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + ) + + # add basic printf if main + if fileName == "main": + content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}" + + if not os.path.exists('src'): + mkdir('src') + createFile(f"src/{fileName}.c", content) + +def createMakefile(): + content = ( + "CC := gcc\n" + "CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n" + "\n" + "BIN := bin\n" + "SRC := src\n" + "INCLUDE := include\n" + "LIBRARIES := -lm\n" + "EXECUTABLE1 := main\n" + "\n" + "# ADD ALL THE SOURCES FOR EXECUTABLE1\n" + "SOURCES1 += $(SRC)/jrandom\n" + "\n" + ".PHONY: all run clean # Specify these are not files but internal terms\n" + "\n" + "all: $(BIN)/$(EXECUTABLE1)\n" + "\n" + "run: clean all\n" + " clear\n" + " @echo "########## EXECUTE FIRST PROGRAM ##########"\n" + " ./$(BIN)/$(EXECUTABLE1)\n" + "\n" + "# # $^ -> dep\n" + "# # $@ -> target\n" + "# # $< -> premiere dep\n" + "# # Compiles directly the c files\n" + "# # Not optimal but succint and simple\n" + "\n" + "# COMPILE FIRST EXECUTABLE\n" + "$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n" + " @echo "########## COMPILING FIRST EXECUTABLE ##########"\n" + " $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n" + "\n" + "clean:\n" + " @echo "########## CLEANING ##########"\n" + " -rm $(BIN)/*\n" + "\n" + ) + createFile("Makefile", content) + +def createDirStructure(): + import os + from os import mkdir + + if not os.path.exists('bin'): + mkdir('bin') + if not os.path.exists('build'): + mkdir('build') + if not os.path.exists('include'): + mkdir('include') + if not os.path.exists('src'): + mkdir('src') + +# ! MENU CREATION +def createCompleteProject(): + # Base structure (SRC, BUILD, INCLUDE, BIN) + createDirStructure() + print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}") + # Makefile + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + # Main + createCodeFile("main") + print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}") + +def createCodeHeader(name): + # Code + createCodeFile(name) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + # Header + createHeaderFile(name) + print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}") + + + +# ! MENU +def menu(): + choice = input( + "1 - COMPLETE PROJECT \n" + "2 - CODE + HEADER \n" + "3 - CODE ONLY \n" + "4 - HEADER ONLY \n" + "5 - MAKEFILE ONLY \n" + "\n" + + ) + + # PROJECT + if choice == '1': + print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}") + createCompleteProject() + + # CODE + HEADER + elif choice == '2': + print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}") + createCodeHeader(input("WHAT FILE NAME DO YOU WANT : ")) + + # CODE + elif choice == '3': + print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}") + createCodeFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # HEADER + elif choice == '4': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}") + createHeaderFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # MAKEFILE + elif choice == '5': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.") + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + +if __name__ == "__main__": + menu() + + + diff --git a/stack/Makefile b/stack/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..89e596e7bdcd839f4a87c9b118c1436e7292935f --- /dev/null +++ b/stack/Makefile @@ -0,0 +1,36 @@ +CC := gcc +CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak + +BIN := bin +SRC := src +INCLUDE := include +LIBRARIES := -lm +EXECUTABLE1 := main + +# ADD ALL THE SOURCES FOR EXECUTABLE1 +SOURCES1 += $(SRC)/jrandom + +.PHONY: all run clean # Specify these are not files but internal terms + +all: $(BIN)/$(EXECUTABLE1) + +run: clean all + clear + @echo "RUN MAIN" + ./$(BIN)/$(EXECUTABLE1) + +# # $^ -> dep +# # $@ -> target +# # $< -> premiere dep +# # Compiles directly the c files +# # Not optimal but succint and simple + +# COMPILE FIRST EXECUTABLE +$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES) + @echo + $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES) + +clean: + @echo + -rm $(BIN)/* + diff --git a/stack/bin/main b/stack/bin/main new file mode 100755 index 0000000000000000000000000000000000000000..64ac03de35bd59a9847fc639b51e77501e760bf0 Binary files /dev/null and b/stack/bin/main differ diff --git a/stack/include/stack.h b/stack/include/stack.h new file mode 100644 index 0000000000000000000000000000000000000000..d27e992f64dabca2b253e70c109e128fcaf1e5c5 --- /dev/null +++ b/stack/include/stack.h @@ -0,0 +1,39 @@ +/* + * HEADER STACK + * Author : Jonas S. + * Date : 17/11/2021 + ! STACK IMPLEMENTATION +*/ + +#include <stdio.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> + + + +#ifndef _JSTACK_H_ +#define _JSTACK_H_ + +// DEFINES +#define MAX_CAPACITY 500 + +typedef struct +{ + int64_t top; + int32_t *data; +}stack_t; + +// PROTOTYPE FUNCTIONS +int32_t* create_stack(); +void stack_push(stack_t* st, int32_t val); +int32_t stack_pop(stack_t* st); +int32_t stack_peek(stack_t st); +bool stack_is_full(stack_t st); +bool stack_is_empty(stack_t st); +void stack_destroy(stack_t* st); + + + + +#endif \ No newline at end of file diff --git a/stack/kreate.py b/stack/kreate.py new file mode 100644 index 0000000000000000000000000000000000000000..40079e06763dce3bb1573f2de50ba83f73314ddc --- /dev/null +++ b/stack/kreate.py @@ -0,0 +1,196 @@ +# * PROJ +# * Author: Jonas S. +# * Date: 11/07/21 +# ! OBJECTIVE +# ? CREATE A BASIC RUNNING PROJECT +# ? CREATE SIMPLE C OR HEADER FILE WITH HEADERS +# ? CREATE MAKEFILE +# ! NEED COLORAMA AND OS + + + + +import colorama +from colorama import Fore, Back + + +#HARD CODED STUFF +NAME = "Jonas S." +colorama.init() + +# ! FILE CREATION +def createFile(fileName, content): + with open(f"{fileName}", 'w', encoding = 'utf-8') as f: + f.write(content) + +def createHeaderFile(fileName): + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* HEADER {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + f"#ifndef _{fileName.upper()}_H_\n" + f"#define _{fileName.upper()}_H_\n\n" + "// DEFINES\n\n" + "// PROTOTYPE FUNCTIONS\n\n" + "#endif" + ) + + if not os.path.exists('include'): + mkdir('include') + createFile(f"include/{fileName}.h", content) + +def createCodeFile(fileName): + from datetime import datetime + from datetime import datetime + import os + from os import mkdir + + now = datetime.now() # current date and time + + content = ( + "/*\n" + f"\t* CODE {fileName.upper()}\n" + f"\t* Author : {NAME}\n" + f"\t* Date : {now.strftime('%d/%m/%Y')}\n" + "\t! DESCRIPTION\n" + "*/\n\n" + ) + + # add basic printf if main + if fileName == "main": + content += "#include <stdio.h>\n\nint main()\n{\n\tprintf(\"ISSOU\\n\");\n\treturn 0;\n}" + + if not os.path.exists('src'): + mkdir('src') + createFile(f"src/{fileName}.c", content) + +def createMakefile(): + content = ( + "CC := gcc\n" + "CFLAGS := -Wall -Wextra -g -fsanitize=address -fsanitize=leak\n" + "\n" + "BIN := bin\n" + "SRC := src\n" + "INCLUDE := include\n" + "LIBRARIES := -lm\n" + "EXECUTABLE1 := main\n" + "\n" + "# ADD ALL THE SOURCES FOR EXECUTABLE1\n" + "SOURCES1 += $(SRC)/jrandom\n" + "\n" + ".PHONY: all run clean # Specify these are not files but internal terms\n" + "\n" + "all: $(BIN)/$(EXECUTABLE1)\n" + "\n" + "run: clean all\n" + " clear\n" + " @echo "########## EXECUTE FIRST PROGRAM ##########"\n" + " ./$(BIN)/$(EXECUTABLE1)\n" + "\n" + "# # $^ -> dep\n" + "# # $@ -> target\n" + "# # $< -> premiere dep\n" + "# # Compiles directly the c files\n" + "# # Not optimal but succint and simple\n" + "\n" + "# COMPILE FIRST EXECUTABLE\n" + "$(BIN)/$(EXECUTABLE1): $(SRC)/$(EXECUTABLE1).c $(SOURCES)\n" + " @echo "########## COMPILING FIRST EXECUTABLE ##########"\n" + " $(CC) $(CFLAGS) -I $(INCLUDE) $^ -o $@ $(LIBRARIES)\n" + "\n" + "clean:\n" + " @echo "########## CLEANING ##########"\n" + " -rm $(BIN)/*\n" + "\n" + ) + createFile("Makefile", content) + +def createDirStructure(): + import os + from os import mkdir + + if not os.path.exists('bin'): + mkdir('bin') + if not os.path.exists('build'): + mkdir('build') + if not os.path.exists('include'): + mkdir('include') + if not os.path.exists('src'): + mkdir('src') + +# ! MENU CREATION +def createCompleteProject(): + # Base structure (SRC, BUILD, INCLUDE, BIN) + createDirStructure() + print(f"{Fore.GREEN}+ BASIC STRUCTURE CREATED{Fore.RESET}") + # Makefile + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + # Main + createCodeFile("main") + print(f"{Fore.GREEN}+ MAIN.C FILE CREATE{Fore.RESET}") + +def createCodeHeader(name): + # Code + createCodeFile(name) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + # Header + createHeaderFile(name) + print(f"{Fore.GREEN}+ HEADER FILE CREATED{Fore.RESET}") + + + +# ! MENU +def menu(): + choice = input( + "1 - COMPLETE PROJECT \n" + "2 - CODE + HEADER \n" + "3 - CODE ONLY \n" + "4 - HEADER ONLY \n" + "5 - MAKEFILE ONLY \n" + "\n" + + ) + + # PROJECT + if choice == '1': + print(f"{Fore.BLUE}FULL PROJECT IS BEING CREATED.{Fore.RESET}") + createCompleteProject() + + # CODE + HEADER + elif choice == '2': + print(f"{Fore.BLUE}A CODE AND HEADER FILE ARE BEING CREATED.{Fore.RESET}") + createCodeHeader(input("WHAT FILE NAME DO YOU WANT : ")) + + # CODE + elif choice == '3': + print(f"{Fore.BLUE}A CODE FILE IS BEING CREATED.{Fore.RESET}") + createCodeFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # HEADER + elif choice == '4': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.{Fore.RESET}") + createHeaderFile(input("WHAT FILE NAME DO YOU WANT : ")) + print(f"{Fore.GREEN}+ CODE FILE CREATED{Fore.RESET}") + + # MAKEFILE + elif choice == '5': + print(f"{Fore.BLUE}A HEADER FILE IS BEING CREATED.") + createMakefile() + print(f"{Fore.GREEN}+ MAKEFILE CREATED{Fore.RESET}") + +if __name__ == "__main__": + menu() + + + diff --git a/stack/src/main.c b/stack/src/main.c new file mode 100644 index 0000000000000000000000000000000000000000..6debd65b76ec3f4744229e676201363560c65b31 --- /dev/null +++ b/stack/src/main.c @@ -0,0 +1,14 @@ +/* + * CODE MAIN + * Author : Jonas S. + * Date : 17/11/2021 + ! DESCRIPTION +*/ + +#include <stdio.h> + +int main() +{ + printf("ISSOU\n"); + return 0; +} \ No newline at end of file diff --git a/stack/src/stack.c b/stack/src/stack.c new file mode 100644 index 0000000000000000000000000000000000000000..b5bfae57a53c5c73bb6a1f87e55cec3a255ad640 --- /dev/null +++ b/stack/src/stack.c @@ -0,0 +1,48 @@ +/* + * CODE STACK + * Author : Jonas S. + * Date : 17/11/2021 + ! STACK IMPLEMENTATION +*/ + +#include "../include/stack.h" + +int32_t* create_stack() +{ + stack_t* st = malloc(sizeof(stack_t)); + st->data = malloc(MAX_CAPACITY * sizeof(int32_t)); + st->top = -1; +} + +void stack_push(stack_t* st, int32_t val) +{ + st->data[++st->top] = val; +} + +int32_t stack_pop(stack_t* st) +{ + + return st->data[st->top--]; +} + +int32_t stack_peek(stack_t st) +{ + return st.data[st.top]; +} + +bool stack_is_full(stack_t st) +{ + return st.top == MAX_CAPACITY; +} + +bool stack_is_empty(stack_t st) +{ + return st.top == -1; +} + + +void stack_destroy(stack_t* st) +{ + free(st->data); + free(st); +}