From 656973ae524ce3a86de82d369e04a56157abb662 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Sun, 28 Apr 2019 16:24:09 +0200 Subject: [PATCH] ebut implementation de la recursive --- .parse_input.c.swn | Bin 0 -> 16384 bytes parse_input.c | 2 +- search_map.c | 78 +++++++++++++++++++++++++++++++++++++-------- 3 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 .parse_input.c.swn diff --git a/.parse_input.c.swn b/.parse_input.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..0464e426fba93f899daf8fb6c4561971c745dd64 GIT binary patch literal 16384 zcmeI3UyLM09mfk$VSqbSo-{;jcg*hmxt*Dwo%=VpyAX}1r$7vPK6tmTJ>4}obvx5N zc31DQEFM0HBxr*1&BRE2@j;9v0zMdxB>syJ#;6HVc_Sf2UraC&P#^sMs=9jq?A>Jp z_kce*F%#5&Qx? z4;}#_@WB^=2b$mm;C65uco7RRzXLx3Pk|@FH^AfIF_3~ya0Z+PO|S?!_#n6oyZ~SS z3H%W}3w{K?2`+;K^nn1I;FI9vfX2rLnA=LFi+r88PO;J+D_t7Mq2Lw$5yv^XS!E?@ zGI0>85^Wbz(jH432LnH$bR|?G&$U~dNK2KkWWbgAG$d7}+EAtnmhL}$@4ctk9@~j! zSep7^q(WABP1jq6Yn!ZAjl=0!4L3no`l$7BxzrTR}0L zR4L@FRY(4C7zdS9J|yCPrG^4kYz!7Bl2ct&$5aaSXpd>{`C+)FVxxl*KUc#R=QZ8R z!W+4)MsYb3JQ5-l;eJO2iSSW3ye6i7p?!v0;h{)e;;Blq0A3N+N92)}4eiUGB#{yk zW`Wq!DR9+v?h)R0Gnf+2nn{m&h+>sFQ}kg-Gx*K2qWsEXDXpd8o5{afIxl zpIi`G!b-;WK*$RNs#n5ZN!IJw+3CR7c!w`7<+T=VT;i3>t&Fd&@%9P6v4MHRYbaRf z-ZAoqojcSzmBiVOu6*EU3f1y3GYvy!vz>#zb>5lOzA)E$KB?Ag>w2zmKAN&}1(8BA z9{K^=F{6r#X(~mWng;h=@UsBEn>PVza9R|PdWj$*gLtTQ+>!WU&qA+FYqV=f&DnO4 zwj)2?hFt61n{-mA?H727*Xxqh-*5M7mKG{kv{fbl!K=BkJgkvxG9}Sut%*KU4;$kz z3?B?8Gfp^-t#Kj{d1lmOrazdU9*qR=Xq7)~kG;w9@yX$8K4LLZ1kWO_YxQ?T098}& z@sx(GU+4>U!z7jpk!8-&2ugmBW^qqOI+*2#RpLi!KTa@7i^%{h4K5TflcP~-I*1cR zZfsGihtQD+bsGLzl+p|e5m1%x-YM2>&Zg?vmIv}lMAeam0?D~e1lCC?p@tWcgn~DM zLqwr`m~u>ZN|7qXl;08fh)~xX=K%y!eBZTTs)PRY^rq@-)aV!k()2LyV>WU`6p`9U zW3L7jHPKm$t`Ea~cHHRctzFr!>RG*tS#2WCHH)7xrP~K9-O;6s07i{K8}gy6n_w%W zOAjusXz5#ua@zDd&jVIvwT+2ss;5qR$Bg}}jY&Jd?clVN!bUN={H7R0Gb2Zjk=Z0_ z1zm%Ra@tF{=uO4?**w$xBjnY*z4rc~KXZSe{A~(DS}T1s0MB=79X+;;c^YXL8G4}U zSWlNvGK}F7`N{58#s}RP*g--OOJ9`r7)LnSBvxx9?{WG@<1`6l;#q_fGz6xzwg zUU6+PhUiYq3<0_ko4@BG-_MFdg|8svR5+NLiN(a56U;^lQqAvi=+)3_mF)~Nve-;G zKr2+1Q83I9ITmUDO4S%F;wH6*`-SVZaoqpG;C0-r!L#EK_aozUS%V+ZH#<`Xy`$XgbUP=yUWW|sjQr@KIFb{S zl_@x3uQPaCOst)(fO z*5IV<0guSq#3I_6Tek+Mo&y@e!EAQxT~jbWFgt7TU^eDTb-UIij%Y*vTQWFjU;i`) zuh%@mbrA;X`Tqxau74fS^FJQh_4bcD@Qet44!#3o@Bnxpcn>%X{)2Pg$j^O^&Uc$r zz$xGqa0)mDoB~b(r+`zyDc}@v3OEJcZVF&wE){+f47Nu8SidBpB~!gzXI|eF?{Db; zq~mp_eg$BU7qD*ESl*Xpmhz_Gj_DP}BYa7(VWWalX`Em!Y)d3boKzM+O1m!q46V`X zb;l@He8(Tku(3$((aV8&pAu}FS6Sw~6z>jk0=*@|OF?>b>Yc=DAzwb +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/15 14:48:14 by vmanzoni #+# #+# */ -/* Updated: 2019/04/27 22:55:32 by hulamy ### ########.fr */ +/* Updated: 2019/04/28 16:12:31 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/search_map.c b/search_map.c index 4312431..5eaf17b 100644 --- a/search_map.c +++ b/search_map.c @@ -6,12 +6,17 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/27 20:47:22 by hulamy #+# #+# */ -/* Updated: 2019/04/28 01:44:50 by hulamy ### ########.fr */ +/* Updated: 2019/04/28 16:23:19 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ #include "fillit.h" +/* +** DELETE BEFORE EVAL - TEST FUNCTION +** print a int in binary +*/ + void print_bits(unsigned int bits, int size) { unsigned int mask; @@ -26,7 +31,6 @@ void print_bits(unsigned int bits, int size) write(1, "\n", 1); } - /* ** DELETE BEFORE EVAL - TEST FUNCTION ** print a map of height and width @@ -66,6 +70,7 @@ int find_place(unsigned int *tab, t_fillist *list, int size) { tmp = 0; j = list->height * size + i; + // construit un tmp qui est une photo de la map de la taille du tetri a un emplacement donne while (j >= i) { tmp >>= list->width; @@ -75,7 +80,7 @@ int find_place(unsigned int *tab, t_fillist *list, int size) } // print_bits(tmp >> 16, 32); // test pour imprimer la "photo de la map" if (!((tmp >> 16) & list->tetribit)) - return (i + 1); + return ((list->position = i + 1)); if (i % size == size - list->width) i += list->width - 1; i++; @@ -83,13 +88,31 @@ int find_place(unsigned int *tab, t_fillist *list, int size) return (0); } +/* +int fill_map(unsigned int map, t_fillist *list, int size) +{ + if (!list) + return (1); + while (find_place(tab, list, size)) + { + add_to_map(map, list); // to create + if (fill_map(map, size, list->next) + return (1); + remove_from_map(map, list); // to create + list->position++; + } + return (0); +} +*/ + void search_map(t_fillist *list) { - unsigned int tmp; - unsigned int tab[8]; - t_fillist *print; + t_fillist *tmp; + //////////////////////////// TEST //////////////////////////// // ce tableau permet de monter jusqu'a une map de 16*16 + unsigned int print; + unsigned int tab[8]; tab[0] = 2656554334; tab[1] = 1394456818; tab[2] = 1494256918; @@ -99,17 +122,44 @@ void search_map(t_fillist *list) tab[6] = 2154339230; tab[7] = 1576493154; print_map(tab, 10, 10); - print = list; - while (print) + tmp = list; + while (tmp) { // imression pour tests - tmp = print->tetribit; - tmp <<= 16; - print_map(&tmp, print->width, print->height); - ft_putnbrendl(find_place(tab, print, 10)); + print = tmp->tetribit; + print <<= 16; + print_map(&print, tmp->width, tmp->height); + ft_putnbrendl(find_place(tab, tmp, 10)); ft_putchar('\n'); - print = print->next; + tmp = tmp->next; } -// find_place(tab, list, 10); + //////////////////////////// TEST //////////////////////////// + + /* + //////////////////////////// en cours //////////////////////////// + unsigned int *map; + int size; + int i; + + size = 2; + i = 1; + tmp = list; + // trouve le nombre de tetri en parcourant la liste chainee + while ((tmp = tmp->next)) + i++; + // trouve la taille minimale de la map + while (size * size < i * 4) + size++; + // alloue une map de la taille du nombre d'int necesaire pour contenir la taille de la map (size * size) + map = (unsigned int *)malloc(sizeof(*map) * ((size * size) / 32 + 1)); + // lance la recursive fill_map en augmentant la taille de la map tant qu'il n'y a pas de solution + while (!fill_map(map, list, size)) + { + size++; + free(map); + map = (unsigned int *)malloc(sizeof(*map) * ((size * size) / 32 + 1)); + } + //////////////////////////// en cours //////////////////////////// + */ }