mirror of
https://github.com/Ladebeze66/pushswap.git
synced 2025-12-15 13:46:55 +01:00
83 lines
1.8 KiB
C
Executable File
83 lines
1.8 KiB
C
Executable File
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* input_check.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: fgras-ca <marvin@42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2023/07/31 21:05:07 by fgras-ca #+# #+# */
|
|
/* Updated: 2023/07/31 22:01:50 by fgras-ca ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "push_swap.h"
|
|
|
|
static int arg_is_number(char *argv)
|
|
{
|
|
int i;
|
|
|
|
i = 0;
|
|
if (is_sign(argv[i]) && argv[i + 1] != '\0')
|
|
i++;
|
|
while (argv[i] && is_digit(argv[i]))
|
|
i++;
|
|
if (argv[i] != '\0' && !is_digit(argv[i]))
|
|
return (0);
|
|
return (1);
|
|
}
|
|
|
|
static int have_duplicates(char **argv)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
i = 1;
|
|
while (argv[i])
|
|
{
|
|
j = 1;
|
|
while (argv[j])
|
|
{
|
|
if (j != i && nbstr_cmp(argv[i], argv[j]) == 0)
|
|
return (1);
|
|
j++;
|
|
}
|
|
i++;
|
|
}
|
|
return (0);
|
|
}
|
|
|
|
static int arg_is_zero(char *argv)
|
|
{
|
|
int i;
|
|
|
|
i = 0;
|
|
if (is_sign(argv[i]))
|
|
i++;
|
|
while (argv[i] && argv[i] == '0')
|
|
i++;
|
|
if (argv[i] != '\0')
|
|
return (0);
|
|
return (1);
|
|
}
|
|
|
|
int is_correct_input(char **argv, int start_idx)
|
|
{
|
|
int i;
|
|
int nb_zeros;
|
|
|
|
nb_zeros = 0;
|
|
i = start_idx;
|
|
while (argv[i])
|
|
{
|
|
if (!arg_is_number(argv[i]))
|
|
return (0);
|
|
nb_zeros += arg_is_zero(argv[i]);
|
|
i++;
|
|
}
|
|
if (nb_zeros > 1)
|
|
return (0);
|
|
if (have_duplicates(argv))
|
|
return (0);
|
|
return (1);
|
|
}
|