I think It work

This commit is contained in:
Camille Chauvet 2022-11-30 13:21:32 +01:00
parent f4bd2c9432
commit 36a1e52502
30 changed files with 144 additions and 41 deletions

View File

@ -6,11 +6,11 @@
# By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ # # By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2022/11/28 16:34:37 by cchauvet #+# #+# # # Created: 2022/11/28 16:34:37 by cchauvet #+# #+# #
# Updated: 2022/11/28 17:17:40 by cchauvet ### ########.fr # # Updated: 2022/11/29 16:23:42 by cchauvet ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
SRCS = ft_swap.c ft_putstr.c ft_p.c ft_sort.c ft_tablen.c ft_get_max.c ft_get_min.c main.c ft_atoi.c ft_bit_finder.c ft_radix.c ft_isnum.c ft_get_bit_max.c ft_r.c SRCS = ft_swap.c ft_putstr.c ft_p.c ft_sort.c ft_tablen.c ft_get_max.c ft_get_min.c main.c ft_atoi.c ft_bit_finder.c ft_radix.c ft_isnum.c ft_get_bit_max.c ft_r.c ft_is_sorted.c ft_get_bit_min.c
OBJS = ${SRCS:.c=.o} OBJS = ${SRCS:.c=.o}

BIN
a.out Executable file

Binary file not shown.

BIN
ft_atoi.o Normal file

Binary file not shown.

View File

