From a80c4d61d7d8f34fa3eea6add07dbd1b2f8a05be Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Thu, 3 Aug 2023 23:16:27 +0200 Subject: [PATCH] first commit --- BSQ/Makefile | 49 ++++++ BSQ/assets/gen.pl | 20 +++ BSQ/bsq | Bin 0 -> 22056 bytes BSQ/includes/Display-h/write.h | 24 +++ BSQ/includes/algo-h/algo.h | 29 ++++ BSQ/includes/utils-h/charobj.h | 25 +++ BSQ/includes/utils-h/fst_line.h | 20 +++ BSQ/includes/utils-h/utils.h | 40 +++++ BSQ/srcs/Display-c/write.c | 78 ++++++++++ BSQ/srcs/Display-c/write.o | Bin 0 -> 2168 bytes BSQ/srcs/algo/algo.c | 55 +++++++ BSQ/srcs/algo/algo.o | Bin 0 -> 1512 bytes BSQ/srcs/algo/controller.c | 31 ++++ BSQ/srcs/algo/controller.o | Bin 0 -> 1952 bytes BSQ/srcs/main.c | 47 ++++++ BSQ/srcs/main.o | Bin 0 -> 1560 bytes BSQ/srcs/parsing-c/charobj.c | 23 +++ BSQ/srcs/parsing-c/charobj.o | Bin 0 -> 1064 bytes BSQ/srcs/parsing-c/fst_line.c | 77 ++++++++++ BSQ/srcs/parsing-c/fst_line.o | Bin 0 -> 2128 bytes BSQ/srcs/parsing-c/map_error.c | 61 ++++++++ BSQ/srcs/parsing-c/map_error.o | Bin 0 -> 2088 bytes BSQ/srcs/parsing-c/parsing.c | 116 ++++++++++++++ BSQ/srcs/parsing-c/parsing.o | Bin 0 -> 2920 bytes BSQ/srcs/utils-c/free.c | 37 +++++ BSQ/srcs/utils-c/free.o | Bin 0 -> 1496 bytes BSQ/srcs/utils-c/utils.c | 80 ++++++++++ BSQ/srcs/utils-c/utils.o | Bin 0 -> 1792 bytes BSQ/test | 11 ++ C05/ex00/ft_iterative_factorial.c | 30 ++++ C05/ex01/ft_recursive_factorial.c | 20 +++ C05/ex02/ft_iterative_power.c | 30 ++++ C05/ex03/ft_recursive_power.c | 22 +++ C05/ex04/ft_fibonacci.c | 24 +++ C05/ex05/ft_sqrt.c | 25 +++ C05/ex06/.ft_is_prime.c.swp | Bin 0 -> 12288 bytes C05/ex06/ft_is_prime.c | 29 ++++ C05/ex07/ft_find_next_prime.c | 43 ++++++ C07/ex00/ft_strdup.c | 46 ++++++ C07/ex01/ft_range.c | 33 ++++ C07/ex02/ft_ultimate_range.c | 39 +++++ C07/ex03/ft_strjoin.c | 85 +++++++++++ C08/ex00/ft.h | 22 +++ C08/ex01/ft_boolean.h | 18 +++ finish/C00/ex00/ft_putchar.c | 17 +++ finish/C00/ex01/ft_print_alphabet.c | 24 +++ finish/C00/ex02/ft_print_reverse_alphabet.c | 24 +++ finish/C00/ex03/ft_print_numbers.c | 24 +++ finish/C00/ex04/ft_is_negative.c | 20 +++ finish/C00/ex05/ft_print_comb.c | 48 ++++++ finish/C00/ex06/ft_print_comb2.c | 50 ++++++ finish/C00/ex07/ft_putnbr.c | 33 ++++ finish/C01/ex00/ft_ft.c | 16 ++ finish/C01/ex01/ft_ultimate_ft.c | 16 ++ finish/C01/ex02/ft_swap.c | 20 +++ finish/C01/ex03/ft_div_mod.c | 17 +++ finish/C01/ex04/ft_ultimate_div_mod.c | 22 +++ finish/C01/ex05/ft_putstr.c | 24 +++ finish/C01/ex06/ft_strlen.c | 23 +++ finish/C01/ex07/ft_rev_int_tab.c | 32 ++++ finish/C02/ex00/ft_strcpy.c | 25 +++ finish/C02/ex01/ft_strncpy.c | 29 ++++ finish/C02/ex02/ft_str_is_alpha.c | 25 +++ finish/C02/ex03/ft_str_is_numeric.c | 25 +++ finish/C02/ex04/ft_str_is_lowercase.c | 25 +++ finish/C02/ex05/ft_str_is_uppercase.c | 25 +++ finish/C02/ex06/ft_str_is_printable.c | 25 +++ finish/C02/ex07/ft_strupcase.c | 25 +++ finish/C02/ex08/ft_strlowcase.c | 25 +++ finish/C02/ex09/ft_strcapitalize.c | 36 +++++ finish/C02/ex10/ft_strlcpy.c | 38 +++++ finish/C03/ex00/ft_strcmp.c | 25 +++ finish/C03/ex01/ft_strncmp.c | 25 +++ finish/C03/ex02/ft_strcat.c | 37 +++++ finish/C03/ex03/ft_strncat.c | 37 +++++ finish/C03/ex04/ft_strstr.c | 36 +++++ finish/C04/ex00/ft_strlen.c | 23 +++ finish/C04/ex01/ft_putstr.c | 24 +++ finish/C04/ex02/ft_putnbr.c | 32 ++++ finish/C04/ex03/ft_atoi.c | 37 +++++ finish/C04/ex04/ft_putnbr_base.c | 70 +++++++++ finish/C06/ex00/ft_print_program_name.c | 26 ++++ finish/C06/ex01/ft_print_params.c | 34 +++++ finish/C06/ex02/ft_rev_params.c | 35 +++++ finish/rush00/ex00/ft_putchar.c | 18 +++ finish/rush00/ex00/main.c | 19 +++ finish/rush00/ex00/rush00.c | 41 +++++ finish/rush00/ex00/rush01.c | 40 +++++ finish/rush00/ex00/rush02.c | 40 +++++ finish/rush00/ex00/rush03.c | 40 +++++ finish/rush00/ex00/rush04.c | 40 +++++ finish/rush01/ex00/bruteforce.c | 108 +++++++++++++ finish/rush01/ex00/ft_free_tabtab.c | 26 ++++ finish/rush01/ex00/init_tables.c | 94 ++++++++++++ finish/rush01/ex00/is_args_valid.c | 47 ++++++ finish/rush01/ex00/main.c | 70 +++++++++ finish/rush01/ex00/place_sure.c | 115 ++++++++++++++ finish/rush01/ex00/print_double_tab.c | 36 +++++ finish/rush01/ex00/verif.c | 128 ++++++++++++++++ finish/rush02/ex00/Makefile | 46 ++++++ finish/rush02/ex00/algo.c | 127 +++++++++++++++ finish/rush02/ex00/algo2.c | 27 ++++ finish/rush02/ex00/be.dict | 29 ++++ finish/rush02/ex00/en.dict | 32 ++++ finish/rush02/ex00/header.h | 59 +++++++ finish/rush02/ex00/lib.c | 75 +++++++++ finish/rush02/ex00/lib2.c | 70 +++++++++ finish/rush02/ex00/lol.dict | 62 ++++++++ finish/rush02/ex00/main.c | 118 ++++++++++++++ finish/rush02/ex00/parse.c | 153 +++++++++++++++++++ finish/rush02/ex00/parse2.c | 79 ++++++++++ finish/rush02/ex00/special_tens.c | 77 ++++++++++ finish/shell00/ex00/z | 1 + finish/shell00/ex01/testShell00.tar | Bin 0 -> 10240 bytes finish/shell00/ex02/exo2.tar | Bin 0 -> 10240 bytes finish/shell00/ex02/test1 | 1 + finish/shell00/ex02/test3 | 1 + finish/shell00/ex02/test4 | 1 + finish/shell00/ex02/test5 | 1 + finish/shell00/ex02/test6 | 1 + finish/shell00/ex03/id_rsa_pub | 1 + finish/shell00/ex04/midLS | 1 + finish/shell00/ex05/git_commit.sh | 2 + finish/shell00/ex06/git_ignore.sh | 2 + finish/shell00/ex07/b | 11 ++ finish/shell00/ex08/clean | 1 + finish/shell00/ex09/ft_magic | 1 + finish/shell01/ex01/print_groups.sh | 2 + finish/shell01/ex02/find_sh.sh | 2 + finish/shell01/ex03/count_files.sh | 2 + finish/shell01/ex04/MAC.sh | 1 + "finish/shell01/ex05/\"\\?$*'MaRViN'*$?\\\"" | 1 + finish/shell01/ex06/skip.sh | 1 + 133 files changed, 4293 insertions(+) create mode 100644 BSQ/Makefile create mode 100755 BSQ/assets/gen.pl create mode 100755 BSQ/bsq create mode 100644 BSQ/includes/Display-h/write.h create mode 100644 BSQ/includes/algo-h/algo.h create mode 100644 BSQ/includes/utils-h/charobj.h create mode 100644 BSQ/includes/utils-h/fst_line.h create mode 100644 BSQ/includes/utils-h/utils.h create mode 100644 BSQ/srcs/Display-c/write.c create mode 100644 BSQ/srcs/Display-c/write.o create mode 100644 BSQ/srcs/algo/algo.c create mode 100644 BSQ/srcs/algo/algo.o create mode 100644 BSQ/srcs/algo/controller.c create mode 100644 BSQ/srcs/algo/controller.o create mode 100644 BSQ/srcs/main.c create mode 100644 BSQ/srcs/main.o create mode 100644 BSQ/srcs/parsing-c/charobj.c create mode 100644 BSQ/srcs/parsing-c/charobj.o create mode 100644 BSQ/srcs/parsing-c/fst_line.c create mode 100644 BSQ/srcs/parsing-c/fst_line.o create mode 100644 BSQ/srcs/parsing-c/map_error.c create mode 100644 BSQ/srcs/parsing-c/map_error.o create mode 100644 BSQ/srcs/parsing-c/parsing.c create mode 100644 BSQ/srcs/parsing-c/parsing.o create mode 100644 BSQ/srcs/utils-c/free.c create mode 100644 BSQ/srcs/utils-c/free.o create mode 100644 BSQ/srcs/utils-c/utils.c create mode 100644 BSQ/srcs/utils-c/utils.o create mode 100644 BSQ/test create mode 100644 C05/ex00/ft_iterative_factorial.c create mode 100644 C05/ex01/ft_recursive_factorial.c create mode 100644 C05/ex02/ft_iterative_power.c create mode 100644 C05/ex03/ft_recursive_power.c create mode 100644 C05/ex04/ft_fibonacci.c create mode 100644 C05/ex05/ft_sqrt.c create mode 100644 C05/ex06/.ft_is_prime.c.swp create mode 100644 C05/ex06/ft_is_prime.c create mode 100644 C05/ex07/ft_find_next_prime.c create mode 100644 C07/ex00/ft_strdup.c create mode 100644 C07/ex01/ft_range.c create mode 100644 C07/ex02/ft_ultimate_range.c create mode 100644 C07/ex03/ft_strjoin.c create mode 100644 C08/ex00/ft.h create mode 100644 C08/ex01/ft_boolean.h create mode 100644 finish/C00/ex00/ft_putchar.c create mode 100644 finish/C00/ex01/ft_print_alphabet.c create mode 100644 finish/C00/ex02/ft_print_reverse_alphabet.c create mode 100644 finish/C00/ex03/ft_print_numbers.c create mode 100644 finish/C00/ex04/ft_is_negative.c create mode 100644 finish/C00/ex05/ft_print_comb.c create mode 100644 finish/C00/ex06/ft_print_comb2.c create mode 100644 finish/C00/ex07/ft_putnbr.c create mode 100644 finish/C01/ex00/ft_ft.c create mode 100644 finish/C01/ex01/ft_ultimate_ft.c create mode 100644 finish/C01/ex02/ft_swap.c create mode 100644 finish/C01/ex03/ft_div_mod.c create mode 100644 finish/C01/ex04/ft_ultimate_div_mod.c create mode 100644 finish/C01/ex05/ft_putstr.c create mode 100644 finish/C01/ex06/ft_strlen.c create mode 100644 finish/C01/ex07/ft_rev_int_tab.c create mode 100644 finish/C02/ex00/ft_strcpy.c create mode 100644 finish/C02/ex01/ft_strncpy.c create mode 100644 finish/C02/ex02/ft_str_is_alpha.c create mode 100644 finish/C02/ex03/ft_str_is_numeric.c create mode 100644 finish/C02/ex04/ft_str_is_lowercase.c create mode 100644 finish/C02/ex05/ft_str_is_uppercase.c create mode 100644 finish/C02/ex06/ft_str_is_printable.c create mode 100644 finish/C02/ex07/ft_strupcase.c create mode 100644 finish/C02/ex08/ft_strlowcase.c create mode 100644 finish/C02/ex09/ft_strcapitalize.c create mode 100644 finish/C02/ex10/ft_strlcpy.c create mode 100644 finish/C03/ex00/ft_strcmp.c create mode 100644 finish/C03/ex01/ft_strncmp.c create mode 100644 finish/C03/ex02/ft_strcat.c create mode 100644 finish/C03/ex03/ft_strncat.c create mode 100644 finish/C03/ex04/ft_strstr.c create mode 100644 finish/C04/ex00/ft_strlen.c create mode 100644 finish/C04/ex01/ft_putstr.c create mode 100644 finish/C04/ex02/ft_putnbr.c create mode 100644 finish/C04/ex03/ft_atoi.c create mode 100644 finish/C04/ex04/ft_putnbr_base.c create mode 100644 finish/C06/ex00/ft_print_program_name.c create mode 100644 finish/C06/ex01/ft_print_params.c create mode 100644 finish/C06/ex02/ft_rev_params.c create mode 100644 finish/rush00/ex00/ft_putchar.c create mode 100644 finish/rush00/ex00/main.c create mode 100644 finish/rush00/ex00/rush00.c create mode 100644 finish/rush00/ex00/rush01.c create mode 100644 finish/rush00/ex00/rush02.c create mode 100644 finish/rush00/ex00/rush03.c create mode 100644 finish/rush00/ex00/rush04.c create mode 100644 finish/rush01/ex00/bruteforce.c create mode 100644 finish/rush01/ex00/ft_free_tabtab.c create mode 100644 finish/rush01/ex00/init_tables.c create mode 100644 finish/rush01/ex00/is_args_valid.c create mode 100644 finish/rush01/ex00/main.c create mode 100644 finish/rush01/ex00/place_sure.c create mode 100644 finish/rush01/ex00/print_double_tab.c create mode 100644 finish/rush01/ex00/verif.c create mode 100644 finish/rush02/ex00/Makefile create mode 100644 finish/rush02/ex00/algo.c create mode 100644 finish/rush02/ex00/algo2.c create mode 100644 finish/rush02/ex00/be.dict create mode 100644 finish/rush02/ex00/en.dict create mode 100644 finish/rush02/ex00/header.h create mode 100644 finish/rush02/ex00/lib.c create mode 100644 finish/rush02/ex00/lib2.c create mode 100644 finish/rush02/ex00/lol.dict create mode 100644 finish/rush02/ex00/main.c create mode 100644 finish/rush02/ex00/parse.c create mode 100644 finish/rush02/ex00/parse2.c create mode 100644 finish/rush02/ex00/special_tens.c create mode 100644 finish/shell00/ex00/z create mode 100644 finish/shell00/ex01/testShell00.tar create mode 100644 finish/shell00/ex02/exo2.tar create mode 100755 finish/shell00/ex02/test1 create mode 100644 finish/shell00/ex02/test3 create mode 100644 finish/shell00/ex02/test4 create mode 100644 finish/shell00/ex02/test5 create mode 120000 finish/shell00/ex02/test6 create mode 100644 finish/shell00/ex03/id_rsa_pub create mode 100644 finish/shell00/ex04/midLS create mode 100644 finish/shell00/ex05/git_commit.sh create mode 100644 finish/shell00/ex06/git_ignore.sh create mode 100644 finish/shell00/ex07/b create mode 100644 finish/shell00/ex08/clean create mode 100644 finish/shell00/ex09/ft_magic create mode 100644 finish/shell01/ex01/print_groups.sh create mode 100644 finish/shell01/ex02/find_sh.sh create mode 100644 finish/shell01/ex03/count_files.sh create mode 100644 finish/shell01/ex04/MAC.sh create mode 100644 "finish/shell01/ex05/\"\\?$*'MaRViN'*$?\\\"" create mode 100644 finish/shell01/ex06/skip.sh diff --git a/BSQ/Makefile b/BSQ/Makefile new file mode 100644 index 0000000..c5d3f85 --- /dev/null +++ b/BSQ/Makefile @@ -0,0 +1,49 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: axdubois +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/08/02 19:37:01 by axdubois #+# #+# # +# Updated: 2023/08/02 19:37:06 by axdubois ### ########.fr # +# # +# **************************************************************************** # + +NAME = bsq + +CC = clang + +SRCS = srcs/Display-c/write.c \ + srcs/parsing-c/parsing.c \ + srcs/utils-c/free.c \ + srcs/utils-c/utils.c \ + srcs/parsing-c/charobj.c \ + srcs/main.c \ + srcs/parsing-c/fst_line.c \ + srcs/algo/algo.c \ + srcs/algo/controller.c \ + srcs/parsing-c/map_error.c + + +OBJS = $(SRCS:.c=.o) + +FLAGS = -Wall -Wextra -Werror + +$(NAME): $(OBJS) + $(CC) $(FLAGS) -o $(NAME) $(OBJS) + +.c.o: + $(CC) $(FLAGS) -c $< -o $@ + +all: $(NAME) + +clean: + rm -f $(OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY: clean all re fclean diff --git a/BSQ/assets/gen.pl b/BSQ/assets/gen.pl new file mode 100755 index 0000000..0d7278f --- /dev/null +++ b/BSQ/assets/gen.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl +use warnings; +use strict; + +die "program x y density" unless (scalar(@ARGV) == 3); + +my ($x, $y, $density) = @ARGV; + +print "$y.ox\n"; +for (my $i = 0; $i < $y; $i++) { + for (my $j = 0; $j < $x; $j++) { + if (int(rand($y) * 2) < $density) { + print "o"; + } + else { + print "."; + } + } + print "\n"; +} \ No newline at end of file diff --git a/BSQ/bsq b/BSQ/bsq new file mode 100755 index 0000000000000000000000000000000000000000..f406297cd162abb5214364c84e21ad9d748c6ada GIT binary patch literal 22056 zcmeHP4RBl4mA;Z4Vj!`U5E>H-5j1Q=NsJvr8b~P5iC<8towy+eN*ff#mTeW;^6Cc? zwl3}}VXO$JZfAEJ=oGTkWtw4`u4l{83=Kw(v$4CI?HVS_xIniC3_MXcQHcRT0^0A~ zpQk6;-eqTJcDggV9=&t#`Mc+xd+xdST}$sFy>64;W@D<@*;g2~`kWd^i7R8q7T%P& zwd`W1u`Af;*#*Fq;-hg2K~Yn%%`ONEmPx)6K$1Hw>4)taTGZAEK(irxDiXS7e+pXV$T!Zf2zKWdA*Y~Q z-gkq9N{*T&=aObnQOZ{No65p>c=JXDBZxu5Xr zL$uFYZU*DR8JJhkf?qrf{^D8iSI>g~D)26R3JdvpCVQ@!1<&BuCUWB%7V>$US-Uq7 z2sW{%KrrlM!A@TX^LU8G6OMR85l_3<-@zUT`6E8o67u=jZFQSBZ1k+ETvd4^7+c$e z9g@+5{_N(TsFSTW{)c#@21;~^|3aePDw-_4RpT{^EjhJ#J7d9HUC=z*dKiXJF>py+|32Z|o} zQ}w`E$CV$uW0Pg>#GDlN;O>3Nh&?;%jvX%>;wEQrd;{q0H50fxmTIU`yNzh6@hr+U zuTYz|-l(&6hO(^fy#hc?+${fEu*7w>h) z-*Cq!(hb`;4=1ax(wKXAFzF&NymJZcxO5fdruv9~sHM`ebT2gE*y70D*qFO-p=;!l zBZQ(`y6^=;WXD_jhFWsWbUy=}|GTF-h^O6yr*Cx+W=h<)6Ydv3jVv%V%#|7n<*EPf zTjs+S7QLj=9e>Ms5O;B6&N)2a+I9?0>yP+XaPYEd_+_}%fY%&!(^0_{8&=%7Mg9ju{_2DynbYzo^ka48P&To zj)CZJjDG?n+#WM*CDeT~p&#K6K9a)IEa`g1xSDjKK?ZVKGW9ih?S+egGUjmkqa1%U zwODww0r4Wo!&NvQJTi=d^BBFjZX~+SBT5VrC65v^mSK(q+*&K?J4C`5I0j%-{W&;g zAK8}+ho4i=i7vxf22N--))UmH5F)M}Lyn~?K3qMc2)KB3sz*ONtQ&M&!}=rvVc0d) zQ5>U;k?vlLFl+@0&VrTW!pgJfxGCc>C6>8J*Djpv+8i}qcMC4gx=o8#QQ^q~`PKohDXrVB1$GQyW z*f$>?x`*`)081^#QvTlw+XrtPw@L$B%*6z+{|=FB-AX9;H5VwCy9Muz_os zNOiz5U>)G;&{c}bonz!mjDN{TTBTKY!=)oo!zTjuK8$HE+L-YxK9U5HrZR|}Dx_O8 zsj2)(`4$r;W1P!CfahduzH^%NS7)aqwMsj9zIMmfj}#-8^ z@sO!Ie?7=w3-}C!VwxqU9{2+Hmb4)(GO3rL6BOL1$TxIv@n{-6=>&`Glf<0BmH-*M zEK$#!@iIyWx%ou*i*z6(iEF34q)#O3r(!7^!e#F+^bZ0baim{&qTWa}PQ;Gc+)Xd7 zD}B*%;0Dgn1qOY>Jvfd6TR*)F&~+OL1yqrZ#QG=tUDa6DW8?%?ZA$1il_!VzmITjSLw zhg>FcQi`cDDMOM5hGP8;wq>!5&9QGD5Xi1H3sZEGOvLxFr!$ju>N!40v*%x#o6T+w z(iQ6><#co}?MQS@8jnG5Y8i0SC@c=^N2)*QXU6FJNEG@cm@oioqZ(aWa{XS2nEM&r z-}!hHJERFhB4YRoPJ5%grSo2B%!Sjx^LyZXDv=Yng3R+MUqZ{Old+F3>e1hH?7h5D z(WS&mYw#0EFznagJd7LTn_Ajin6ohTk30^r-adm=Kk{6k%kWvl5YU6L}%o-{6#jylW8V3EILmcUzVM3<(*T`!(xw=lAAwOapdllh{Eo<(K3 zK{(Eh6oeC{Wpq1Zl(Yb+C1<%Fic}PDOvmf7TS#ArLn_>MmSdFPaMgW!?iTc-K zgSL46YnY@+^I6A%A3=(*`XG-d>c==4xBsiyx3L^K4%`nq%|c{JcT?kQ*Ok6VBiefp zM^6Dg4)oY{NJ|_~3oUg7|GkFfijW|^yoFSToxVw2kIc&{V~Gfs)<$HHDZYQDl^_Uv zQ(wge-o>&H&NQ4&5+jL5dJNR^Gl<$xbs|0~eE*ep9dZ32>WGzxXcw61Iv77;EW>uG zB|g}KA>n)e)BE+)J^Fh{QjHYe9NN;GR(aJy?dzg%|^h2)gkZPZyP)l?jg1)`9 zPV;@fV4eDaw+}1U}PrB>GJzq9Z)F4#?bk)bXr7FgT9f+IaNBV}=uvT%ClIIw@50@{be#dBIL&G*DWl z0Wv1$>dCa2_oo1lP!5FnwC6hnv>9ML++a1|GB^h2@hnu;qn~j+aw&u1dTLr*RD>FJ9QK~T|%&EmWTwvm`oMOnmrEc_7>fw*SBCa zdFIU+uhKr4hg(6_y53thu4Js{&du?cYZ^Dl->=zT6F=YR z?p?VW=sW7J{e;dq496MRKKMyVWNG!Qj-}n`h}Fg4tBaqmjlWZqUGzJ5Y{=%m>9^5$ zF(_r<*irM%njJOw)_APX{QSHDas>IgiFr~&+KQ#UC=z*dKiXJF>py+|3 z2Z|mjdZ6fmKTQwV@ZH;bZ>LKSg@PfNXuG^*9evl^g}M{};BP>^8*n*bKj3=6&eyZq z-GGMx4+5qE=`2HgBbyxq?0z$w%>X(lve^n8f{X&L1w8atHhVXq^Bu?oRskLaYydn0 z*bg`cm5`qTJSfnH;!e>*3C68N2< z-wOLp`I4J$#6j|t_;h0|djU`rZlfDAvJNjj4YH=-r?{nMXfl((6EXzMai_^XT6+=>gDpf*#1D3j_H0gWeB1 z|Mrct-`-@(KMgv=+<87v{)kCG3Hl+>AIzgiP5LCsW3K%qkN&txpNBcs2l|dY`rRgd z1?Z!om%xuX|9ooF>p)Lp?p9doC70yJpXiv&U$*KGad9#JppS#zZKd1)!qopX=o)gs z-{sMt;B=aUCqW+t-AD9I<<9TfHmRCJ|fxCQdZ0>F4T1WZX zn)0fe^5q-KT^q_PHk3Ozl$Y^&zo?Y44D_fuPU?!K=z*dKiXJF>py+|32Z|o}|LTFx z1sXS9laRJ*R1};in%Kx{yhh(Gq_XxZjl;|M733|V&G+)a(K8Gc`cfK|3Q4DZEfqz7 z|I=)cw@Wkv%-my@injXg=WZ_`qt?@3UhZ;4W=5P;EtldT0?Kv5br4r$9vrB49! zd5^vdLWREnOeHD%SNJ~JR(8{KAC(IQF#E?pwfX&YN`Cx1o41ue@yN;B_ei=F|33rj zcjbj0u94%rNy0lNY?1JO2_KfQQ2w@!8*g?kZ`>8_h(ul0Rh2hXR;{d#@@DmSR#jD2 zt-e;GnPh4Tcsp8M_xnO&f3U+`*W zH)iB7Wo0tH^7-d56?ggg3-IH6&5Gjn5;m93G_ECxb`=j+p%O%oimQD5MP~fv;}PvM z_`ihBW3CzT^Ue1<5LCj43E@ti-@fD1I?@?Gvn95!`3eD3}_Qz}vBWjcf?QA|9 zb!vGe`a&7unarPxc$LJfysGf@tZPHIQ1+<2u#w}Z`{!FykIK_Z4}E>ihF|`xysPkk zjmk{+|9BSsPiMjZY!>{pv*44n;D=|yzcdT}H?!d1o&`VKc)bUH8{)I}Mh&(6GLwJ6 zjIwZAd@caqhE<|4K9@-TLjSMi`04XS<9epY?VZ3cMEuY%o~WqxkIu{%a!meZx8zS> zrg1_*lKoiNTv)vdE4fOKv@Q+(2yBKg@RiTd>47~vWxs8b|4S0zf2q*V&!|DWS>hWO z3OqkM2mW@6AC=?#Byd!=bG)cquPu__>C!lwpHZR~miTTtf4x%ZFD0JIerqKD2f))f z7T(w6lE3c~jdSudeAJ$j_BT@W%vWYeO zLcUgiIN}R=BJCc$DyG91#@k<-gPztvaF;jWX^sR#VUIVun>7X7I|IImueq{nW)4q_ zzr*kGhC<#w9$!Z!vuUiau* zYCRsb@_KJ(p4zW(sj1(*F`vTUk^>Z8G33$RQiHp88}r;&w{=5JooDN&O?T+qJ=<$G z)aj&^zgwp%9OZuC=4+bur8+GU&jW4#fDiNl-nkR;wE7~R-Bf{VcZpZ=Op^#lLIHYn zkFVJq@e(gu;15LGm4+67NP2=W{;((PZ}#EsK3p?7(bG(x7X2s(Q7at8TYxaG^nRfH ze(Ci=`Iu>M4$3E!wghryhj$}+BR;Y( z;&1YF`hoZC3d4Q$b|fBTBt+5yOb`!Zk9QvOcSIl^js_ys=1$zhU#~Q+=cYDa(|s5T z?iW%dV>qXW%nAQFI^JHtQAVfiv%}gS33wwxKVy~QJ?#Ki;wBZ>gV2RbCGS8e!>F)I z%#n6v6_vyO7m(IzEKS(ki=v)0)%)wzIff*2UR5Xf1$^l2K*=AsYiQ-(*S3teau>A@ zE6f^Htn%u))sPBZic!Ks`C8!dQ-`4HUp?QJA>UI`_N#TZOrXu{7S!l$Maiq@;N?<& zOmgB$nBTjSSLZNy0#B?;-h5t`hTbFP6(C<*%e`pO*@==@&(-%xdA0XY_A5RG?}I#@ z#i+J={_d3WF4ICEXSmj+(-X-Nbt<0!PvQ&}3O#pQi*&1rI*giCUY%d4_a4%| z(^?AUpDmDA=NztTA+@|fK#iZ$nM8$bl+(q0PFL@TEaX>h1y4d2yL3}tou5|72QS43 z7G6|aL7JZwJF0*6{HoqFIV$g8#g~#({-@MC9tFBK~^V^@&)wO +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:17:55 by axdubois #+# #+# */ +/* Updated: 2023/08/02 19:21:49 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRITE_H +# define WRITE_H + +#include "../../includes/utils-h/utils.h" +#include "../../includes/utils-h/charobj.h" +#include "../../includes/algo-h/algo.h" + +void ft_putchar(char c); +void ft_print(char *str); +void ft_print_result(t_square sq,t_charobj c,t_coords *listobj,int file); + +#endif \ No newline at end of file diff --git a/BSQ/includes/algo-h/algo.h b/BSQ/includes/algo-h/algo.h new file mode 100644 index 0000000..11903f0 --- /dev/null +++ b/BSQ/includes/algo-h/algo.h @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algo.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: axdubois +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/01 22:11:53 by adjoly #+# #+# */ +/* Updated: 2023/08/02 19:31:12 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ALGO_H +# define ALGO_H + +#include "../../includes/utils-h/utils.h" +#include "../../includes/utils-h/charobj.h" +#include "../../includes/algo-h/algo.h" + +typedef struct s_square +{ + int x; + int y; + int side; +} t_square; + +t_square ft_comb(t_coords *listobjsx, t_coords *listobjsy); + +#endif \ No newline at end of file diff --git a/BSQ/includes/utils-h/charobj.h b/BSQ/includes/utils-h/charobj.h new file mode 100644 index 0000000..d34b92f --- /dev/null +++ b/BSQ/includes/utils-h/charobj.h @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* charobj.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: axdubois +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/02 11:01:47 by axdubois #+# #+# */ +/* Updated: 2023/08/02 19:10:38 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CHAROBJ_H +# define CHAROBJ_H + +typedef struct s_charobj +{ + char o; + char x; + char n; +} t_charobj; + +t_charobj ft_get_charobj(char *ftline,int sizeline); + +#endif \ No newline at end of file diff --git a/BSQ/includes/utils-h/fst_line.h b/BSQ/includes/utils-h/fst_line.h new file mode 100644 index 0000000..b223439 --- /dev/null +++ b/BSQ/includes/utils-h/fst_line.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* fst_line.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/01 18:25:47 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:30:35 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FST_LINE_H +# define FST_LINE_H + +int ft_len_line(int file, int n); +int ft_len_colum(int file); +char *ft_get_first_line(int file); + +#endif \ No newline at end of file diff --git a/BSQ/includes/utils-h/utils.h b/BSQ/includes/utils-h/utils.h new file mode 100644 index 0000000..9b084da --- /dev/null +++ b/BSQ/includes/utils-h/utils.h @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:33:05 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:37:40 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef UTILS_H +# define UTILS_H + +# include +# include +# include + +typedef struct s_coords +{ + int x; + int y; +} t_coords; + +int ft_strlen(char *str); +void ft_swap(int *a, int *b); +void ft_sort_int_tab(int *tab, int size); +void ft_free_coords(t_coords *coords); +void ft_free_arr(char *arr); +void ft_free_d_arr(char **arr); +int ft_check_map(int file); +int ft_write_error(int file); +int ft_controller(int file); +t_coords *ft_sort_x(t_coords *coords, int size); +t_coords *ft_sort_y(t_coords *coords, int size); +t_coords *ft_get_list_obj(int file, char o); +int ft_get_nobj(int file, char o); + +#endif diff --git a/BSQ/srcs/Display-c/write.c b/BSQ/srcs/Display-c/write.c new file mode 100644 index 0000000..d16e115 --- /dev/null +++ b/BSQ/srcs/Display-c/write.c @@ -0,0 +1,78 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* write.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:11:14 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:34:57 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Display-h/write.h" +#include "../../includes/utils-h/utils.h" +#include "../../includes/algo-h/algo.h" +#include "../../includes/utils-h/charobj.h" +#include "../../includes/utils-h/fst_line.h" +#include "../../includes/utils-h/utils.h" + + +void ft_putchar(char c) +{ + write(1, &c, 1); +} + +void ft_print(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + ft_putchar(str[i]); + i++; + } +} + +void ft_print_linesq(int side,char x) +{ + int i; + + i = 0; + while(i < side) + { + ft_putchar(x); + i++; + } +} + +void ft_print_result(t_square sq,t_charobj c,t_coords *listobj,int file) +{ + int x; + int y; + int ysq; + + y = 1; + ysq = 0; + while (y < ft_len_colum(file)) + { + x = 0; + while (x < ft_len_line(file, y)) + { + if ((listobj[x].x == x) && (listobj[y].y == y)) + ft_putchar(c.o); + else if ((sq.x == x) && (ysq < sq.side)) + { + ft_print_linesq(sq.side,c.x); + x += sq.side -1; + ysq++; + } + else + ft_putchar(c.n); + x++; + } + ft_putchar('\n'); + y++; + } +} diff --git a/BSQ/srcs/Display-c/write.o b/BSQ/srcs/Display-c/write.o new file mode 100644 index 0000000000000000000000000000000000000000..84b7e51da65f7bcf73d7f9c5eed1be9a759dd045 GIT binary patch literal 2168 zcmb`IO=uHA6vtwF-l&|J#Z5mV6aijJgCuP*BBQwEk zA7gUMBlPNe)y!6B=`teKqE$6|emU0}Ao8OY7m=qr1FVQemq&_{NtY|1YqeUvWS3Jf zlwUHlt9iP@i$X>RU6seTLpgaWyW%PH-6^AprO7Q$y^FBEMbju-v~0raEV`(gbjh6i zP!8tl*O)mMGwGL@1&>MRAJeaSx}cipOI;?NnWY8X{4AY>H?e5Jq!U(lhAqJSV9|-A zC3*Z4Qxt7Q(WGxdVHt(G=q-w#K^Q(=g60%0f2o5O<<}Wqjk^sE(8+ABE2sEjq~>JXvY7Yc1Hdz=2vt7AsaR zLD!}?0OI)t#tW70b~i6x`$&5GjHGU~M&ps>&DKFJo#{^{TMxD?ZA#mLLk0^Te9#Ww zVdV%G--<6VY4|dchJw8h=@Em+U`Bn2^=K4s(U-&GL;9r!G;WhY1 z;9HV@&WTF7B@X&cz#D`UMwv>wmAoTOk(>PsV*ZA%tLpi+*2c z)Zsbqi&5xBzXMH;K0i^?T0ElY+K^6SdUzn+pVWyGO(hZ#HguWKR!)A=H_ zTj5wblF)2{5+zDTPwSCB81E%;{6F>*%Ha8Wjq?AAH=Y1Lo;t-dMTVo>LfnzvhXu@g zXE7J=k=Fto&hr4?Wh{kv1+Cd0$Tk?UhB$YQNe}-n{(jsh)-T2@5EOH_F6&vhh4}=QwyF68R|BFYp*l{K5YXC;sj+AI-b| WSHQe$M_n_&6ieuUVICsy_x}Lam6Tlo literal 0 HcmV?d00001 diff --git a/BSQ/srcs/algo/algo.c b/BSQ/srcs/algo/algo.c new file mode 100644 index 0000000..fb2e635 --- /dev/null +++ b/BSQ/srcs/algo/algo.c @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algo.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/01 22:03:23 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:32:48 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/algo-h/algo.h" +#include "../../includes/utils-h/utils.h" + +int ft_is_side_max(int x, int y, int mx, int my) +{ + int l; + + l = (mx - x) - (my - y); + if (l > 0) + return (mx - x); + else if (l < 0) + return (my - y); + else + return (0); +} + +t_square ft_comb(t_coords *listobjsx, t_coords *listobjsy) +{ + int i; + int j; + t_square square_max; + + square_max.x = 0; + square_max.y = 0; + square_max.side = 0; + i = -1; + j = -1; + while (listobjsx[++i].x > -1) + { + while (listobjsy[++j].y > -1) + { + if ((square_max.x - listobjsx[i].x) < 0 + && (square_max.y - listobjsy[j].y) < 0) + { + square_max.x = listobjsx[i].x; + square_max.y = listobjsy[i].y; + square_max.side = ft_is_side_max(listobjsx[i].x, + listobjsy[j].y, square_max.x, square_max.y); + } + } + } + return (square_max); +} diff --git a/BSQ/srcs/algo/algo.o b/BSQ/srcs/algo/algo.o new file mode 100644 index 0000000000000000000000000000000000000000..62d8c2a36f27e7da32862eeda6a129ee678514b2 GIT binary patch literal 1512 zcmb_c&ubGw6rN3%Rz;g43POeE;6*~0v{t+niM3-F>$i6FrYpL6{=fpwiUYAGY6P*#ckHa(+J{i!gcq1(T!3;rN>_!SCUSPb;3XVe3_j`Vw91%3}Gm{9kOrf!>!gnCl# zk=ViO0PX^O3UEEKbfO0MBJTvXM#EEKqoAZv0@;$UG71XH$pv39bcE1TaMdVE59AzbBd)*As?Te(~??p z=0Q0iXFtqAHm^Oz#%Q;=Bg(s1M5#5Z|-DpYW8 z0dcS>UWAbU8}I=!;`I_Rm7EPmP$Wtsm*7=EZUVk8m|!i4aY@9b1v5hONL)%4Vto4e zrNQD5qoLwlMMw%kFo~}R8EUuObf%OpWj393&Z-ct=wvO;bt*2=>_RT*~=x3u`S3qh*olou7&<>4*h>Jod3d4 zFzk9JHoY4nJP^kfqPHPJY%D~0kP^8)B$ynk!yM0j*uIPP?+D^5c!c081t#$+$Z&}y zhr{Xi|A%NO_l5h% vGnRU}|9QZoD}w^KPw<4+5qh}|)T7CqXYl_E!SL+JB?VX!g{Z@OGQ9pjL8<&j literal 0 HcmV?d00001 diff --git a/BSQ/srcs/algo/controller.c b/BSQ/srcs/algo/controller.c new file mode 100644 index 0000000..60680b8 --- /dev/null +++ b/BSQ/srcs/algo/controller.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* controller.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/02 14:57:07 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:39:52 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Display-h/write.h" +#include "../../includes/utils-h/utils.h" +#include "../../includes/algo-h/algo.h" +#include "../../includes/utils-h/charobj.h" +#include "../../includes/utils-h/fst_line.h" + +int ft_controller(int file) +{ + t_charobj charobj; + + charobj = ft_get_charobj(ft_get_first_line(file), ft_len_line(file, 0)); + ft_print_result(ft_comb(ft_sort_x(ft_get_list_obj(file, charobj.o), + ft_get_nobj(file, charobj.o)), + ft_sort_y(ft_get_list_obj(file, charobj.o), + ft_get_nobj(file, charobj.o))), charobj, + ft_get_list_obj(file, charobj.o), + file); + return (0); +} diff --git a/BSQ/srcs/algo/controller.o b/BSQ/srcs/algo/controller.o new file mode 100644 index 0000000000000000000000000000000000000000..4897cc956c0f6f583202d256f6cd378b3e49a178 GIT binary patch literal 1952 zcmb`HO=uHQ5P)Br{x_Q74-|hOM?G{&s)D^pMW4-~dJuwM%Cb#&+vsLDY&InoR>eZe zb}v2lSoG4976iT2lBh`WR6G?=MG$f*rS>491nSK0d+8=kZVtT6%r`Ud&HLHBpyT&C z0s+D$KyHy^k5fXTUB~vQYmSnB$V?{e---F%tZmgCt5(5C!luh$$NzesV=dd?TvM^j zihX~#T!|Fv-Xh&A(gVezyNXTs7wJKf9)h%t8ZV zL7L}T_V9^$-uQS3Y(CFB9}oKYmXG`U46%h9|g4)pYfh+>L4 z-7v+ux>X>8A*+&L$_0}MDLs>sH4~#*BdwXDA?Na{>!)qJ9ORd$>c8wd>iz|=kl`Ek%P4dB z_sC<-Z~Z(3*it;j)m3(>QMMqybwvChWsqe@L1Rjc`CL6_bpi)WGwjwN8iTm6kC5*bnSUuLE YaNWGEpAc*A9rH`Pf2L94J8543A46GVAOHXW literal 0 HcmV?d00001 diff --git a/BSQ/srcs/main.c b/BSQ/srcs/main.c new file mode 100644 index 0000000..ab0f4cf --- /dev/null +++ b/BSQ/srcs/main.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:14:41 by axdubois #+# #+# */ +/* Updated: 2023/08/02 20:37:09 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/utils-h/utils.h" + +int ft_while_file(int file, char **argv) +{ + int i; + + i = 0; + while (argv[i]) + { + if (ft_check_map(file) == 1) + return (1); + ft_controller(file); + i++; + } + return (0); +} + +int main(int argc, char **argv) +{ + int file; + int i; + + i = 1; + if (argc == 1) + { + file = 0; + ft_controller(file); + } + else + { + file = open(argv[i], O_RDONLY); + ft_while_file(file, argv); + } + +} diff --git a/BSQ/srcs/main.o b/BSQ/srcs/main.o new file mode 100644 index 0000000000000000000000000000000000000000..f1a341d19928edf3323af40cba624380e9271b9e GIT binary patch literal 1560 zcmbu9ON-M`6vuDc&UBP&izp1J7|?A)JEI#ZQjv^7Mi)ZC%}_I$^ugp&(qyb+Rmdom zxNzxG`~Z$Kiqrn`JIz1zYZwqPlg!s zCqn*h4hDzv6ek*8g^mXUIrI;NfgFy$&So>nfEWqnsp9_-x4!4ERipV>ESh$RwfsI7 zzX&6?j-VgXNk=z;u|*A)pmJ3H^M%j|%mqnG;Ekyp%|&Y4p5=O?W~f$E+|!+I+qT5= znpBcX#dVJc%dghJyD8m*;y5Wvc=4DBy@GH#mtFY)Yq|mq8_K}$?)k#I)V*`dsU~F1 zV-@6}7Islwqj5xw^LgExU+h}EHM2UcRd0~STs3>ME| zQT-w&filqW6`I1mq8=awA;-q~XM~_6|2D^zXJO3qf5!MyjEjupNyJa1n&5mNOX*CO zNRDo(lB@SzB5Ag1>Xu6yZe6o2*Rc&lcc|CWwcWa@c8ICAEn;_ci%6F3>eBs3wPM#* zwOt|^#-3SMcXr^lX|l38T04) q{_*=rZ_aEmZ=gk5VfV*t0a{j*`dfGAo literal 0 HcmV?d00001 diff --git a/BSQ/srcs/parsing-c/charobj.c b/BSQ/srcs/parsing-c/charobj.c new file mode 100644 index 0000000..addf6b8 --- /dev/null +++ b/BSQ/srcs/parsing-c/charobj.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* charobj.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: axdubois +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/02 15:09:36 by axdubois #+# #+# */ +/* Updated: 2023/08/02 19:39:22 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/utils-h/charobj.h" + +t_charobj ft_get_charobj(char *ftline,int sizeline) +{ + t_charobj charobj; + + charobj.n = ftline[sizeline -3]; + charobj.o = ftline[sizeline -2]; + charobj.x = ftline[sizeline -1]; + return (charobj); +} diff --git a/BSQ/srcs/parsing-c/charobj.o b/BSQ/srcs/parsing-c/charobj.o new file mode 100644 index 0000000000000000000000000000000000000000..348eec9a5cab4e72e94ced715e7e5f7360160d96 GIT binary patch literal 1064 zcmb<-^>JfjWMqH=Mg}_u1P><4!0-Y|&;cy$z`zMq8S2sb)T6WZLuct5k8alw-M(*{ z5B~K?KH0^>(c$_FF7yv3^aC#RA13s(%k@`>>#MYG*B@z}t}pnv`Mx^%P=J5C>kG~k zv4*^bB;3OTm(cbw)s*iJmC~g9y~gj8#Dl zj1>Zm(md=O6M$})0g8h#2qc0CM?QfzCTCtYrWl|KkN|ez0~BUq`1l{2EHeWWhOh!q zLVFI81$0!b8}PkfQ-ESl2ko+zfj%clEma}hP0CS^wg60 ziXnb}cAEe&^O?)AguZJcM zQVRkw8e|@f4VHis=aD%`Y;?6wKslgT0ZQBf#V$bgSRm;IG0~HhEl`XFO$~^f0kud1 zDhJZX3dAt|FmZjL7_-m+d?3{T#Bk7n=1`bEG+~A~pbm7mgACz-Dog-zfB?h=#WTzt GnEe1&PkD|2 literal 0 HcmV?d00001 diff --git a/BSQ/srcs/parsing-c/fst_line.c b/BSQ/srcs/parsing-c/fst_line.c new file mode 100644 index 0000000..b282905 --- /dev/null +++ b/BSQ/srcs/parsing-c/fst_line.c @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* fst_line.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/01 18:23:55 by axdubois #+# #+# */ +/* Updated: 2023/08/02 11:28:35 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/utils-h/utils.h" + +int ft_len_line(int file, int n) +{ + int count; + char *buf; + int i; + + i = 0; + while (i < n) + { + read(file, &buf, 1); + i++; + } + count = 0; + buf = malloc(1); + while (*buf != '\n' && read(file, &buf, 1) > 0) + count++; + free(buf); + close(file); + return (count); +} + +int ft_len_colum(int file) +{ + int count; + char *buf; + int i; + + i = 0; + count = 0; + buf = malloc(1); + while (read(file, &buf, 1) > 0) + { + if (*buf == '\n') + count++; + } + free(buf); + close(file); + return (count); +} + +char *ft_get_first_line(int file) +{ + char *buf; + int i; + char *fst_line; + int len_line; + + //if (file == -1) main + //return (-1); + len_line = ft_len_line(file, 0); + fst_line = malloc(len_line + 1); + if (fst_line == NULL) + return (NULL); + i = 0; + while (i < len_line) + { + read(file, &buf, 1); + fst_line[i] = *buf; + i++; + } + fst_line[i] = 0; + return (fst_line); +} diff --git a/BSQ/srcs/parsing-c/fst_line.o b/BSQ/srcs/parsing-c/fst_line.o new file mode 100644 index 0000000000000000000000000000000000000000..fbb88832549aed596cc78f6e7b6169960465a673 GIT binary patch literal 2128 zcmb`IO=uHA6o4mfwP|U)K`ICp8x+Aym!#@Rk%(^HLn~A$_F#$WW>brsM3POdg;gP~ zG!0d6-Yn>)NAV-Bn3sUiH@FsnJGtmc)nwB`*KvVS`lm2GLh4_po;QnNOZRtn&- zq-?Kxqy=oT(u1x_jh3iYK0*mKZZs?K^-X&EV*;(xM!U?fM z*q}{1hHq_NTuuqf*`Tq}z{ENko6IE4j9)V%i7Ee#o=Q(A6aL_!9FPM87cZ2J9r`1<)vT zO`yl&L4PiEFJNN9b6DNkBe={Gw1LL2Zx4(T#r&fJZx`xL3S6xFPT=CY{1A(RJKfxELP7{ZI4{r{A@`Z) zoS$cVhqtYj$SK{3$fiDP5?M>e<9fm*F*9uFiLjP5GI1g&lBO=-x;-|KHY3_YA{)j` zJRFHe;nGYI%}Azo44Bf*aBMo2hS2E*C76Paof7(ka4Z#xgDIu!B&A29Bpxx0q()*a zNY;p)HdAI~67-We>i;3HAPJs>TL#$g|BB1Nw!J}*!w4B_Q9^98?Fw*z>uARB!z~5Y zl%K`p8RHq@H-K`=QKSnrx&+vqt8?fK!taYSb9`~k+d3 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/02 10:06:20 by adjoly #+# #+# */ +/* Updated: 2023/08/02 19:46:23 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Display-h/write.h" +#include "../../includes/utils-h/utils.h" +#include "../../includes/algo-h/algo.h" +#include "../../includes/utils-h/charobj.h" +#include "../../includes/utils-h/fst_line.h" + +int ft_write_error(int file) +{ + write(2, "Map Error", 1); + close(file); + return (1); +} + +int ft_atoi(char *str) +{ + int i; + int result; + + i = 0; + result = 0; + while (str[i] >= '0' && str[i] <= '9') + { + result = (result * 10) + str[i] - 48; + i++; + } + return (result); +} + +int ft_check_map(int file) +{ + char *first_line; + int line_nb; + int i_line_nb; + int i; + + i = 1; + line_nb = ft_len_colum(file); + first_line = ft_get_first_line(file); + i_line_nb = ft_atoi(first_line); + if (i_line_nb != line_nb) + return (ft_write_error(file)); + while (i < line_nb) + { + if (ft_len_line(file, i) != i_line_nb) + return (ft_write_error(file)); + i++; + } + return (0); +} diff --git a/BSQ/srcs/parsing-c/map_error.o b/BSQ/srcs/parsing-c/map_error.o new file mode 100644 index 0000000000000000000000000000000000000000..9a3004579242543fbdbca0bbf62768fc676dac14 GIT binary patch literal 2088 zcmbtU-)j_C6uy%mCML1Fih`ifc_^iQaM(>Nr7E%_SBGMx6jFR>SjX8(vd!*Jn4Q(A ztOi%b?X;!fi%?o$d}v<^eXBm$r76U}Kz!&!g$Nr6xO`MmFa?7hWm}eF8Jiv4(lbKMuu+PfwCm68+FG(+ZU5Ovy!}wcJwTZz ztf<-+@((a}?eFB&(sbh8>u|;S_3FklUx&HOTM%}{H*9xeJ@IgCINhlIm%7DYB);AA zif3TBw()7==LWgH;V*tM5;xG|>ie|K@z#hPO;CwRl-OxJsx?z}-ir8otzp#p`s$CJ zPAB56sU_LJDOy-TgHd%ubX(_ZO0_B1j;bxmHzVFW%-0gvldpugS3g4ov{=Mf5b)i2 z91vAjMCxJQd_4)LqIl8R%IaU#*fMX&McOnhb82bAnKyY5_yLXUT%{CNOt;{aX3XGQOD)k(jBzxD z>z6u&DRrE9lvbPW1Mq>y!>9Pi8jts;_@^2_r18%+9^Z?KA4DSr)E=Rw_zyLHyT%{V zcs<^v7yy&lng(MTkOakNgvHodDHY$4_Q>eK;PB9PW(8isu|jVlWR~j}i(V;Y(_!{P zkPp4ACq4=?-C56_%NCt^_zGSr>-vRCky#}_^sJMoCl8cE$DM=I3H>~?3Wf8TJ99HfqnG;&=D-FFsl`6xY|Ey$*x zNEUYi?-F+r*c%IWpCoGFkEr9Gd@k~IsCJYbBPaBf9z^ +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:10:14 by axdubois #+# #+# */ +/* Updated: 2023/08/02 19:39:26 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/utils-h/utils.h" +#include "../../includes/utils-h/fst_line.h" + +int ft_get_nobj(int file, char o) +{ + int count; + char *buf; + + count = 0; + buf = malloc(1); + while (read(file, &buf, 1) > 0) + { + read(file, &buf, 1); + if (*buf == o) + count++; + } + free(buf); + close(file); + return (count); +} + +int ft_get_y(int file, int obj_c, char o) +{ + int count_obj; + int y_obj; + char *buf; + + y_obj = 0; + count_obj = 0; + buf = malloc(1); + while (*buf) + { + read(file, &buf, 1); + if (*buf == '\n') + y_obj++; + if (*buf == o) + { + count_obj++; + if (obj_c == count_obj) + return (y_obj); + } + } + free(buf); + return(0); +} + +int ft_get_x(int file, int obj_c, char o) +{ + int count_obj; + int x_obj; + char *buf; + + x_obj = 0; + count_obj = 0; + buf = malloc(1); + while (*buf) + { + read(file, &buf, 1); + if (*buf == '\n') + x_obj = 0; + if (*buf == o) + { + count_obj++; + if (obj_c == count_obj) + return (x_obj); + } + x_obj++; + } + free(buf); + return (0); +} + +t_coords *ft_get_list_obj(int file, char o) +{ + t_coords *list_obj; + int i; + int *buf; + int obj_c; + + list_obj = malloc(sizeof(t_coords) * ft_get_nobj(file, o)); + if (list_obj == NULL) + return (NULL); + i = 0; + obj_c = 0; + buf = malloc(1); + while (i < ft_get_nobj(file, o)) + { + read(file, &buf, 1); + if (*buf == o) + { + obj_c++; + list_obj[i].x = ft_get_x(file, obj_c, o); + list_obj[i].y = ft_get_y(file, obj_c, o); + } + i++; + } + list_obj[i].x = ft_len_line(file, 1); + list_obj[i].y = ft_len_colum(file); + i++; + list_obj[i].x = -1; + list_obj[i].y = -1; + free(buf); + return (list_obj); +} diff --git a/BSQ/srcs/parsing-c/parsing.o b/BSQ/srcs/parsing-c/parsing.o new file mode 100644 index 0000000000000000000000000000000000000000..e9b7697ebffd1ddcbb9c58c5515394f9ccffd175 GIT binary patch literal 2920 zcmb`IO>7%Q6vxN0NzycBBd7#|idsSlap=lPi_{8)40K=*ZB-$1qjERS#st>u$X=HO zVX)-7%4!MCfdjp9M&bg8N)<9KLDW)*_riZT~`9}r1|>2 zH*fy);q_Pa!h2(}7!ejDZ;`=BP(r-PK|js9X)*kphtZ=F7B(k{Ax z#Uvi~G>3X_rKfF_y*mR~^NI4!9Jq&FF7=cKQ5qK?oogxeBN#)wwYxEgcH2Mq`+d!= zcq}ta4O-gOYQHD1Y$+#0J?q;}#dpfxb$ZaGEUHO6DCdx{Jl&Ezo#?8ed@=JIvPsv2W0hQa{R|=g?mJ1?aY+koMPs{yna!htQ=x zAwT_}^;?*z@&x@85Wr93U#fo@W-|3~F~RoR^(Sp(NmWi>hdG1{?jyzC2i}HT=_-x# z0XqOK>udM^jt6~sCR(lH5v6_%rfN; z%9dSDW=-A7C9fI9(sIE{&d#YRHFfHAnK@^_oP*IB^>sW$a-7wK#6JIk#8ziwFHTQP zZi4C)z_FlhVD#?AzKQ&2Ge zGVTG4?G;)aBHu&^#?A=ZSD`#kk3E9l8o|FE!CwN7mVkm^o*up!u+s>^kWWJq{1QU2 zC|?aQH!z;@oI#N_gjtdBu_SebUG2AoR~U7mh4Q$+ zve9W8Rwi38%Xy+&1=~>HzchcUWb4^a#Z0TP@QLV~%OyL5W7RaT za46qvc&T7_f+no_^9;w&Lk}6gCE3z^a3hjD`mJ~t;_%+1)_N)+K3@>u3|<|VMQ~j- z{61hv3I~$?!PiwKhFzgwv}YtHhjt^ng-^^A<9aZEMSi2`^ZESmL?Ca4eu1mddEEZ* z;*SmNDys>>{o@&n`C|X*k6-8)ps7L$Ey)9M9-3&Q`hNmnR6E9Ra#7;DhVyVs(e?iU D>(H3{ literal 0 HcmV?d00001 diff --git a/BSQ/srcs/utils-c/free.c b/BSQ/srcs/utils-c/free.c new file mode 100644 index 0000000..6ef3efb --- /dev/null +++ b/BSQ/srcs/utils-c/free.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/01 17:51:39 by adjoly #+# #+# */ +/* Updated: 2023/08/01 18:16:58 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Display-h/write.h" +#include "../../includes/utils-h/utils.h" + +void ft_free_coords(t_coords *coords) +{ + free(coords); +} + +void ft_free_arr(char *arr) +{ + free(arr); +} + +void ft_free_d_arr(char **arr) +{ + int i; + + i = -1; + while (arr[i]) + { + free(arr[i]); + i++; + } + free(*arr); +} diff --git a/BSQ/srcs/utils-c/free.o b/BSQ/srcs/utils-c/free.o new file mode 100644 index 0000000000000000000000000000000000000000..84140337b162cfdf4bfcd581373957d99b6e7864 GIT binary patch literal 1496 zcmbu8Pixdr5Wpw9wN|M%6$PO}bMWA$kKJm)!%`v|&7t;CSoNT6(`;I$o1`S!x(c<0 z6?F-MH@|`(Lr}0M(UYG*Q1Bw`VGqJOlgvv)+C7K^$;|xb&zqOLw`(ljEGY^|QD6}c zJV^oWl@Dw^F?BeJnRT=G-R%BS&EC$yjCTeHneRg2p{>LR-G3W zQJK5kPJ-2E^XOd>3pDasdZ8#!S3v2g%FN{Pi8uHmE+C_aWQJbXPOC3U*H4Y#!315fdYw7oDBAd5CuL z>`*QJ>!MuZ^;bD?0yQDJ3nb@L1(T?$2c4(9d}BxCA=+|&sTXrBpL$FtpK}q4LQHWbZ3v+|0`~2aw6@YzOk&A`(H*@UK;wS_VCH%3)jnSP(6wCQx9Ml UjpFPS+vCJ{oJcO6lj8b+0jD0n6aWAK literal 0 HcmV?d00001 diff --git a/BSQ/srcs/utils-c/utils.c b/BSQ/srcs/utils-c/utils.c new file mode 100644 index 0000000..954aa7b --- /dev/null +++ b/BSQ/srcs/utils-c/utils.c @@ -0,0 +1,80 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: axdubois +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 23:27:23 by axdubois #+# #+# */ +/* Updated: 2023/08/02 19:28:42 by axdubois ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Display-h/write.h" +#include "../../includes/utils-h/utils.h" + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (*str != 0) + { + i++; + str++; + } + return (i); +} + +void ft_swap(int *a, int *b) +{ + int tmp; + + tmp = *b; + *b = *a; + *a = tmp; +} + +t_coords *ft_sort_x(t_coords *coords, int size) +{ + t_coords *arr; + int i; + + i = 0; + arr = coords; + while (i != size - 1) + { + if (arr[i].x > arr[i + 1].x) + { + ft_swap(&arr[i].x, &arr[i + 1].x); + i = 0; + } + else + { + i++; + } + } + return (arr); +} + +t_coords *ft_sort_y(t_coords *coords, int size) +{ + t_coords *arr; + int i; + + i = 0; + arr = coords; + while (i != size - 1) + { + if (arr[i].y > arr[i + 1].y) + { + ft_swap(&arr[i].y, &arr[i + 1].y); + i = 0; + } + else + { + i++; + } + } + return (arr); +} diff --git a/BSQ/srcs/utils-c/utils.o b/BSQ/srcs/utils-c/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..ef3587ae339db87ec3ac30f361f5ef53d36cdcc9 GIT binary patch literal 1792 zcmb_c&1(};5PzF2HGU?Df~eqv7X`cYLl06Z5xe@p#)FW9U`@B__5(LbNp@>0Rs&mv zWohY23SPVj{sUg6T4{Q%2hV~L66ir8LIfesynQd-Zi65=@OEZ?GxO#*`}XZKZS-bD zl86wA43k|?poCQ9T|3FlBsm0`Y3hEX?qaK|H4&wr){4I)PK(5sPJ{1hO=n$lwI&8A znAFu;jnD0N8zN&HQ>&t$y7qU-`R)-{+reZnhOQg)Qp|N@V;k{vNxz@7qhL?hZdSFL zXbU^nJ+0=YnodKyx)ooV@cGnfHdXWFE$XG}Ub^OdkZAVPkh~pV8Dt5Ikf7D*`!7){ zRjFs=CP;M6hc@fjfcI$}1ly0hTCK4Ra{$Xabv`OcZ-o2{Ka;hGYUDSvCGRCTvMt9~ zhFHp8hE5eS_pzkTru-MC&K{;DJz?i9TgjSwep;C~ilx~?Ug;lD`_#VPL7N5ppALX` zS-k=jKu-9INRRIlshp6`961nMg%9N{;J8qR@p1iF;(6r8(VhiJ02gD|5C^%04-uc< zjo(KcpW~pIu-U=72n+L*4COO}{gwN8je21Hh66!a=KF?mh36yFAlqaJ7yft% z7jslXxR|4dOj(&yp=f0mI#!veMZ?rp%P3n!%@%SwBX6GT&6*`OOVpB8wDbwk3pv#PNpQ|+m%V;* zuo8;#*WE$!CxsZENl=p9c^fK71e3r%2@B6IEHk`+9}nP<1J4of1j;F25d}215P2LX zKY3qO09*??LgODo*um8E!H*^o2*vDh7dWsMs6|uo7w|nWy3N1F=O5>ZI6uB) tQ7`7d4On!vT>w>q)sYsj7ksfEMfko)NEwVUcZ{ub@C{GII@~hc{}0duGu8kA literal 0 HcmV?d00001 diff --git a/BSQ/test b/BSQ/test new file mode 100644 index 0000000..74b3367 --- /dev/null +++ b/BSQ/test @@ -0,0 +1,11 @@ +10.ox +...o.....o +......o..o +.oo...oo.. +....o..ooo +o.....o..o +...o.....o +oo......o. +o..oo..... +..oo..o.o. +o..o...... diff --git a/C05/ex00/ft_iterative_factorial.c b/C05/ex00/ft_iterative_factorial.c new file mode 100644 index 0000000..7abb65d --- /dev/null +++ b/C05/ex00/ft_iterative_factorial.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_iterative_factorial.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 20:19:51 by adjoly #+# #+# */ +/* Updated: 2023/07/31 14:43:40 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_iterative_factorial(int nb) +{ + int i; + int result; + + i = 1; + result = 1; + if (nb < 0) + return (0); + if (nb == 0 || nb == 1) + return (1); + while (i <= nb) + { + result *= i; + i++; + } + return (result); +} diff --git a/C05/ex01/ft_recursive_factorial.c b/C05/ex01/ft_recursive_factorial.c new file mode 100644 index 0000000..2621309 --- /dev/null +++ b/C05/ex01/ft_recursive_factorial.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_factorial.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 20:36:35 by adjoly #+# #+# */ +/* Updated: 2023/07/23 23:07:46 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_recursive_factorial(int nb) +{ + if (nb < 0) + return (0); + if (nb == 1 || nb == 0) + return (1); + return (ft_recursive_factorial(nb - 1) * nb); +} diff --git a/C05/ex02/ft_iterative_power.c b/C05/ex02/ft_iterative_power.c new file mode 100644 index 0000000..e3543a9 --- /dev/null +++ b/C05/ex02/ft_iterative_power.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_iterative_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 22:29:27 by adjoly #+# #+# */ +/* Updated: 2023/07/25 19:40:26 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_iterative_power(int nb, int power) +{ + int result; + + if (power < 0) + return (0); + if (power == 0) + return (1); + if (power == 1) + return (nb); + result = nb; + while (power > 1) + { + result *= nb; + power--; + } + return (result); +} diff --git a/C05/ex03/ft_recursive_power.c b/C05/ex03/ft_recursive_power.c new file mode 100644 index 0000000..44e3482 --- /dev/null +++ b/C05/ex03/ft_recursive_power.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_recursive_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 22:18:51 by adjoly #+# #+# */ +/* Updated: 2023/07/25 19:41:15 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_recursive_power(int nb, int power) +{ + if (power < 0) + return (0); + if (power == 0) + return (1); + if (power == 1) + return (nb); + return (ft_recursive_power(nb, power - 1) * nb); +} diff --git a/C05/ex04/ft_fibonacci.c b/C05/ex04/ft_fibonacci.c new file mode 100644 index 0000000..30cfae9 --- /dev/null +++ b/C05/ex04/ft_fibonacci.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_fibonacci.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 22:53:47 by adjoly #+# #+# */ +/* Updated: 2023/07/31 16:58:43 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_fibonacci(int index) +{ + if (index < 0) + return (-1); + if (index == 0) + return (0); + if (index == 1) + return (1); + if (index == 2) + return (1); + return (ft_fibonacci(index - 2) + ft_fibonacci(index - 1)); +} diff --git a/C05/ex05/ft_sqrt.c b/C05/ex05/ft_sqrt.c new file mode 100644 index 0000000..7f3eb73 --- /dev/null +++ b/C05/ex05/ft_sqrt.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_sqrt.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 22:18:51 by adjoly #+# #+# */ +/* Updated: 2023/07/25 19:41:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_sqrt(int nb) +{ + int i; + + i = 0; + while (i <= 46340) + { + if (i * i == nb) + return (i); + i++; + } + return (0); +} diff --git a/C05/ex06/.ft_is_prime.c.swp b/C05/ex06/.ft_is_prime.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..63cb62a730db71da628168501b930398e5a981f3 GIT binary patch literal 12288 zcmeI2J#W)M7{{Mm|5X}j-6UjR7E69rRSo5?k@M-&-PF85XDXT=)psAyCezi9MR|V zKicmyAF}WNEK{Ss)9Vb)!tqUQ)Jj#=@SpSs9k=V2wu9;QuSP&;qt_aAT|eA)*5!)h z?#Y|ZcDUv3ZuJ8X+gsCj^QUZp4a{dCOBGd)ZuQ*NE8^mX&G~S=n+>o5Hoykh02^Qf zY=8~0ffHpQ>}TjT&Uh(4>*cu5O!V=TJ2t=u*Z><~18jf|umLu}2G{@_U;}L61R7|x ziK?fFz9Q!T|K#`o$FoF_ku37*4AC>>GV(o3w1?b44o?%kMcyDCWCv*?4dgze5rtes zE+I?EUmWK*@(Vdcej?uxbNnv|H#Wcq*Z><~18jf|umLu}297uIlB~cD2Z1m0<-#gi zm|LE0V`PmNq*<`MZISnz;=1s}+M19Bvi8Y(@zm?MBJYX1z?vfzJ|6FjfblkLF>BZ> zl%XXDjo5Kb9awR2U`Qx07YOx!XnCu&PiByM&^M1c>QLeoMR8$G6deOxU`v3T{dOaC z+gd28DvrG6NF~ZrE2+yh(Hx4=FdE~IfcJ(vxvYA(5j^+&yH$k?xs$3*4I_xH6HFJ{NF;A5BNVh21E)=^Xk8 DerfQ> literal 0 HcmV?d00001 diff --git a/C05/ex06/ft_is_prime.c b/C05/ex06/ft_is_prime.c new file mode 100644 index 0000000..06dc86a --- /dev/null +++ b/C05/ex06/ft_is_prime.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_is_prime.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 23:24:05 by adjoly #+# #+# */ +/* Updated: 2023/08/02 10:20:17 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_is_prime(int nb) +{ + int i; + + if (nb <= 0 || nb == 1) + return (0); + i = 2; + if (nb == 2) + return (1); + while (i < nb / 2) + { + if (nb % i == 0) + return (0); + i++; + } + return (1); +} diff --git a/C05/ex07/ft_find_next_prime.c b/C05/ex07/ft_find_next_prime.c new file mode 100644 index 0000000..4251feb --- /dev/null +++ b/C05/ex07/ft_find_next_prime.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_find_next_prime.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/23 23:24:05 by adjoly #+# #+# */ +/* Updated: 2023/07/31 09:59:29 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_is_prime(int nb) +{ + int i; + + i = 2; + if (nb == 2147483647) + return (1); + if (nb <= 0 || nb == 1) + return (0); + if (nb % 2 == 0) + return (0); + while (i < nb / 2) + { + if (nb % i == 0) + return (0); + i++; + } + return (1); +} + +int ft_find_next_prime(int nb) +{ + int i; + + i = nb; + if (nb <= 2) + return (2); + while (ft_is_prime(i) != 1) + i++; + return (i); +} diff --git a/C07/ex00/ft_strdup.c b/C07/ex00/ft_strdup.c new file mode 100644 index 0000000..feadf9a --- /dev/null +++ b/C07/ex00/ft_strdup.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/25 21:06:54 by adjoly #+# #+# */ +/* Updated: 2023/08/03 16:38:19 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + i++; + } + return (i); +} + +char *ft_strdup(char *src) +{ + int i; + char *dest; + int len; + + i = 0; + len = ft_strlen(src); + dest = malloc(sizeof(char) * len); + if (dest == NULL) + return (NULL); + while (src[i]) + { + dest[i] = src[i]; + i++; + } + dest[i] = '\0'; + return (dest); +} diff --git a/C07/ex01/ft_range.c b/C07/ex01/ft_range.c new file mode 100644 index 0000000..806ab4d --- /dev/null +++ b/C07/ex01/ft_range.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_range.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/27 19:51:50 by adjoly #+# #+# */ +/* Updated: 2023/07/31 09:40:55 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int *ft_range(int min, int max) +{ + int i; + int *arr; + + i = 0; + if (min >= max) + return (NULL); + arr = malloc((max - min) * sizeof(int)); + if (arr == NULL) + return (NULL); + while (min < max) + { + arr[i] = min; + min++; + i++; + } + return (arr); +} diff --git a/C07/ex02/ft_ultimate_range.c b/C07/ex02/ft_ultimate_range.c new file mode 100644 index 0000000..d0e5424 --- /dev/null +++ b/C07/ex02/ft_ultimate_range.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ultimate_range.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/27 19:51:50 by adjoly #+# #+# */ +/* Updated: 2023/08/03 20:25:00 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int ft_ultimate_range(int **range, int min, int max) +{ + int i; + int *arr; + + i = 0; + if (min >= max) + { + *range = 0; + return (0); + } + arr = malloc((max - min) * sizeof(int)); + if (arr == NULL) + { + *range = 0; + return (-1); + } + while (min < max) + { + arr[i] = min + i; + i++; + } + *range = arr; + return (max - min); +} diff --git a/C07/ex03/ft_strjoin.c b/C07/ex03/ft_strjoin.c new file mode 100644 index 0000000..a9b37e5 --- /dev/null +++ b/C07/ex03/ft_strjoin.c @@ -0,0 +1,85 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/31 12:52:50 by adjoly #+# #+# */ +/* Updated: 2023/08/03 16:37:21 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +int ft_strlenn(int size, char **strs, char *sep) +{ + int len; + int i; + + i = 0; + len = 0; + while (i < size) + { + len += ft_strlen(strs[i]); + i++; + } + len += (ft_strlen(sep) * (size - 1)); + return (len); +} + +char *ft_strcat(char *dest, char *src) +{ + int size_dest; + unsigned int i; + + i = 0; + size_dest = ft_strlen(dest); + while (src[i]) + { + dest[size_dest + i] = src[i]; + i++; + } + dest[size_dest + i] = '\0'; + return (dest); +} + +char *ft_strjoin(int size, char **strs, char *sep) +{ + int len_strs; + char *result; + int i; + + i = 0; + if (size == 0 || !strs || !sep) + { + result = malloc(1); + *result = 0; + return (result); + } + len_strs = ft_strlenn(size, strs, sep); + result = malloc((len_strs + 1) * sizeof(char)); + if (result == NULL) + return (NULL); + result[0] = 0; + while (i < size) + { + ft_strcat(result, strs[i]); + if (i < size - 1) + ft_strcat(result, sep); + i++; + } + return (result); +} diff --git a/C08/ex00/ft.h b/C08/ex00/ft.h new file mode 100644 index 0000000..84fdd8b --- /dev/null +++ b/C08/ex00/ft.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/26 23:13:31 by adjoly #+# #+# */ +/* Updated: 2023/07/26 23:35:28 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_H +# define FT_H + +void ft_putchar(char c); +void ft_swap(int *a, int *b); +void ft_putstr(char *str); +int ft_strlen(char *str); +int ft_strcmp(char *s1, char *s2); + +#endif diff --git a/C08/ex01/ft_boolean.h b/C08/ex01/ft_boolean.h new file mode 100644 index 0000000..9d05a4b --- /dev/null +++ b/C08/ex01/ft_boolean.h @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_boolean.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/26 23:45:33 by adjoly #+# #+# */ +/* Updated: 2023/07/26 23:50:35 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_BOOLEAN_H +# define FT_BOOLEAN_H + + + +#endif diff --git a/finish/C00/ex00/ft_putchar.c b/finish/C00/ex00/ft_putchar.c new file mode 100644 index 0000000..457ff47 --- /dev/null +++ b/finish/C00/ex00/ft_putchar.c @@ -0,0 +1,17 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 10:32:16 by adjoly #+# #+# */ +/* Updated: 2023/07/12 10:50:35 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_putchar(char c) +{ + write(1, &c, 1); +} diff --git a/finish/C00/ex01/ft_print_alphabet.c b/finish/C00/ex01/ft_print_alphabet.c new file mode 100644 index 0000000..d89b33d --- /dev/null +++ b/finish/C00/ex01/ft_print_alphabet.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_alphabet.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 11:08:23 by adjoly #+# #+# */ +/* Updated: 2023/07/12 20:50:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_print_alphabet(void) +{ + char i; + + i = 'a'; + while (i <= 'z') + { + write(1, &i, 1); + i++; + } +} diff --git a/finish/C00/ex02/ft_print_reverse_alphabet.c b/finish/C00/ex02/ft_print_reverse_alphabet.c new file mode 100644 index 0000000..82435a2 --- /dev/null +++ b/finish/C00/ex02/ft_print_reverse_alphabet.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_reverse_alphabet.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 11:08:23 by adjoly #+# #+# */ +/* Updated: 2023/07/15 15:45:54 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_print_reverse_alphabet(void) +{ + char i; + + i = 'z'; + while (i >= 'a') + { + write(1, &i, 1); + i--; + } +} diff --git a/finish/C00/ex03/ft_print_numbers.c b/finish/C00/ex03/ft_print_numbers.c new file mode 100644 index 0000000..823ef95 --- /dev/null +++ b/finish/C00/ex03/ft_print_numbers.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_numbers.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 20:36:08 by adjoly #+# #+# */ +/* Updated: 2023/07/15 15:33:47 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_print_numbers(void) +{ + char nbr; + + nbr = '0'; + while (nbr <= '9') + { + write(1, &nbr, 1); + nbr++; + } +} diff --git a/finish/C00/ex04/ft_is_negative.c b/finish/C00/ex04/ft_is_negative.c new file mode 100644 index 0000000..97e01ab --- /dev/null +++ b/finish/C00/ex04/ft_is_negative.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_is_negative.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 20:51:36 by adjoly #+# #+# */ +/* Updated: 2023/07/13 11:47:47 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_is_negative(int n) +{ + if (n < 0) + write(1, "N", 1); + else + write(1, "P", 1); +} diff --git a/finish/C00/ex05/ft_print_comb.c b/finish/C00/ex05/ft_print_comb.c new file mode 100644 index 0000000..2f9f346 --- /dev/null +++ b/finish/C00/ex05/ft_print_comb.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_comb.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 23:26:35 by adjoly #+# #+# */ +/* Updated: 2023/07/13 11:45:59 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_print_virgule(char a, char b, char c) +{ + if (!(a == '7' && b == '8' && c == '9')) + { + write(1, ",", 1); + write(1, " ", 1); + } +} + +void ft_print_comb(void) +{ + char a; + char b; + char c; + + a = '0'; + while (a <= '7') + { + b = a + 1; + while (b <= '8') + { + c = b + 1; + while (c <= '9') + { + write(1, &a, 1); + write(1, &b, 1); + write(1, &c, 1); + ft_print_virgule(a, b, c); + c++; + } + b++; + } + a++; + } +} diff --git a/finish/C00/ex06/ft_print_comb2.c b/finish/C00/ex06/ft_print_comb2.c new file mode 100644 index 0000000..962f9aa --- /dev/null +++ b/finish/C00/ex06/ft_print_comb2.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_comb2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 11:13:23 by adjoly #+# #+# */ +/* Updated: 2023/07/16 13:29:28 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_print_nbr(int a, int b) +{ + char c; + char d; + char e; + char f; + + c = a / 10 + 48; + d = a % 10 + 48; + e = b / 10 + 48; + f = b % 10 + 48; + write(1, &c, 1); + write(1, &d, 1); + write(1, " ", 1); + write(1, &e, 1); + write(1, &f, 1); + if (!(c == '9' && d == '8' && e == '9' && f == '9')) + write(1, ", ", 2); +} + +void ft_print_comb2(void) +{ + int a; + int b; + + a = 0; + while (a <= 98) + { + b = a + 1; + while (b <= 99) + { + ft_print_nbr(a, b); + b++; + } + a++; + } +} diff --git a/finish/C00/ex07/ft_putnbr.c b/finish/C00/ex07/ft_putnbr.c new file mode 100644 index 0000000..7f15848 --- /dev/null +++ b/finish/C00/ex07/ft_putnbr.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 13:51:06 by adjoly #+# #+# */ +/* Updated: 2023/07/16 13:26:07 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_putnbr(int nb) +{ + if (nb == -214783648) + { + write(1, "-214783648", 10); + return ; + } + if (nb < 0) + { + write(1, "-", 1); + ft_putnbr(nb * -1); + } + else if (nb < 10) + write(1, &(char){nb + 48}, 1); + else + { + ft_putnbr(nb / 10); + write(1, &(char){nb % 10 + 48}, 1); + } +} diff --git a/finish/C01/ex00/ft_ft.c b/finish/C01/ex00/ft_ft.c new file mode 100644 index 0000000..b8e4516 --- /dev/null +++ b/finish/C01/ex00/ft_ft.c @@ -0,0 +1,16 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ft.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 18:51:05 by adjoly #+# #+# */ +/* Updated: 2023/07/16 21:06:40 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_ft(int *nbr) +{ + *nbr = 42; +} diff --git a/finish/C01/ex01/ft_ultimate_ft.c b/finish/C01/ex01/ft_ultimate_ft.c new file mode 100644 index 0000000..a9852fe --- /dev/null +++ b/finish/C01/ex01/ft_ultimate_ft.c @@ -0,0 +1,16 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ultimate_ft.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 19:08:30 by adjoly #+# #+# */ +/* Updated: 2023/07/13 19:09:22 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_ultimate_ft(int *********nbr) +{ + *********nbr = 42; +} diff --git a/finish/C01/ex02/ft_swap.c b/finish/C01/ex02/ft_swap.c new file mode 100644 index 0000000..0af20ff --- /dev/null +++ b/finish/C01/ex02/ft_swap.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_swap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 19:20:17 by adjoly #+# #+# */ +/* Updated: 2023/07/16 19:00:58 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_swap(int *a, int *b) +{ + int tmp; + + tmp = *a; + *a = *b; + *b = tmp; +} diff --git a/finish/C01/ex03/ft_div_mod.c b/finish/C01/ex03/ft_div_mod.c new file mode 100644 index 0000000..fb9b583 --- /dev/null +++ b/finish/C01/ex03/ft_div_mod.c @@ -0,0 +1,17 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_div_mod.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 19:36:32 by adjoly #+# #+# */ +/* Updated: 2023/07/13 19:40:32 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_div_mod(int a, int b, int *div, int *mod) +{ + *div = a / b; + *mod = a % b; +} diff --git a/finish/C01/ex04/ft_ultimate_div_mod.c b/finish/C01/ex04/ft_ultimate_div_mod.c new file mode 100644 index 0000000..c5cddf1 --- /dev/null +++ b/finish/C01/ex04/ft_ultimate_div_mod.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ultimate_div_mod.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 10:03:47 by adjoly #+# #+# */ +/* Updated: 2023/07/14 10:32:21 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_ultimate_div_mod(int *a, int *b) +{ + int div; + int mod; + + div = *a / *b; + mod = *a % *b; + *a = div; + *b = mod; +} diff --git a/finish/C01/ex05/ft_putstr.c b/finish/C01/ex05/ft_putstr.c new file mode 100644 index 0000000..8657195 --- /dev/null +++ b/finish/C01/ex05/ft_putstr.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 10:36:38 by adjoly #+# #+# */ +/* Updated: 2023/07/14 18:35:37 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_putstr(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + write(1, &str[i], 1); + i++; + } +} diff --git a/finish/C01/ex06/ft_strlen.c b/finish/C01/ex06/ft_strlen.c new file mode 100644 index 0000000..c208bec --- /dev/null +++ b/finish/C01/ex06/ft_strlen.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 18:37:42 by adjoly #+# #+# */ +/* Updated: 2023/07/14 18:40:41 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + i++; + } + return (i); +} diff --git a/finish/C01/ex07/ft_rev_int_tab.c b/finish/C01/ex07/ft_rev_int_tab.c new file mode 100644 index 0000000..be6e9b4 --- /dev/null +++ b/finish/C01/ex07/ft_rev_int_tab.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_rev_int_tab.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 18:49:16 by adjoly #+# #+# */ +/* Updated: 2023/07/16 21:06:59 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_swap(int *a, int *b) +{ + int tmp; + + tmp = *a; + *a = *b; + *b = tmp; +} + +void ft_rev_int_tab(int *tab, int size) +{ + int i; + + i = 0; + while (i < size) + { + ft_swap(&tab[i], &tab[--size]); + i++; + } +} diff --git a/finish/C02/ex00/ft_strcpy.c b/finish/C02/ex00/ft_strcpy.c new file mode 100644 index 0000000..717f99d --- /dev/null +++ b/finish/C02/ex00/ft_strcpy.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/15 16:49:13 by adjoly #+# #+# */ +/* Updated: 2023/07/17 11:15:40 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strcpy(char *dest, char *src) +{ + int i; + + i = 0; + while (src[i]) + { + dest[i] = src[i]; + i++; + } + dest[i] = '\0'; + return (dest); +} diff --git a/finish/C02/ex01/ft_strncpy.c b/finish/C02/ex01/ft_strncpy.c new file mode 100644 index 0000000..2a51962 --- /dev/null +++ b/finish/C02/ex01/ft_strncpy.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/15 16:49:13 by adjoly #+# #+# */ +/* Updated: 2023/07/17 22:41:12 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strncpy(char *dest, char *src, unsigned int n) +{ + unsigned int i; + + i = 0; + while (i < n && src[i]) + { + dest[i] = src[i]; + i++; + } + while (i < n) + { + dest[i] = '\0'; + i++; + } + return (dest); +} diff --git a/finish/C02/ex02/ft_str_is_alpha.c b/finish/C02/ex02/ft_str_is_alpha.c new file mode 100644 index 0000000..82f3447 --- /dev/null +++ b/finish/C02/ex02/ft_str_is_alpha.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_str_is_alpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 14:06:22 by adjoly #+# #+# */ +/* Updated: 2023/07/17 17:16:02 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_str_is_alpha(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if ((str[i] < 65 || str[i] > 90) && (str[i] < 97 || str[i] > 122)) + return (0); + i++; + } + return (1); +} diff --git a/finish/C02/ex03/ft_str_is_numeric.c b/finish/C02/ex03/ft_str_is_numeric.c new file mode 100644 index 0000000..ca676e9 --- /dev/null +++ b/finish/C02/ex03/ft_str_is_numeric.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_str_is_numeric.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 14:06:22 by adjoly #+# #+# */ +/* Updated: 2023/07/17 17:53:00 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_str_is_numeric(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] < '0' || str[i] > '9') + return (0); + i++; + } + return (1); +} diff --git a/finish/C02/ex04/ft_str_is_lowercase.c b/finish/C02/ex04/ft_str_is_lowercase.c new file mode 100644 index 0000000..4e72e71 --- /dev/null +++ b/finish/C02/ex04/ft_str_is_lowercase.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_str_is_lowercase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 14:06:22 by adjoly #+# #+# */ +/* Updated: 2023/07/17 17:19:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_str_is_lowercase(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] < 97 || str[i] > 122) + return (0); + i++; + } + return (1); +} diff --git a/finish/C02/ex05/ft_str_is_uppercase.c b/finish/C02/ex05/ft_str_is_uppercase.c new file mode 100644 index 0000000..df0a847 --- /dev/null +++ b/finish/C02/ex05/ft_str_is_uppercase.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_str_is_uppercase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 14:06:22 by adjoly #+# #+# */ +/* Updated: 2023/07/17 17:58:53 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_str_is_uppercase(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] < 65 || str[i] > 90) + return (0); + i++; + } + return (1); +} diff --git a/finish/C02/ex06/ft_str_is_printable.c b/finish/C02/ex06/ft_str_is_printable.c new file mode 100644 index 0000000..54cf0cf --- /dev/null +++ b/finish/C02/ex06/ft_str_is_printable.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_str_is_printable.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 14:06:22 by adjoly #+# #+# */ +/* Updated: 2023/07/17 17:51:25 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_str_is_printable(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] < 32 || str[i] == 127) + return (0); + i++; + } + return (1); +} diff --git a/finish/C02/ex07/ft_strupcase.c b/finish/C02/ex07/ft_strupcase.c new file mode 100644 index 0000000..aa14da7 --- /dev/null +++ b/finish/C02/ex07/ft_strupcase.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strupcase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 17:50:51 by adjoly #+# #+# */ +/* Updated: 2023/07/19 22:09:15 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strupcase(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] >= 97 && str[i] <= 122) + str[i] -= 32; + i++; + } + return (str); +} diff --git a/finish/C02/ex08/ft_strlowcase.c b/finish/C02/ex08/ft_strlowcase.c new file mode 100644 index 0000000..2699b5b --- /dev/null +++ b/finish/C02/ex08/ft_strlowcase.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlowcase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 17:50:51 by adjoly #+# #+# */ +/* Updated: 2023/07/20 09:37:24 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strlowcase(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] >= 65 && str[i] <= 90) + str[i] = str[i] + 32; + i++; + } + return (str); +} diff --git a/finish/C02/ex09/ft_strcapitalize.c b/finish/C02/ex09/ft_strcapitalize.c new file mode 100644 index 0000000..29129a0 --- /dev/null +++ b/finish/C02/ex09/ft_strcapitalize.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcapitalize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/17 18:12:38 by adjoly #+# #+# */ +/* Updated: 2023/07/18 21:24:58 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strcapitalize(char *str) +{ + int i; + + i = 0; + if (str[i] >= 'a' && str[i] <= 'z') + str[i] -= 32; + i++; + while (str[i]) + { + if ((str[i] >= 'a' && str[i] <= 'z') + && !((str[i - 1] >= '0' && str[i - 1] <= '9') + || (str[i - 1] >= 'a' && str[i - 1] <= 'z') + || (str[i - 1] >= 'A' && str[i - 1] <= 'Z'))) + str[i] -= 32; + else if (str[i] >= 'A' && str[i] <= 'Z' + && ((str[i - 1] >= '0' && str[i - 1] <= '9') + || (str[i - 1] >= 'a' && str[i - 1] <= 'z') + || (str[i - 1] >= 'A' && str[i - 1] <= 'Z'))) + str[i] += 32; + i++; + } + return (str); +} diff --git a/finish/C02/ex10/ft_strlcpy.c b/finish/C02/ex10/ft_strlcpy.c new file mode 100644 index 0000000..4642c20 --- /dev/null +++ b/finish/C02/ex10/ft_strlcpy.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 13:39:08 by adjoly #+# #+# */ +/* Updated: 2023/07/18 19:49:31 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +unsigned int ft_strlcpy(char *dest, char *src, unsigned int size) +{ + unsigned int i; + + i = 0; + if (size == 0) + { + while (src[i]) + i++; + return (i); + } + while (src[i] && i + 1 < size) + { + dest[i] = src[i]; + i++; + } + while (i < size) + { + dest[i] = '\0'; + i++; + } + i = 0; + while (src[i]) + i++; + return (i); +} diff --git a/finish/C03/ex00/ft_strcmp.c b/finish/C03/ex00/ft_strcmp.c new file mode 100644 index 0000000..95cfcd3 --- /dev/null +++ b/finish/C03/ex00/ft_strcmp.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 16:20:57 by adjoly #+# #+# */ +/* Updated: 2023/07/25 13:06:36 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strcmp(char *s1, char *s2) +{ + int i; + + i = 0; + while (s1[i] || s2[i]) + { + if (s1[i] != s2[i]) + return (s1[i] - s2[i]); + i++; + } + return (s1[i] - s2[i]); +} diff --git a/finish/C03/ex01/ft_strncmp.c b/finish/C03/ex01/ft_strncmp.c new file mode 100644 index 0000000..b787a96 --- /dev/null +++ b/finish/C03/ex01/ft_strncmp.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 16:20:57 by adjoly #+# #+# */ +/* Updated: 2023/07/25 13:07:01 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strncmp(char *s1, char *s2, unsigned int n) +{ + unsigned int i; + + i = 0; + while ((s1[i] || s2[i]) && i < n) + { + if (s1[i] != s2[i]) + return (s1[i] - s2[i]); + i++; + } + return (0); +} diff --git a/finish/C03/ex02/ft_strcat.c b/finish/C03/ex02/ft_strcat.c new file mode 100644 index 0000000..8697848 --- /dev/null +++ b/finish/C03/ex02/ft_strcat.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 17:17:04 by adjoly #+# #+# */ +/* Updated: 2023/07/18 17:33:22 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +char *ft_strcat(char *dest, char *src) +{ + int size_dest; + unsigned int i; + + i = 0; + size_dest = ft_strlen(dest); + while (src[i]) + { + dest[size_dest + i] = src[i]; + i++; + } + dest[size_dest + i] = '\0'; + return (dest); +} diff --git a/finish/C03/ex03/ft_strncat.c b/finish/C03/ex03/ft_strncat.c new file mode 100644 index 0000000..4ea7220 --- /dev/null +++ b/finish/C03/ex03/ft_strncat.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 17:17:04 by adjoly #+# #+# */ +/* Updated: 2023/07/18 17:32:47 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +char *ft_strncat(char *dest, char *src, unsigned int nb) +{ + int size_dest; + unsigned int i; + + i = 0; + size_dest = ft_strlen(dest); + while (src[i] && i < nb) + { + dest[size_dest + i] = src[i]; + i++; + } + dest[size_dest + i] = '\0'; + return (dest); +} diff --git a/finish/C03/ex04/ft_strstr.c b/finish/C03/ex04/ft_strstr.c new file mode 100644 index 0000000..0c2b34c --- /dev/null +++ b/finish/C03/ex04/ft_strstr.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/18 21:31:36 by adjoly #+# #+# */ +/* Updated: 2023/07/20 22:14:23 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strstr(char *str, char *to_find) +{ + int i; + int j; + + i = 0; + j = 0; + if (to_find[0] == '\0') + { + return (str); + } + while (str[i]) + { + while (str[i + j] == to_find[j]) + { + if (to_find[j + 1] == '\0') + return (&str[i]); + j++; + } + j = 0; + i++; + } + return (0); +} diff --git a/finish/C04/ex00/ft_strlen.c b/finish/C04/ex00/ft_strlen.c new file mode 100644 index 0000000..82ffa72 --- /dev/null +++ b/finish/C04/ex00/ft_strlen.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/19 08:44:17 by adjoly #+# #+# */ +/* Updated: 2023/07/19 08:57:52 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + i++; + } + return (i); +} diff --git a/finish/C04/ex01/ft_putstr.c b/finish/C04/ex01/ft_putstr.c new file mode 100644 index 0000000..4210f43 --- /dev/null +++ b/finish/C04/ex01/ft_putstr.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/19 08:58:22 by adjoly #+# #+# */ +/* Updated: 2023/07/19 09:02:13 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_putstr(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + write(1, &str[i], 1); + i++; + } +} diff --git a/finish/C04/ex02/ft_putnbr.c b/finish/C04/ex02/ft_putnbr.c new file mode 100644 index 0000000..7487d5d --- /dev/null +++ b/finish/C04/ex02/ft_putnbr.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/13 13:51:06 by adjoly #+# #+# */ +/* Updated: 2023/07/25 12:57:21 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +void ft_putnbr(int nb) +{ + unsigned int nbr; + + if (nb < 0) + { + write(1, "-", 1); + nbr = -nb; + } + else + nbr = nb; + if (nbr < 10) + write(1, &(char){nbr + 48}, 1); + else + { + ft_putnbr(nbr / 10); + write(1, &(char){nbr % 10 + 48}, 1); + } +} diff --git a/finish/C04/ex03/ft_atoi.c b/finish/C04/ex03/ft_atoi.c new file mode 100644 index 0000000..49f5d46 --- /dev/null +++ b/finish/C04/ex03/ft_atoi.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/19 09:27:06 by adjoly #+# #+# */ +/* Updated: 2023/07/26 09:56:29 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_atoi(char *str) +{ + int i; + int neg; + int result; + + i = 0; + neg = 1; + result = 0; + while (str[i] == ' ' || (str[i] >= 9 && str[i] <= 13)) + i++; + while (str[i] == '+' || str[i] == '-') + { + if (str[i] == '-') + neg *= -1; + i++; + } + while (str[i] >= '0' && str[i] <= '9') + { + result = (result * 10) + str[i] - 48; + i++; + } + result *= neg; + return (result); +} diff --git a/finish/C04/ex04/ft_putnbr_base.c b/finish/C04/ex04/ft_putnbr_base.c new file mode 100644 index 0000000..b8b60bf --- /dev/null +++ b/finish/C04/ex04/ft_putnbr_base.c @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_base.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/19 14:25:29 by adjoly #+# #+# */ +/* Updated: 2023/07/25 09:20:02 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +int ft_checkbase(char *base) +{ + int i; + int j; + + i = 0; + if (ft_strlen(base) <= 1) + return (1); + while (base[i]) + { + if (base[i] == '-' || base[i] == '+') + return (1); + j = i + 1; + while (base[j]) + { + if (base[i] == base[j]) + return (1); + j++; + } + i++; + } + return (0); +} + +void ft_putnbr_base(int nbr, char *base) +{ + unsigned int len; + unsigned int y; + + if (ft_checkbase(base) == 1) + return ; + len = ft_strlen(base); + if (nbr < 0) + { + write(1, "-", 1); + y = -nbr; + } + else + y = nbr; + if (y < len) + write(1, &(char){base[y]}, 1); + else + { + ft_putnbr_base(y / len, base); + write(1, &(char){base[y % len]}, 1); + } +} diff --git a/finish/C06/ex00/ft_print_program_name.c b/finish/C06/ex00/ft_print_program_name.c new file mode 100644 index 0000000..faf55c2 --- /dev/null +++ b/finish/C06/ex00/ft_print_program_name.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_program_name.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/24 09:18:20 by adjoly #+# #+# */ +/* Updated: 2023/07/24 09:22:02 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int main(int ac, char **av) +{ + int i; + + i = 0; + (void)ac; + while (av[0][i]) + { + write(1, &av[0][i], 1); + i++; + } +} diff --git a/finish/C06/ex01/ft_print_params.c b/finish/C06/ex01/ft_print_params.c new file mode 100644 index 0000000..f13f331 --- /dev/null +++ b/finish/C06/ex01/ft_print_params.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_params.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/24 09:26:14 by adjoly #+# #+# */ +/* Updated: 2023/07/24 09:40:30 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int main(int ac, char **av) +{ + int i; + int j; + + (void)ac; + i = 1; + j = 0; + while (av[i]) + { + j = 0; + while (av[i][j]) + { + write(1, &av[i][j], 1); + j++; + } + write(1, "\n", 1); + i++; + } +} diff --git a/finish/C06/ex02/ft_rev_params.c b/finish/C06/ex02/ft_rev_params.c new file mode 100644 index 0000000..0448747 --- /dev/null +++ b/finish/C06/ex02/ft_rev_params.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_rev_params.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/24 09:38:41 by adjoly #+# #+# */ +/* Updated: 2023/07/27 09:49:32 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int main(int ac, char **av) +{ + int i; + int j; + + i = 0; + (void)ac; + while (av[i]) + i++; + while (i > 1) + { + j = 0; + i--; + while (av[i][j]) + { + write(1, &av[i][j], 1); + j++; + } + write(1, "\n", 1); + } +} diff --git a/finish/rush00/ex00/ft_putchar.c b/finish/rush00/ex00/ft_putchar.c new file mode 100644 index 0000000..3d23b66 --- /dev/null +++ b/finish/rush00/ex00/ft_putchar.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 11:59:45 by ttrave #+# #+# */ +/* Updated: 2023/07/15 09:59:04 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_putchar(char c) +{ + write(1, &c, 1); +} diff --git a/finish/rush00/ex00/main.c b/finish/rush00/ex00/main.c new file mode 100644 index 0000000..9c07c94 --- /dev/null +++ b/finish/rush00/ex00/main.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/15 10:00:20 by ttrave #+# #+# */ +/* Updated: 2023/07/15 10:39:38 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void rush(int x, int y); + +int main(void) +{ + rush(25, 17); + return (0); +} diff --git a/finish/rush00/ex00/rush00.c b/finish/rush00/ex00/rush00.c new file mode 100644 index 0000000..3e6e6f6 --- /dev/null +++ b/finish/rush00/ex00/rush00.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rush00.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 21:13:37 by ttrave #+# #+# */ +/* Updated: 2023/07/16 11:30:51 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_putchar(char c); + +void rush(int x, int y) +{ + int w; + int h; + + w = 1; + h = 1; + while (y > 0 && h <= y) + { + while (x > 0 && w <= x) + { + if (((h == 1 || h == y) && w == 1) + || ((h == 1 || h == y) && w == x)) + ft_putchar('o'); + else if (w == x || w == 1) + ft_putchar('|'); + else if (h == 1 || h == y) + ft_putchar('-'); + else + ft_putchar(' '); + w++; + } + ft_putchar('\n'); + w = 1; + h++; + } +} diff --git a/finish/rush00/ex00/rush01.c b/finish/rush00/ex00/rush01.c new file mode 100644 index 0000000..9c8d9b9 --- /dev/null +++ b/finish/rush00/ex00/rush01.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rush01.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 21:13:37 by ttrave #+# #+# */ +/* Updated: 2023/07/16 11:31:22 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_putchar(char c); + +void rush(int x, int y) +{ + int w; + int h; + + w = 1; + h = 1; + while (y > 0 && h <= y) + { + while (x > 0 && w <= x) + { + if ((w == 1 && h == 1) || (w == x && h == y)) + ft_putchar('/'); + else if ((w == x && h == 1) || (w == 1 && h == y)) + ft_putchar('\\'); + else if (w == x || w == 1 || h == 1 || h == y) + ft_putchar('*'); + else + ft_putchar(' '); + w++; + } + ft_putchar('\n'); + w = 1; + h++; + } +} diff --git a/finish/rush00/ex00/rush02.c b/finish/rush00/ex00/rush02.c new file mode 100644 index 0000000..54a29ee --- /dev/null +++ b/finish/rush00/ex00/rush02.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rush02.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 21:13:37 by ttrave #+# #+# */ +/* Updated: 2023/07/16 11:32:34 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_putchar(char c); + +void rush(int x, int y) +{ + int w; + int h; + + w = 1; + h = 1; + while (y > 0 && h <= y) + { + while (x > 0 && w <= x) + { + if (h == 1 && (w == 1 || w == x)) + ft_putchar('A'); + else if (h == y && (w == 1 || w == x)) + ft_putchar('C'); + else if (w == x || w == 1 || h == 1 || h == y) + ft_putchar('B'); + else + ft_putchar(' '); + w++; + } + ft_putchar('\n'); + w = 1; + h++; + } +} diff --git a/finish/rush00/ex00/rush03.c b/finish/rush00/ex00/rush03.c new file mode 100644 index 0000000..e493746 --- /dev/null +++ b/finish/rush00/ex00/rush03.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rush03.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 21:13:37 by ttrave #+# #+# */ +/* Updated: 2023/07/16 11:33:12 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_putchar(char c); + +void rush(int x, int y) +{ + int w; + int h; + + w = 1; + h = 1; + while (y > 0 && h <= y) + { + while (x > 0 && w <= x) + { + if (w == 1 && (h == 1 || h == y)) + ft_putchar('A'); + else if (w == x && (h == 1 || h == y)) + ft_putchar('C'); + else if (w == x || w == 1 || h == 1 || h == y) + ft_putchar('B'); + else + ft_putchar(' '); + w++; + } + ft_putchar('\n'); + w = 1; + h++; + } +} diff --git a/finish/rush00/ex00/rush04.c b/finish/rush00/ex00/rush04.c new file mode 100644 index 0000000..e429abf --- /dev/null +++ b/finish/rush00/ex00/rush04.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rush04.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/14 21:13:37 by ttrave #+# #+# */ +/* Updated: 2023/07/16 11:33:48 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_putchar(char c); + +void rush(int x, int y) +{ + int w; + int h; + + w = 1; + h = 1; + while (y > 0 && h <= y) + { + while (x > 0 && w <= x) + { + if ((w == 1 && h == 1) || (w == x && h == y)) + ft_putchar('A'); + else if ((w == x && h == 1) || (w == 1 && h == y)) + ft_putchar('C'); + else if (w == x || w == 1 || h == 1 || h == y) + ft_putchar('B'); + else + ft_putchar(' '); + w++; + } + ft_putchar('\n'); + w = 1; + h++; + } +} diff --git a/finish/rush01/ex00/bruteforce.c b/finish/rush01/ex00/bruteforce.c new file mode 100644 index 0000000..d152193 --- /dev/null +++ b/finish/rush01/ex00/bruteforce.c @@ -0,0 +1,108 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* bruteforce.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jmikola +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 12:00:11 by psalame #+# #+# */ +/* Updated: 2023/07/23 12:43:04 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int get_area_size(void); +int ft_test_possibility(int **tab, int i); +int verif_non_double(int i, int **tab); +int verif_col_down(int i, int **tab); +int verif_col_up(int i, int **tab); +int verif_row_right(int i, int **tab); +int verif_row_left(int i, int **tab); +int **get_row(void); +int **get_col(void); + +int verif_all_row(int i, int **tab) +{ + int row_left; + int row_right; + int area_size; + + area_size = get_area_size(); + row_left = verif_row_left(i, tab); + row_right = verif_row_right(i, tab); + if (((i % area_size) == area_size - 1)) + { + if (row_left != get_row()[i / area_size][0] + || row_right != get_row()[i / area_size][1]) + return (0); + } + else if (row_left > get_row()[i / area_size][0]) + return (0); + return (1); +} + +int verif_all_col(int i, int **tab) +{ + int col_up; + int col_down; + int area_size; + + area_size = get_area_size(); + col_up = verif_col_up(i, tab); + col_down = verif_col_down(i, tab); + if (((i / area_size) == area_size - 1)) + { + if (col_up != get_col()[i % area_size][0] + || col_down != get_col()[i % area_size][1]) + return (0); + } + else if (col_up > get_col()[i % area_size][0]) + return (0); + return (1); +} + +int verif(int i, int **tab) +{ + if (!verif_non_double(i, tab)) + return (0); + return (verif_all_row(i, tab) && verif_all_col(i, tab)); +} + +int is_possibility_valid(int **tab, int i) +{ + int area_size; + + area_size = get_area_size(); + if (i == area_size * area_size - 1) + return (1); + else + return (ft_test_possibility(tab, i + 1)); +} + +int ft_test_possibility(int **tab, int i) +{ + int area_size; + int height; + + area_size = get_area_size(); + if (tab[i / area_size][i % area_size] == 0) + { + height = 0; + while (++height <= area_size) + { + tab[i / area_size][i % area_size] = height; + if (verif(i, tab)) + { + if (is_possibility_valid(tab, i)) + return (1); + } + } + tab[i / area_size][i % area_size] = 0; + return (0); + } + else + { + if (!verif(i, tab)) + return (0); + return (is_possibility_valid(tab, i)); + } +} diff --git a/finish/rush01/ex00/ft_free_tabtab.c b/finish/rush01/ex00/ft_free_tabtab.c new file mode 100644 index 0000000..86ecdd5 --- /dev/null +++ b/finish/rush01/ex00/ft_free_tabtab.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_free_tabtab.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: psalame +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 14:18:27 by psalame #+# #+# */ +/* Updated: 2023/07/22 16:25:32 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_free_tabtab(int **tab, int size) +{ + int i; + + i = 0; + while (i < size) + { + free(tab[i]); + i++; + } + free(tab); +} diff --git a/finish/rush01/ex00/init_tables.c b/finish/rush01/ex00/init_tables.c new file mode 100644 index 0000000..a069bf9 --- /dev/null +++ b/finish/rush01/ex00/init_tables.c @@ -0,0 +1,94 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init_tables.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: psalame +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 19:12:44 by psalame #+# #+# */ +/* Updated: 2023/07/23 17:44:52 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int get_area_size(void); + +int **get_row_args(char **argv) +{ + int i_row; + int tab_index; + int **row; + int s; + + s = get_area_size(); + row = malloc(s * sizeof(int *)); + if (row == NULL) + return (NULL); + i_row = s * 4; + tab_index = 0; + while (i_row < (s * 6 - 1)) + { + if (argv[1][i_row] != ' ') + { + row[tab_index] = malloc(2 * sizeof(int)); + row[tab_index][0] = argv[1][i_row] - '0'; + row[tab_index][1] = argv[1][i_row + s * 2] - '0'; + tab_index ++; + } + i_row ++; + } + return (row); +} + +int **get_col_args(char **argv) +{ + int i_col; + int tab_index; + int **col; + int s; + + s = get_area_size(); + col = (int **) malloc(s * sizeof(int *)); + if (col == NULL) + return (NULL); + i_col = 0; + tab_index = 0; + while (i_col < (s * 2 - 1)) + { + if (argv[1][i_col] != ' ') + { + col[tab_index] = malloc(2 * sizeof(int)); + col[tab_index][0] = argv[1][i_col] - '0'; + col[tab_index][1] = argv[1][i_col + s * 2] - '0'; + tab_index++; + } + i_col ++; + } + return (col); +} + +int **init_res(void) +{ + int i; + int j; + int **res; + + res = malloc(get_area_size() * sizeof(int *)); + if (res == NULL) + return (NULL); + i = 0; + j = 0; + while (i < get_area_size()) + { + res[i] = malloc(get_area_size() * sizeof(int)); + j = 0; + while (j < get_area_size()) + { + res[i][j] = 0; + j++; + } + i++; + } + return (res); +} diff --git a/finish/rush01/ex00/is_args_valid.c b/finish/rush01/ex00/is_args_valid.c new file mode 100644 index 0000000..12ad465 --- /dev/null +++ b/finish/rush01/ex00/is_args_valid.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* is_args_valid.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: psalame +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 13:31:00 by psalame #+# #+# */ +/* Updated: 2023/07/23 11:19:18 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +int is_args_valid(int argc, char **argv) +{ + int i; + int area_size; + + if (argc != 2) + return (0); + area_size = (ft_strlen(argv[1]) + 1) / 2 / 2 / 2; + if (area_size < 2 || (ft_strlen(argv[1]) + 1) % area_size != 0) + return (0); + i = 0; + while (argv[1][i] && area_size != 0) + { + if (i % 2 == 0) + { + if (argv[1][i] < '1' || argv[1][i] > '0' + area_size) + area_size = 0; + } + else + if (argv[1][i] != ' ') + area_size = 0; + i++; + } + return (area_size); +} diff --git a/finish/rush01/ex00/main.c b/finish/rush01/ex00/main.c new file mode 100644 index 0000000..266da54 --- /dev/null +++ b/finish/rush01/ex00/main.c @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ale-gal +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 12:32:28 by ale-gal #+# #+# */ +/* Updated: 2023/07/23 17:45:59 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int get_area_size(void); +int **get_col_args(char **argv); +int **get_row_args(char **argv); +void ft_free_tabtab(int **tab, int size); +void ft_print_double_tab(int **tab, int size); +int **ft_place_sure(int **row, int **col, int **result); +int is_args_valid(int argc, char **argv); +int ft_test_possibility(int **tab, int i); +int **init_res(void); +int **g_col; +int **g_row; +int g_area_size; + +int **get_col(void) +{ + return (g_col); +} + +int **get_row(void) +{ + return (g_row); +} + +int main(int argc, char **argv) +{ + int **res; + + g_area_size = is_args_valid(argc, argv); + if (g_area_size == 0) + { + write(1, "Error\n", 6); + return (0); + } + g_col = get_col_args(argv); + g_row = get_row_args(argv); + res = init_res(); + if (g_col == NULL || g_row == NULL || res == NULL) + { + write(1, "Error\n", 6); + return (0); + } + ft_place_sure(g_row, g_col, res); + if (ft_test_possibility(res, 0)) + ft_print_double_tab(res, get_area_size()); + else + write(1, "Error\n", 6); + ft_free_tabtab(res, get_area_size()); + ft_free_tabtab(g_col, get_area_size()); + ft_free_tabtab(g_row, get_area_size()); + return (0); +} + +int get_area_size(void) +{ + return (g_area_size); +} diff --git a/finish/rush01/ex00/place_sure.c b/finish/rush01/ex00/place_sure.c new file mode 100644 index 0000000..eef23b0 --- /dev/null +++ b/finish/rush01/ex00/place_sure.c @@ -0,0 +1,115 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* place_sure.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 11:37:10 by adjoly #+# #+# */ +/* Updated: 2023/07/23 11:11:18 by psalame ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int get_area_size(void); + +void con_col(int **result, int i, int j, int **col) +{ + int k; + + k = 0; + if (col[i][j] == 1) + { + if (j == 1) + result[get_area_size() - 1][i] = get_area_size(); + else + result[0][i] = get_area_size(); + } + else if (col[i][j] == get_area_size()) + { + if (j == 1) + { + k = get_area_size() + 1; + while (--k > 0) + result[k - 1][i] = (get_area_size() - k + 1); + } + else + { + while (++k <= get_area_size()) + result[k - 1][i] = k; + } + } +} + +void con_row(int **result, int i, int j, int **row) +{ + int k; + + k = 0; + if (row[i][j] == 1) + { + if (j == 1) + result[i][get_area_size() - 1] = get_area_size(); + else + result[i][0] = get_area_size(); + } + else if (row[i][j] == get_area_size()) + { + if (j == 1) + { + k = get_area_size(); + while (--k > 0) + result[i][k - 1] = (get_area_size() - k + 1); + } + else + { + while (++k <= get_area_size()) + result[i][k - 1] = k; + } + } +} + +void place_col(int size, int **col, int **result) +{ + int i; + int j; + + i = 0; + while (i < size) + { + j = 0; + while (j < 2) + { + con_col(result, i, j, col); + j++; + } + i++; + } +} + +void place_row(int size, int **row, int **result) +{ + int i; + int j; + + i = 0; + while (i < size) + { + j = 0; + while (j < 2) + { + con_row(result, i, j, row); + j++; + } + i++; + } +} + +int **ft_place_sure(int **row, int **col, int **result) +{ + int size; + + size = get_area_size(); + place_row(size, row, result); + place_col(size, col, result); + return (result); +} diff --git a/finish/rush01/ex00/print_double_tab.c b/finish/rush01/ex00/print_double_tab.c new file mode 100644 index 0000000..a86d532 --- /dev/null +++ b/finish/rush01/ex00/print_double_tab.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* print_double_tab.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ale-gal +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 11:42:20 by ale-gal #+# #+# */ +/* Updated: 2023/07/22 16:51:52 by ale-gal ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void ft_print_double_tab(int **tab, int size) +{ + int i_x; + int i_y; + char chr; + + i_y = 0; + while (i_y < size) + { + i_x = 0; + while (i_x < size) + { + chr = '0' + tab[i_y][i_x]; + write(1, &chr, 1); + if (i_x != size - 1) + write(1, " ", 1); + i_x++; + } + write(1, "\n", 1); + i_y++; + } +} diff --git a/finish/rush01/ex00/verif.c b/finish/rush01/ex00/verif.c new file mode 100644 index 0000000..bde0e0d --- /dev/null +++ b/finish/rush01/ex00/verif.c @@ -0,0 +1,128 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* verif.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jmikola +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 13:01:37 by jmikola #+# #+# */ +/* Updated: 2023/07/23 10:53:36 by jmikola ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int get_area_size(void); + +int verif_row_left(int i, int **tab) +{ + int val_row_left; + int v_max; + int j; + int area_size; + + j = 0; + val_row_left = 0; + v_max = 0; + area_size = get_area_size(); + while (j < area_size) + { + if (tab[i / area_size][j] > v_max) + { + val_row_left++; + v_max = tab[i / area_size][j]; + } + j++; + } + return (val_row_left); +} + +int verif_row_right(int i, int **tab) +{ + int val_row_right; + int v_max; + int j; + int area_size; + + area_size = get_area_size(); + j = area_size - 1; + v_max = 0; + val_row_right = 0; + while (j >= 0) + { + if (tab[i / area_size][j] > v_max) + { + val_row_right++; + v_max = tab[i / area_size][j]; + } + j--; + } + return (val_row_right); +} + +int verif_col_up(int i, int **tab) +{ + int val_col_up; + int v_max; + int j; + int area_size; + + j = 0; + v_max = 0; + val_col_up = 0; + area_size = get_area_size(); + while (j < area_size) + { + if (tab[j][i % area_size] > v_max) + { + val_col_up++; + v_max = tab[j][i % area_size]; + } + j++; + } + return (val_col_up); +} + +int verif_col_down(int i, int **tab) +{ + int val_col_down; + int v_max; + int j; + int area_size; + + area_size = get_area_size(); + j = area_size - 1; + v_max = 0; + val_col_down = 0; + while (j >= 0) + { + if (tab[j][i % area_size] > v_max) + { + val_col_down++; + v_max = tab[j][i % area_size]; + } + j--; + } + return (val_col_down); +} + +int verif_non_double(int i, int **tab) +{ + int j; + int area_size; + + j = 0; + area_size = get_area_size(); + while (j < i % area_size) + { + if (tab[i / area_size][j] == tab[i / area_size][i % area_size]) + return (0); + j++; + } + j = 0; + while (j < i / area_size) + { + if (tab[j][i % area_size] == tab[i / area_size][i % area_size]) + return (0); + j++; + } + return (1); +} diff --git a/finish/rush02/ex00/Makefile b/finish/rush02/ex00/Makefile new file mode 100644 index 0000000..39a41d5 --- /dev/null +++ b/finish/rush02/ex00/Makefile @@ -0,0 +1,46 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: tomoron +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/07/28 00:35:01 by tomoron #+# #+# # +# Updated: 2023/07/30 22:41:49 by tomoron ### ########.fr # +# # +# **************************************************************************** # + +NAME = rush-02 + +CC = gcc + +SRCS = algo.c \ + algo2.c \ + lib2.c \ + lib.c \ + main.c \ + parse2.c \ + parse.c \ + special_tens.c + +OBJS = $(SRCS:.c=.o) + +FLAGS = -Wall -Wextra -Werror + +$(NAME): $(OBJS) + $(CC) $(FLAGS) -o $(NAME) $(OBJS) + +.c.o: + $(CC) $(FLAGS) -c $< -o $@ + +all: $(NAME) + +clean: + rm -f $(OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY: clean all re fclean diff --git a/finish/rush02/ex00/algo.c b/finish/rush02/ex00/algo.c new file mode 100644 index 0000000..e5a52e3 --- /dev/null +++ b/finish/rush02/ex00/algo.c @@ -0,0 +1,127 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algo.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/29 17:23:56 by ttrave #+# #+# */ +/* Updated: 2023/07/30 22:35:56 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +void ft_prep_algo(char **dict, char *nbr) +{ + t_ulli len; + char **spec_tens; + + len = ft_strlen(nbr); + spec_tens = ft_fill_spec_tens(dict); + if (spec_tens == NULL) + { + ft_putstr("Error\n"); + return ; + } + ft_nbr_to_letters(dict, nbr, spec_tens, len); +} + +void ft_nbr_to_letters(char **dict, char *nbr, char **spec_tens, t_ulli l) +{ + t_ulli v; + t_ulli *i; + t_ulli group; + char *last_group_marker; + char *nb; + + group = l / 3; + i = &v; + *i = l; + while (*i > 0) + { + if (*i % 3 == 0) + ft_print_hundreds(dict, nbr, i, l); + else if (*i % 3 == 2) + { + nb = ft_cat(nbr[l - *i], nbr[l - *i + 1]); + if (nb == NULL) + return ; + ft_print_tens(dict, spec_tens, nb, i); + } + else if (*i % 3 == 1) + ft_print_units(dict, nbr[l - *i], i); + last_group_marker = ft_print_group_marker(dict, i); + if (last_group_marker == NULL) + { + ft_free_arr_arr(spec_tens); + ft_putstr("Error\n"); + return ; + } + if (*i % 3 == 1 && *i > 1) + { + ft_putchar(','); + group--; + } + } + ft_putchar('\n'); + free(spec_tens); +} + +void ft_print_units(char **dict, char unit, t_ulli *i) +{ + ft_print_next(ft_strndup(&unit, 1), dict); + if (*i > 0) + ft_putchar(' '); + (*i)--; +} + +void ft_print_hundreds(char **dict, char *nbr, t_ulli *i, t_ulli len) +{ + ft_print_next(ft_strndup(&nbr[len - *i], 1), dict); + ft_putchar(' '); + ft_print_next("100", dict); + if (nbr[len - *i + 1] != '0' || nbr[len - *i + 2] != '0') + ft_putstr(" and "); + (*i)--; +} + +void ft_print_tens(char **dict, char **spec_tens, char *nb, t_ulli *i) +{ + if (ft_is_spec_ten(spec_tens, nb) == 0) + { + ft_print_next(nb, dict); + (*i) -= 2; + if (*i > 2) + ft_putchar(' '); + } + else + { + ft_print_next(nb, dict); + ft_putchar('-'); + (*i)--; + } +} + +char *ft_print_group_marker(char **dict, t_ulli *len) +{ + char *group_marker; + t_ulli i; + + i = 1; + if (*len % 3 != 1 || *len < 4) + return ("1"); + group_marker = malloc((*len + 1) * sizeof(char)); + if (group_marker == NULL) + return (group_marker); + group_marker[*len] = '\0'; + group_marker[0] = '1'; + while (group_marker[i]) + { + group_marker[i] = '0'; + i++; + } + ft_print_next(group_marker, dict); + free(group_marker); + return ("1"); +} diff --git a/finish/rush02/ex00/algo2.c b/finish/rush02/ex00/algo2.c new file mode 100644 index 0000000..7d7b997 --- /dev/null +++ b/finish/rush02/ex00/algo2.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algo2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/30 20:14:14 by ttrave #+# #+# */ +/* Updated: 2023/07/30 20:28:15 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +void ft_print_next(char *str, char **dict) +{ + while (*dict != NULL) + { + if (ft_strcmp(str, *dict) == 0) + { + dict++; + ft_putstr(*dict); + return ; + } + dict += 2; + } +} diff --git a/finish/rush02/ex00/be.dict b/finish/rush02/ex00/be.dict new file mode 100644 index 0000000..a8f75ae --- /dev/null +++ b/finish/rush02/ex00/be.dict @@ -0,0 +1,29 @@ +0: zéro +1: un +2: deux +3: trois +4: quatre +5: cinq +6: six +7: sept +8: huit +9: neuf +10: dix +11: onze +12: douze +13: treize +14: quatorze +15: quinze +16: seize +20: vingt +30: trente +40: quarante +50: cinquante +60: soixante +70: septante +80: huitante +90: nonante +100: cent +1000: mille +1000000: million +1000000000: milliard diff --git a/finish/rush02/ex00/en.dict b/finish/rush02/ex00/en.dict new file mode 100644 index 0000000..b7459f8 --- /dev/null +++ b/finish/rush02/ex00/en.dict @@ -0,0 +1,32 @@ +19: nineteen +0: zero +1: one +2: two +3: three +18: eighteen +4: four +5: five +6: six +7: seven +8: eight +9: nine +10: ten +11: eleven +12: twelve +13: thirteen +14: fourteen +15: fifteen +16: sixteen +20: twenty +30: thirty +40: forty +50: fifty +60: sixty +70: seventy +80: eighty +90: ninety +100: hundred +1000: thousand +1000000: million +1000000000: billion +17: seventeen diff --git a/finish/rush02/ex00/header.h b/finish/rush02/ex00/header.h new file mode 100644 index 0000000..dab2472 --- /dev/null +++ b/finish/rush02/ex00/header.h @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* header.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/30 16:51:35 by adjoly #+# #+# */ +/* Updated: 2023/07/30 22:36:51 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef HEADER_H +# define HEADER_H + +# include +# include +# include + +typedef unsigned long long int t_ulli; + +void ft_prep_algo(char **dict, char *nbr); +void ft_nbr_to_letters(char **dict, char *nbr, char **spec_tens, t_ulli l); +void ft_print_units(char **dict, char unit, t_ulli *len); +void ft_print_hundreds(char **dict, char *nbr, t_ulli *i, t_ulli len); +void ft_print_tens(char **dict, char **spec_tens, char *nb, t_ulli *i); +char *ft_print_group_marker(char **dict, t_ulli *i); +int ft_marker_and_comma(char **dict, t_ulli i, t_ulli group); + +void ft_print_next(char *str, char **dict); + +char *ft_parse_nbr(char *nbr); + +int ft_calc_part_len(char *str, int mode); +int ft_copy_nb(char *res, char *file, int k); +int ft_copy_value(char *res, char *file, int k); +int ft_fill_dict(char **res, char *file, int i, int k); +char **ft_parse_dict(char *filename); + +char *ft_read_file(char *filename); +int ft_count_parts(char *file); +int ft_error(char **res, char *file, int i); + +char **ft_malloc_spec_tens(char **dict); +char **ft_fill_spec_tens(char **dict); +int ft_is_spec_ten(char **spec_tens, char *nb); + +t_ulli ft_strlen(char *str); +void ft_putchar(char charac); +void ft_putstr(char *str); +int ft_strcmp(char *s1, char *s2); +char *ft_strndup(char *src, t_ulli n); + +void ft_free_n_arr_arr(char **arr, t_ulli n); +void ft_free_arr_arr(char **arr); +int ft_number_is_printable(char *number, char **dict); +char *ft_cat(char ten, char unit); + +#endif diff --git a/finish/rush02/ex00/lib.c b/finish/rush02/ex00/lib.c new file mode 100644 index 0000000..ebe96e5 --- /dev/null +++ b/finish/rush02/ex00/lib.c @@ -0,0 +1,75 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/29 12:52:50 by adjoly #+# #+# */ +/* Updated: 2023/07/30 20:02:25 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +t_ulli ft_strlen(char *str) +{ + t_ulli i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +void ft_putchar(char charac) +{ + write(1, &charac, 1); +} + +void ft_putstr(char *str) +{ + t_ulli i; + + i = 0; + while (str[i]) + { + ft_putchar(str[i]); + i++; + } +} + +int ft_strcmp(char *s1, char *s2) +{ + t_ulli i; + + i = 0; + while (s1[i] || s2[i]) + { + if (s1[i] != s2[i]) + return (s1[i] - s2[i]); + i++; + } + return (s1[i] - s2[i]); +} + +char *ft_strndup(char *src, t_ulli n) +{ + char *res; + t_ulli len; + t_ulli i; + + len = ft_strlen(src); + i = 0; + res = malloc((len + 1) + sizeof(char)); + if (res) + { + while (src[i] && i < n) + { + res[i] = src[i]; + i++; + } + res[i] = 0; + } + return (res); +} diff --git a/finish/rush02/ex00/lib2.c b/finish/rush02/ex00/lib2.c new file mode 100644 index 0000000..fbd2384 --- /dev/null +++ b/finish/rush02/ex00/lib2.c @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/30 16:46:55 by ttrave #+# #+# */ +/* Updated: 2023/07/30 20:41:52 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +void ft_free_n_arr_arr(char **arr, t_ulli n) +{ + t_ulli i; + + i = 0; + while (i < n) + { + free(arr[i]); + i++; + } + free(arr); +} + +void ft_free_arr_arr(char **arr) +{ + t_ulli i; + + i = 0; + while (arr[i]) + { + free(arr[i]); + i++; + } + free(arr); +} + +int ft_number_is_printable(char *number, char **dict) +{ + t_ulli i; + t_ulli len; + + len = 0; + i = 0; + while (dict[i]) + { + if (len < ft_strlen(dict[i])) + len = ft_strlen(dict[i]); + i += 2; + } + if (ft_strlen(number) > len + 2) + return (0); + return (1); +} + +char *ft_cat(char ten, char unit) +{ + char *res; + + res = malloc(3 * sizeof(int)); + if (!res) + return (0); + res[0] = ten; + res[1] = unit; + res[2] = 0; + return (res); +} diff --git a/finish/rush02/ex00/lol.dict b/finish/rush02/ex00/lol.dict new file mode 100644 index 0000000..76d0b5b --- /dev/null +++ b/finish/rush02/ex00/lol.dict @@ -0,0 +1,62 @@ +0: zero +1: one +2: two +3: three +4: four +5: five +6: six +7: seven +8: eight +9: nine +10: ten +11: eleven +12: twelve +13: thirteen +14: fourteen +15: fifteen +16: sixteen +17: seventeen +18: eighteen +19: nineteen +20: twenty +30: thirty +40: forty +50: fifty +60: sixty +70: seventy +80: eighty +90: ninety +100: hundred +1000: thousand +1000000: million +1000000000: billion +1000000000000: quadrillion +1000000000000000: quintrillion +1000000000000000000: sextillion +1000000000000000000000: septillion +1000000000000000000000000: octillion +1000000000000000000000000000: nonillion +1000000000000000000000000000000: decillion +1000000000000000000000000000000000: undecillion +1000000000000000000000000000000000000: duodecillion +1000000000000000000000000000000000000000: tredecillion +1000000000000000000000000000000000000000000: quatuordecillion +1000000000000000000000000000000000000000000000: quindecillion +1000000000000000000000000000000000000000000000000: sexdecillion +1000000000000000000000000000000000000000000000000000: septemdecillion +1000000000000000000000000000000000000000000000000000000: octodecillion +1000000000000000000000000000000000000000000000000000000000: novemdecillion +1000000000000000000000000000000000000000000000000000000000000: vigintillion +1000000000000000000000000000000000000000000000000000000000000000: unvigintillion +1000000000000000000000000000000000000000000000000000000000000000000: duovigintillion +1000000000000000000000000000000000000000000000000000000000000000000000: trevigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000: quatuorvigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000: quinvigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000: sexvigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000: septvigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000: octovigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: nonvigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: trigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: untrigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: duotrigintillion +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: googol diff --git a/finish/rush02/ex00/main.c b/finish/rush02/ex00/main.c new file mode 100644 index 0000000..74424e5 --- /dev/null +++ b/finish/rush02/ex00/main.c @@ -0,0 +1,118 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tomoron +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/30 12:35:34 by tomoron #+# #+# */ +/* Updated: 2023/07/30 22:40:03 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include "header.h" + +char *ft_parse_nbr(char *nbr) +{ + char *res; + int i; + int j; + int len; + int sign; + + i = 0; + sign = 1; + while (nbr[i] == '-' || nbr[i] == '+') + { + if (nbr[i] == '-') + sign *= -1; + nbr++; + } + len = 0; + while (nbr[i + len] >= '0' && nbr[i + len] <= '9') + len ++; + res = malloc((len + 1) * sizeof(char)); + j = 0; + while (res && nbr[i] >= '0' && nbr[i] <= '9') + res[j++] = nbr[i++]; + if (res) + res[j] = 0; + return (res); +} + +void ft_pre_prep_algo(char *filename, char *nbr) +{ + char **dict; + char *number; + + dict = ft_parse_dict(filename); + if (!dict) + { + ft_putstr("Dict Error\n"); + return ; + } + number = ft_parse_nbr(nbr); + if (number && !ft_number_is_printable(number, dict)) + { + ft_free_arr_arr(dict); + if (number) + free(number); + return ; + } + ft_prep_algo(dict, number); + ft_free_arr_arr(dict); + free(number); +} + +char *ft_realloc(char c, char *str) +{ + t_ulli len; + t_ulli i; + char *new_str; + + len = ft_strlen(str); + i = 0; + new_str = malloc((len + 2) * sizeof(char)); + while (i < len) + { + new_str[i] = str[i]; + i++; + } + new_str[i] = c; + new_str[i + 1] = 0; + free(str); + return (new_str); +} + +void stdin_mode(char *filename) +{ + char c; + char *str; + + str = malloc(1 * sizeof(char)); + str[0] = 0; + while (read(0, &c, 1)) + { + if (c != '\n') + str = ft_realloc(c, str); + else + { + ft_pre_prep_algo(filename, str); + free(str); + str = malloc(1 * sizeof(char)); + str[0] = 0; + } + } +} + +int main(int argc, char **argv) +{ + char *filename; + + filename = "en.dict"; + if (argc <= 1) + stdin_mode(filename); + else if (argc == 2) + ft_pre_prep_algo(filename, argv[1]); + else if (argc == 3) + ft_pre_prep_algo(argv[1], argv[2]); +} diff --git a/finish/rush02/ex00/parse.c b/finish/rush02/ex00/parse.c new file mode 100644 index 0000000..da28756 --- /dev/null +++ b/finish/rush02/ex00/parse.c @@ -0,0 +1,153 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tomoron +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/29 11:14:01 by tomoron #+# #+# */ +/* Updated: 2023/07/30 20:22:03 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +int ft_calc_part_len(char *str, int mode) +{ + int res; + + res = 0; + if (mode == 1) + { + while (*str >= '0' && *str <= '9') + { + res++; + str++; + } + } + if (mode == 2) + { + while (*str >= 32 && *str <= 126) + { + res++; + while (*str == ' ') + str++; + str++; + } + } + return (res + 1); +} + +int ft_copy_nb(char *res, char *file, int k) +{ + int j; + + j = 0; + while (file[k] >= '0' && file[k] <= '9') + { + res[j] = file[k]; + k++; + j++; + } + res[j] = 0; + while (file[k] == ' ') + k++; + if (file[k] != ':' || j == 0) + return (0); + k++; + while (file[k] == ' ') + k++; + return (k); +} + +int ft_copy_value(char *res, char *file, int k) +{ + int j; + + j = 0; + while (file[k] >= 32 && file[k] <= 126) + { + res[j] = file[k]; + if (file[k] == ' ') + { + while (file[k] == ' ') + k++; + if (file[k] == '\0' || file[k] == '\n') + j--; + k--; + } + k++; + j++; + } + res[j] = 0; + if ((file[k] != '\n' && file[k] != '\0') || j == 0) + return (0); + while (file[k] == '\n') + k++; + return (k); +} + +int ft_fill_dict(char **res, char *file, int i, int k) +{ + while (file[k] == ' ') + k++; + res[i] = malloc(ft_calc_part_len(file + k, 1) * sizeof(char)); + if (!res[i]) + return (ft_error(res, file, i - 1)); + k = ft_copy_nb(res[i], file, k); + if (!k) + return (ft_error(res, file, i)); + i++; + res[i] = malloc(ft_calc_part_len(file + k, 2) * sizeof(char)); + if (!res[i]) + return (ft_error(res, file, i - 1)); + k = ft_copy_value(res[i], file, k); + if (!k) + return (ft_error(res, file, i)); + return (k); +} + +char **ft_parse_dict(char *filename) +{ + char **res; + char *file; + int i; + int k; + + file = ft_read_file(filename); + if (!file) + return (0); + res = malloc(ft_count_parts(file) * sizeof(char *)); + if (!res) + return (0); + k = 0; + while (file[k] == '\n') + k++; + i = 0; + while (file[k]) + { + k = ft_fill_dict(res, file, i, k); + if (!k) + return (0); + i += 2; + } + res[i] = 0; + free(file); + return (res); +} + +/*int main(void) +{ + char **test; + int i; + + i = 0; + test = ft_parse_dict("lol.dict"); + while (test && test[i]) + { + printf("%s, ", test[i]); + fflush(stdout); + i++; + } + return (0); +}*/ diff --git a/finish/rush02/ex00/parse2.c b/finish/rush02/ex00/parse2.c new file mode 100644 index 0000000..5b6b727 --- /dev/null +++ b/finish/rush02/ex00/parse2.c @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tomoron +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/29 17:38:13 by tomoron #+# #+# */ +/* Updated: 2023/07/30 22:09:51 by tomoron ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +char *ft_read_file(char *filename) +{ + char c; + int file; + int len; + char *res; + int i; + + i = 0; + file = open(filename, O_RDONLY); + len = 0; + if (file == -1) + return (0); + while (read(file, &c, 1)) + len++; + close(file); + res = malloc((len + 1) * sizeof(char)); + file = open(filename, O_RDONLY); + if (file == -1 || !res) + return (0); + while (read(file, &c, 1)) + res[i++] = c; + res[i] = 0; + close(file); + return (res); +} + +int ft_count_parts(char *file) +{ + int res; + int sem_found; + + res = 0; + while (*file == '\n') + file++; + while (*file) + { + sem_found = 0; + while (*file != '\n' && *file) + { + file++; + if (!sem_found && *file == ':') + { + sem_found = 1; + res++; + } + } + res++; + while (*file == '\n') + file++; + } + return (res + 1); +} + +int ft_error(char **res, char *file, int i) +{ + while (i >= 0) + { + free(res[i]); + i--; + } + free(res); + free(file); + return (0); +} diff --git a/finish/rush02/ex00/special_tens.c b/finish/rush02/ex00/special_tens.c new file mode 100644 index 0000000..b5f79c8 --- /dev/null +++ b/finish/rush02/ex00/special_tens.c @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* special_tens.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ttrave +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/29 12:29:42 by ttrave #+# #+# */ +/* Updated: 2023/07/30 21:52:07 by ttrave ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "header.h" + +char **ft_malloc_spec_tens(char **dict) +{ + char **spec_tens; + t_ulli i; + t_ulli size; + + size = 0; + i = 0; + while (dict[i]) + { + if (dict[i][0] == '1' && dict[i][1] >= '0' && dict[i][1] <= '9' + && ft_strlen(dict[i]) == 2) + size++; + i++; + } + spec_tens = malloc((size + 1) * sizeof(char *)); + if (spec_tens != NULL) + spec_tens[size] = NULL; + return (spec_tens); +} + +char **ft_fill_spec_tens(char **dict) +{ + char **spec_tens; + t_ulli i; + t_ulli j; + + i = -1; + j = 0; + spec_tens = ft_malloc_spec_tens(dict); + if (spec_tens == NULL) + return (spec_tens); + while (dict[++i]) + { + if (dict[i][0] == '1' && dict[i][1] >= '0' && dict[i][1] <= '9' + && ft_strlen(dict[i]) == 2) + { + spec_tens[j] = malloc(2 * sizeof(char)); + if (spec_tens[j] == NULL) + { + ft_free_n_arr_arr(spec_tens, j + 1); + return (NULL); + } + spec_tens[j] = dict[i]; + j++; + } + } + return (spec_tens); +} + +int ft_is_spec_ten(char **spec_tens, char *nb) +{ + t_ulli i; + + i = 0; + while (spec_tens[i]) + { + if (ft_strcmp(spec_tens[i], nb) == 0) + return (0); + i++; + } + return (1); +} diff --git a/finish/shell00/ex00/z b/finish/shell00/ex00/z new file mode 100644 index 0000000..e900b1c --- /dev/null +++ b/finish/shell00/ex00/z @@ -0,0 +1 @@ +Z diff --git a/finish/shell00/ex01/testShell00.tar b/finish/shell00/ex01/testShell00.tar new file mode 100644 index 0000000000000000000000000000000000000000..bb83b2efbaef2d3cbfbe92f7589027a327150ffe GIT binary patch literal 10240 zcmeIvK?=e!5QX8aJw=c3CP~wScmOFF6p0pWyYTi_s8G6b)kWoho0%}1nJ+``hvPMu zBDt-iDY34df|A9?NhWJPbxtj3F^1$#e(Gf*$y~MFMvF_werTUn<=XSDE3d_1)q44G zY9E(wEcu>S!~H(LU+|+I_In|lBY*$`2q1s}0tg_000IagfB*srAbMDS@ibBg_#|6<&=t_4GWNMy&r#^jKg)L z=M=hVT9qwProvhi5ffK`K2~DYT)5<-nuw){rOraDT7uuMWB=K8segUDoWIsH3Q2zH zKTen1d3Ybzzx!uz#z}t;uGv+tJn6cszb^V$u}ZGLX-*vl*Yy+r;QCL}Jhi}#9Q!2T z{Vxst-)O7I&=|CZ7J!K%#RG5s~cyxSz+|Iz2{-~a#j`S1S!&*t+Vw-`mMvV!h-+^fB*=900@8p2!H?x TfB*=900@8p2!H?x{2_sF7jm4` literal 0 HcmV?d00001 diff --git a/finish/shell00/ex02/test1 b/finish/shell00/ex02/test1 new file mode 100755 index 0000000..8f087a3 --- /dev/null +++ b/finish/shell00/ex02/test1 @@ -0,0 +1 @@ +000 diff --git a/finish/shell00/ex02/test3 b/finish/shell00/ex02/test3 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/finish/shell00/ex02/test3 @@ -0,0 +1 @@ + diff --git a/finish/shell00/ex02/test4 b/finish/shell00/ex02/test4 new file mode 100644 index 0000000..573541a --- /dev/null +++ b/finish/shell00/ex02/test4 @@ -0,0 +1 @@ +0 diff --git a/finish/shell00/ex02/test5 b/finish/shell00/ex02/test5 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/finish/shell00/ex02/test5 @@ -0,0 +1 @@ + diff --git a/finish/shell00/ex02/test6 b/finish/shell00/ex02/test6 new file mode 120000 index 0000000..a39c44c --- /dev/null +++ b/finish/shell00/ex02/test6 @@ -0,0 +1 @@ +test0 \ No newline at end of file diff --git a/finish/shell00/ex03/id_rsa_pub b/finish/shell00/ex03/id_rsa_pub new file mode 100644 index 0000000..e82c281 --- /dev/null +++ b/finish/shell00/ex03/id_rsa_pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDER2GObbWsRTVVskOYu+R4K1EOV08BRBXo31ppEmr50/g/09ehcRCqiMeZ15wPbbh/itEU1/t0OmBSNiVD+SQ4MSOZcB/cjUKOiTtUaN/2ymPf2XxnmVO07sj8vK0H+wVpsYV2oucDabxd1sMhqIrR16xpWjN7S6fbOufSEB0763LR6DlFRz0XpTjHSO6Z8NnEUXS+E78uV5pM0VbC5rbAolGhuREBD1/A6wslU/4IMuOPnaRb/5izoCp8kzd/bNIwnpKLDUc8OE+xopNKOViabJtJnmrCtlhh5+Wk6Qx4ExOx2i99thPDFsjN6v77UObu03jalWiP+MmccYKltgGXuObCXnl6f9fgrhT8sOKL29971ZgaiTAG/nhV3Bin2Sa0g9aLvM4ayBw/ogT8A9iViYYA+tFrvfzMdPhhmBv/X25yiEahOPkgbazSwqJMPQY0YU9gKsMkUQUdoj7AK80QpWKpYUrYzBefBeiXtHmTN5bpCv5S2AO41f6C7pifmUs= adjoly@2E2.42angouleme.fr diff --git a/finish/shell00/ex04/midLS b/finish/shell00/ex04/midLS new file mode 100644 index 0000000..f283a2f --- /dev/null +++ b/finish/shell00/ex04/midLS @@ -0,0 +1 @@ +ls -mFt diff --git a/finish/shell00/ex05/git_commit.sh b/finish/shell00/ex05/git_commit.sh new file mode 100644 index 0000000..cab2a6b --- /dev/null +++ b/finish/shell00/ex05/git_commit.sh @@ -0,0 +1,2 @@ +#!/bin/sh +git log -5 --format=%H diff --git a/finish/shell00/ex06/git_ignore.sh b/finish/shell00/ex06/git_ignore.sh new file mode 100644 index 0000000..616df12 --- /dev/null +++ b/finish/shell00/ex06/git_ignore.sh @@ -0,0 +1,2 @@ +#!/bin/sh +git ls-files -io --exclude-standard diff --git a/finish/shell00/ex07/b b/finish/shell00/ex07/b new file mode 100644 index 0000000..c2dab24 --- /dev/null +++ b/finish/shell00/ex07/b @@ -0,0 +1,11 @@ +Episode V, A NEW H0PE It is a period of civil war +Rebel spaceships, striking from a hidden base, have won their first victory against the evil Galactic Empire. +During the battle, Rebel spies managed to steal secret plans to the Empire's ultimate weapon, the STAR DEATH, an armored space station with enough power to destroy an entire planet. + + +Pursued by the Empire's sinister agents, +Princess Mehdi races home aboard her starship, custodian of the stolen plans that can save her people and restore the dictatorship to the galaxie.. + + + + diff --git a/finish/shell00/ex08/clean b/finish/shell00/ex08/clean new file mode 100644 index 0000000..60ceb32 --- /dev/null +++ b/finish/shell00/ex08/clean @@ -0,0 +1 @@ +find . -type f \( -name "*~" -or -name "#*#" \) -print -delete diff --git a/finish/shell00/ex09/ft_magic b/finish/shell00/ex09/ft_magic new file mode 100644 index 0000000..42b581f --- /dev/null +++ b/finish/shell00/ex09/ft_magic @@ -0,0 +1 @@ +41 string 42 42 file diff --git a/finish/shell01/ex01/print_groups.sh b/finish/shell01/ex01/print_groups.sh new file mode 100644 index 0000000..51ff535 --- /dev/null +++ b/finish/shell01/ex01/print_groups.sh @@ -0,0 +1,2 @@ +#!/bin/sh +id -nG $FT_USER | tr ' ' ',' | tr -d '\n' diff --git a/finish/shell01/ex02/find_sh.sh b/finish/shell01/ex02/find_sh.sh new file mode 100644 index 0000000..de5d991 --- /dev/null +++ b/finish/shell01/ex02/find_sh.sh @@ -0,0 +1,2 @@ +#!/bin/sh +find -type f -name "*.sh" -exec basename {} .sh \; diff --git a/finish/shell01/ex03/count_files.sh b/finish/shell01/ex03/count_files.sh new file mode 100644 index 0000000..c17e95c --- /dev/null +++ b/finish/shell01/ex03/count_files.sh @@ -0,0 +1,2 @@ +#!/bin/sh +find . -type f,d | wc -l diff --git a/finish/shell01/ex04/MAC.sh b/finish/shell01/ex04/MAC.sh new file mode 100644 index 0000000..1f9aa47 --- /dev/null +++ b/finish/shell01/ex04/MAC.sh @@ -0,0 +1 @@ +ifconfig | grep ether | awk '{print $2;}' diff --git "a/finish/shell01/ex05/\"\\?$*'MaRViN'*$?\\\"" "b/finish/shell01/ex05/\"\\?$*'MaRViN'*$?\\\"" new file mode 100644 index 0000000..f70d7bb --- /dev/null +++ "b/finish/shell01/ex05/\"\\?$*'MaRViN'*$?\\\"" @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/finish/shell01/ex06/skip.sh b/finish/shell01/ex06/skip.sh new file mode 100644 index 0000000..bde930c --- /dev/null +++ b/finish/shell01/ex06/skip.sh @@ -0,0 +1 @@ +ls -l | sed -n {1~2p}