From 64464522f0fb3c272e3acc21f62d95be31105e07 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Mon, 22 Apr 2019 13:08:58 +0200 Subject: [PATCH] test_big_map sans utiliser un compteur j pour le tableau d'int --- .test_big_map.c.swp | Bin 0 -> 12288 bytes add_to_list.c | 45 +++++++++++++++++++++++++++++++++++++++++++- test_big_map.c | 44 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 .test_big_map.c.swp diff --git a/.test_big_map.c.swp b/.test_big_map.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..ac425e4fbfe93d4f30fdb2ccd33d22fe3f883f90 GIT binary patch literal 12288 zcmeI2O^6&t6vr!~CZmZ71`(o%mkr7G>`rE;rl%*fX0x6|JctIO2+6wi_SEduPEU8I zKQ_iSdJzu+uU-T(AYOwCib%YP2L%x?qT&bMB!UMIq8I;F-Sf3s7Xn@us>zS;eqA5$ z{oku9mdtAX*(aW)Q`IKJb%?Rew{Kjy{=h!=aeWW#WxhMOtUl~~iAKB-@m96jsCMHW zn!cP5SnGyaoL){Zg|)h~(v`k1(^@K$bY)eptqk0#>g_Oy`D7F@3f#T|S=v3>KEUh- zudB|-W{%R~`=7b}aZC@RfKk9GU=%P47zK<1MggOMQDE09kVbphEAak~B7*0N`<^ZL z;?>-Y0!9I&fKk9GU=%P47zK<1MggOMQNSo*6xf9dxE;p6xr?!<_QHAm|Nrps|KATX zb`yLJz5<_u8{j&42V4UipbvVW3j}x^JO-M;2FJk>@F2K(A7j6OAHfgcd+;rI9h?Ja z!PB4t>fksy0uF*Z!5;@0`x*QMJ_PTAx4;|VMQ{oHv!Agqz~|rt@FutlUIT}~Uhvz! zjC}__1Mh)r;2byu7C;R=1pd5-v0uTL;1lo>cojShu9h&@KE~b$J#ZN82PLo<+ztMQ zrhkDxSO?F8vp{RT3v0!=Y!omG7zK<1|E0i{E36cYG>ZeW>gCg{q<+?B;U{f)W~D4h z+PGZSZET(!^Oj19QmwXS zKwjVO!n`s_L@dY`7*Pxat;&=-ZjfNQq+g6Q-E}zBc5`FE;peGNI}en{wvKRO;boEb z$E6L|7gyeii6V3oa5)u}pgkf<-Bn+>8Fgl%dzoC-G71x! z$}mvl@xq-g5__=_F=c@co!kxKsTW@KkHtVL&m!OT1Z8Rjag~B^R?<7g|?Hq$=ESFc5(!Zp~Roco0B^qbp-W#EFU{pO!4B)KMQ* zzHp2DOnFg!#n44w5rAsp(wdujJyFi*>AJ9`_+@B-fQK{S?uWse5@~&&mO!K$R!6(oZM} zgOqgNRH9-M%&|2{{f^(triosl!^Jfmr_gTF{UYk^gGRi{(%^-|{WFsrP5SbvWb47PMj|U1=y~-2*+h970K7%>tj%#2-IS zSl7o^sm_g!P+A>a(xf+|B!>)i0B+fUiHP55zpLgdQRJG<-!wib5YQm_o z>gb6Sn`So*JiRjxbsX-1YM)I|ildDv-yUZ1eX7`4ZEk$1;RwSSfG|o{=s^dpR9U7+ zk;;7c;4@`wI&RAGJDE8nnFJ*?N%ESd@HW=9^Ex!1Z(!$Ls&-iH(4!vw4dr adfBMl4&68=1JBPof) +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/14 15:20:53 by hulamy #+# #+# */ -/* Updated: 2019/04/19 23:02:00 by hulamy ### ########.fr */ +/* Updated: 2019/04/21 13:42:46 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -80,9 +80,51 @@ int add_to_list(char *line, t_fillist **list) return (1); } +void print_test(int octet) +{ + unsigned int i; + + i = 1 << 31; + while (i) + { + (octet & i) ? printf("1") : printf("0"); + i >>= 1; + } +} + +void test(unsigned int map[]) +{ + int i; + int j; + int k; + int l; + unsigned int mask; + + mask = map[9]; + + i = -1; + j = 9; + while (j >= 0) + { + if (!(++i % 32) && j-- && (k = -1)) + { + while (++k < 10) + print_test(map[k]); + printf("\n"); + } + l = 0; + while (l++ < 320 - 32 - i) + printf(" "); + print_test(mask); + printf("\n"); + mask = (mask >> 1) | (((1 << (i % 32)) & map[j]) << (31 - (i % 32))); + } +} + int main(int ac, char **av) { static t_fillist *list = NULL; // avant d'appeller add_to_list il faut declarer un pointeur static vers la structure + unsigned int map[10] = {1568713153, 817645681, 654186132, 538171355, 1718453135, 551286515, 1631843343, 3413834313, 1155555555, 999999999}; int i; if (ac > 1) @@ -96,6 +138,7 @@ int main(int ac, char **av) list = list->next; } } + test(map); return (0); } diff --git a/test_big_map.c b/test_big_map.c index 8e15877..1e3d96f 100644 --- a/test_big_map.c +++ b/test_big_map.c @@ -12,6 +12,18 @@ void print_bits(int octet) } } +void print_short(short octet) +{ + unsigned int i; + + i = 1 << 15; + while (i) + { + (octet & i) ? printf("1") : printf("0"); + i >>= 1; + } +} + /* ** cette fonction affiche un mask qui se decale le long d'un tableau d'int ** lancer avec gcc test_big_map.c puis ./a.out pour voir @@ -24,32 +36,52 @@ void test(unsigned int map[]) int k; int l; unsigned int mask; + short tetri; + tetri = (1 << 4) | (1 << 5) | (1 << 6); mask = map[9]; - - i = -1; + i = 0; j = 9; - while (j >= 0) + while ((9 - (i / 32)) > 0) { - if (!(++i % 32) && j-- && (k = -1)) + // a chaque fois que mask s'est decale jusqu'au int precedant du tableau, le if suivant reaffiche le tableau en une ligne + if (!(i % 32) && (10 - (i / 32)) && (k = -1)) { while (++k < 10) print_bits(map[k]); printf("\n"); } + // imprime le bon nombre d'espaces pour que le mask s'imprime pile sous le tableau d'int a la position ou il en est l = 0; while (l++ < 320 - 32 - i) printf(" "); + // imprime le mask print_bits(mask); printf("\n"); - mask = (mask >> 1) | (((1 << (i % 32)) & map[j]) << (31 - (i % 32))); + // compare le mask (int) avec le short et l'imprime s'ils sont compatibles + if (!(tetri & mask)) + { + l = 0; + printf(">>>>>"); + while (l++ < 320 - 32 + 16 - i - 5) + printf(" "); + print_short(tetri); + printf("\n"); + } + // fait tourner le mask le long du tableau d'int + // (mask >> 1) decale le mask vers la droite (perd le bit le plus a droite et insere un bit a gauche) + // (1 << (i % 32)) creer un mask avec un 1 a la premiere place a droite, puis a la deuxieme, puis la troisieme, etc.. jusqu'a 32, et recommence + // (0000000000000010000000 & map[j]) recupere la valeur du bit de map[j] (qui est la map precedante sur le tableau d'int) a la position du 1 + // (0000000000000010000000 << (31 - (i % 32))) = 100000000000000000000 + // (mask >> 1) | 1000000000000000000000 = insere le 32eme bit dans mask + mask = (mask >> 1) | (((1 << (i % 32)) & map[(8 - (i / 32))]) << (31 - (i % 32))); + i++; } } int main() { unsigned int map[10] = {1568713153, 817645681, 654186132, 538171355, 1718453135, 551286515, 1631843343, 3413834313, 1155555555, 999999999}; - int i = 0; test(map); return (0);