@ -6,18 +6,29 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/23 17:31:10 by cchauvet #+# #+# */ /* Created: 2022/11/23 17:31:10 by cchauvet #+# #+# */
/* Updated: 2022/11/23 18:35:41 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 15:06:00 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "pushswap.h" #include "pushswap.h"
int ft_bit_finder(int big, int tofind) int ft_bit_finder_left(int big, int tofind)
{ {
int i; int i;
i = (int) sizeof(int) * 8 - 1; i = (int) sizeof(int) * 8 - 1;
while (i > 0 && ((big >> i) & 1) != tofind) while (i != 0 && ((big >> i) & 1) != tofind)
i--; i--;
return (sizeof(int) * 8 - i - 1); return (sizeof(int) * 8 - i - 1);
} }
int ft_bit_finder_right(int big, int tofind)
{
int i;
i = 0;
while (i != ((int) sizeof(int) * 8 - 1) && ((big << i) & 1) != tofind)
i++;
return (i);
}

BIN
ft_bit_finder.o Normal file

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/28 16:22:14 by cchauvet #+# #+# */ /* Created: 2022/11/28 16:22:14 by cchauvet #+# #+# */
/* Updated: 2022/11/28 17:56:32 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 15:10:54 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -23,7 +23,7 @@ int ft_get_bit_max(int *tab)
i = 1; i = 1;
while (tab[i] != -1) while (tab[i] != -1)
{ {
if (ft_bit_finder(tab[i], 1) < ft_bit_finder(max, 1)) if (ft_bit_finder_left(tab[i], 1) > ft_bit_finder_left(max, 1))
max = tab[i]; max = tab[i];
i++; i++;
} }

BIN
ft_get_bit_max.o Normal file

Binary file not shown.

31
ft_get_bit_min.c Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_get_bit_min.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/28 16:22:14 by cchauvet #+# #+# */
/* Updated: 2022/11/29 15:10:03 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
#include "pushswap.h"
int ft_get_bit_min(int *tab)
{
int i;
int min;
if (tab[0] == -1)
return (INT_MIN);
min = tab[0];
i = 1;
while (tab[i] != -1)
{
if (ft_bit_finder_right(tab[i], 1) < ft_bit_finder_right(min, 1))
min = tab[i];
i++;
}
return (min);
}

BIN
ft_get_bit_min.o Normal file

Binary file not shown.

BIN
ft_get_max.o Normal file

Binary file not shown.

BIN
ft_get_min.o Normal file

Binary file not shown.

34
ft_is_sorted.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_is_sorted.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/29 14:41:08 by cchauvet #+# #+# */
/* Updated: 2022/11/29 19:02:34 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
#include "pushswap.h"
int ft_is_sorted(int *in)
{
unsigned int *tab;
unsigned int prev;
unsigned int i;
int shift;
shift = ft_bit_finder_right(ft_get_bit_min(in), 1) - 1;
tab = (unsigned int *) in;
prev = tab[0];
i = 1;
while (in[i] != -1)
{
if (tab[i] >> shift != (prev >> shift) - 1)
return (0);
prev = tab[i];
i++;
}
return (1);
}

BIN
ft_is_sorted.o Normal file

Binary file not shown.

BIN
ft_isnum.o Normal file

Binary file not shown.

10
ft_p.c
View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/09 16:38:34 by cchauvet #+# #+# */ /* Created: 2022/11/09 16:38:34 by cchauvet #+# #+# */
/* Updated: 2022/11/28 18:15:41 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 18:13:28 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -28,12 +28,12 @@ void ft_p(int *tab_src, int *tab_dst)
void ft_pb(int *tab_a, int *tab_b) void ft_pb(int *tab_a, int *tab_b)
{ {
ft_p(tab_b, tab_a); ft_p(tab_a, tab_b);
ft_putstr("pb"); ft_putstr("pb\n");
} }
void ft_pa(int *tab_a, int *tab_b) void ft_pa(int *tab_a, int *tab_b)
{ {
ft_p(tab_a, tab_b); ft_p(tab_b, tab_a);
ft_putstr("pa"); ft_putstr("pa\n");
} }

BIN
ft_p.o Normal file

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/08 18:24:45 by cchauvet #+# #+# */ /* Created: 2022/11/08 18:24:45 by cchauvet #+# #+# */
/* Updated: 2022/11/08 18:26:33 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 14:38:32 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

BIN
ft_putstr.o Normal file

Binary file not shown.

6
ft_r.c
View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/28 16:50:03 by cchauvet #+# #+# */ /* Created: 2022/11/28 16:50:03 by cchauvet #+# #+# */
/* Updated: 2022/11/28 17:13:21 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 14:39:23 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -26,12 +26,12 @@ static void ft_r(int *tab)
void ft_ra(int *tab) void ft_ra(int *tab)
{ {
ft_putstr("ra");
ft_r(tab); ft_r(tab);
ft_putstr("ra\n");
} }
void ft_rb(int *tab) void ft_rb(int *tab)
{ {
ft_putstr("rb");
ft_r(tab); ft_r(tab);
ft_putstr("rb\n");
} }

BIN
ft_r.o Normal file

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/15 18:16:31 by cchauvet #+# #+# */ /* Created: 2022/11/15 18:16:31 by cchauvet #+# #+# */
/* Updated: 2022/11/28 16:29:46 by cchauvet ### ########.fr */ /* Updated: 2022/11/30 13:19:13 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -14,20 +14,22 @@
void ft_radix_sort(int *tab_a, int *tab_b) void ft_radix_sort(int *tab_a, int *tab_b)
{ {
int i; int i;
while (ft_bit_finder(ft_get_bit_max(tab_a), 1) != (int) sizeof(int) * 8 - 1) while (!ft_is_sorted(tab_a))
{ {
i = 0; i = ft_tablen(tab_a);
while (i < ft_tablen(tab_a)) while (--i >= 0 && !ft_is_sorted(tab_a))
{ {
if (((tab_a[i] >> (sizeof(int) * 8 - 1)) & 1) == 0) if ((tab_a[i] >> (sizeof(int) * 8 -1) & 1) == 0)
ft_ra(tab_a); ft_pb(tab_a, tab_b);
else else
ft_pa(tab_a, tab_b); ft_ra(tab_a);
i++;
} }
while (0 < ft_tablen(tab_b)) while (tab_b[0] != -1)
ft_pb(tab_b, tab_a); ft_pa(tab_a, tab_b);
i = ft_tablen(tab_a);
while (--i >= 0 && !ft_is_sorted(tab_a))
tab_a[i] = tab_a[i] << 1;
} }
} }

BIN
ft_radix.o Normal file

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/08 19:47:56 by cchauvet #+# #+# */ /* Created: 2022/11/08 19:47:56 by cchauvet #+# #+# */
/* Updated: 2022/11/28 18:08:15 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 16:19:48 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -25,7 +25,7 @@ static int *ft_values_simplifier(int *tab, int size)
free(tab); free(tab);
return (NULL); return (NULL);
} }
shift = ft_bit_finder(size, 1); shift = ft_bit_finder_left(size, 1);
i = 0; i = 0;
while (i < size) while (i < size)
{ {

BIN
ft_sort.o Normal file

Binary file not shown.

BIN
ft_swap.o Normal file

Binary file not shown.

BIN
ft_tablen.o Normal file

Binary file not shown.

BIN
main.o Normal file

Binary file not shown.

BIN
push_swap

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/08 18:19:44 by cchauvet #+# #+# */ /* Created: 2022/11/08 18:19:44 by cchauvet #+# #+# */
/* Updated: 2022/11/28 16:30:39 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 16:22:26 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -27,9 +27,12 @@ int ft_get_min_index(int *tab, int len);
int ft_get_min_index(int *tab, int len); int ft_get_min_index(int *tab, int len);
int ft_tablen(int *tab); int ft_tablen(int *tab);
int ft_is_sorted(int *in);
int ft_bit_finder(int big, int tofind); int ft_bit_finder_left(int big, int tofind);
int ft_bit_finder_right(int big, int tofind);
int ft_get_bit_max(int *tab); int ft_get_bit_max(int *tab);
int ft_get_bit_min(int *tab);
void ft_radix_sort(int *tab_a, int *tab_b); void ft_radix_sort(int *tab_a, int *tab_b);
void ft_swap(int *a, int *b); void ft_swap(int *a, int *b);

42
test.c
View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */ /* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/23 16:43:32 by cchauvet #+# #+# */ /* Created: 2022/11/23 16:43:32 by cchauvet #+# #+# */
/* Updated: 2022/11/28 17:15:24 by cchauvet ### ########.fr */ /* Updated: 2022/11/29 17:11:41 by cchauvet ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -15,16 +15,38 @@
int main() int main()
{ {
int tab[] = {1,2,3,4,-1}; int tab_a[5] = {0,1,2,3,-1};
int tab_b[5] = {-1};
int i; int i;
i = -1; i = 0;
while (tab[++i] != -1) printf("a: ");
printf("%d, ", tab[i]); while (tab_a[i] != -1)
{
printf("%d, ", tab_a[i]);
i++;
}
printf("\nb: ");
i = 0;
while (tab_b[i] != -1)
{
printf("%d, ", tab_b[i]);
i++;
}
printf("\n"); printf("\n");
ft_ra(tab); ft_pa(tab_a, tab_b);
printf("\n"); i = 0;
i = -1; printf("a: ");
while (tab[++i] != -1) while (tab_a[i] != -1)
printf("%d, ", tab[i]); {
printf("%d, ", tab_a[i]);
i++;
}
printf("\nb: ");
i = 0;
while (tab_b[i] != -1)
{
printf("%d, ", tab_b[i]);
i++;
}
} }