From: = <=> Date: Thu, 18 Dec 2025 16:20:47 +0000 (+0100) Subject: Bonus X-Git-Url: https://git.uwuaxy.net/?a=commitdiff_plain;h=f95de4e3a929baa349f60a1d8add3e662eea04ce;p=axy%2Fft%2Fpushswap.git Bonus --- diff --git a/Makefile b/Makefile index ee8dee5..fbe903f 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,23 @@ NAME=push_swap -SRCS=algorithm_complex.c algorithm_medium.c algorithm_simple.c cheatalloc.c clist.c closure.c disorder.c frac.c leaf_sort.c leaf_sort_index.c leaf_sort_parse.c list.c main_pushswap.c op_output.c op_p.c op_parse.c op_r.c op_rr.c op_s.c ops.c ops_count.c ops_optimizer.c ops_stackops.c output.c psval.c slice.c splitsort.c splitsort_final.c splitsort_iter.c splitsort_part.c stack.c stacks.c stacks_get.c +NAME_BONUS=checker + +SRCS=algorithm_complex.c algorithm_medium.c algorithm_simple.c algorithm_stdin.c cheatalloc.c clist.c closure.c disorder.c eoutput.c frac.c ft_memcpy.c get_next_op.c leaf_sort.c leaf_sort_index.c leaf_sort_parse.c list.c numutils.c op_output.c op_p.c op_parse.c op_r.c op_rr.c op_s.c ops.c ops_count.c ops_optimizer.c ops_stackops.c output.c psval.c slice.c splitsort.c splitsort_final.c splitsort_iter.c splitsort_part.c stack.c stacks.c stacks_get.c RESSRCS=_res_leaf_sort_lookup.h +MAINSRCS=main_pushswap.c +BONUSSRCS=main_checker.c + BUILDDIR=.build RESDAT=${RESSRCS:_res_%.h=${BUILDDIR}/%.res} OBJS=${SRCS:%.c=${BUILDDIR}/%.o} ${RESDAT:%.res=%.o} +MAINOBJS=${MAINSRCS:%.c=${BUILDDIR}/%.o} +BONUSOBJS=${BONUSSRCS:%.c=${BUILDDIR}/%.o} + CFLAGS=-Wall -Wextra -Werror -g CC=cc @@ -28,20 +36,25 @@ ${BUILDDIR}/%.o : %.c | ${BUILDDIR} ${BUILDDIR} : mkdir ${BUILDDIR} -${NAME} : ${OBJS} +${NAME} : ${OBJS} ${MAINOBJS} cc -o $@ $^ +${NAME_BONUS} : ${OBJS} ${BONUSOBJS} + cc -o $@ $^ + +bonus : ${NAME_BONUS} + clean : - rm -f ${OBJS} ${RESDAT} + rm -f ${OBJS} ${RESDAT} ${MAINOBJS} ${BONUSOBJS} fclean : clean - rm -f ${NAME} + rm -f ${NAME} ${NAME_BONUS} rm -fd ${BUILDDIR} re : fclean all remakefile : clean - sed -i "s/^SRCS=.*/$$(echo -n SRCS=; echo -n *.c)/" Makefile + sed -i "s/^SRCS=.*/$$(echo -n SRCS=; echo -n *.c | sed "s/main_[^ ]* //g")/" Makefile sed -i "s/^RESSRCS=.*/$$(echo -n RESSRCS=; echo -n _res_*.h)/" Makefile .PHONY : all clean fclean re bonus remakefile diff --git a/algorithm_stdin.c b/algorithm_stdin.c new file mode 100644 index 0000000..a869728 --- /dev/null +++ b/algorithm_stdin.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algorithm_stdin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/18 15:59:51 by agilliar #+# #+# */ +/* Updated: 2025/12/18 17:16:51 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" + +void algorithm_stdin(const t_stacks *stacks, t_closure cb) +{ + t_op op; + + op = OP_PA; + while (get_next_op(&op)) + closure_call(cb, op); + if (!stacks_is_solved(stacks)) + output_str("KO\n"); + else + output_str("OK\n"); +} diff --git a/eoutput.c b/eoutput.c new file mode 100644 index 0000000..2e1bb91 --- /dev/null +++ b/eoutput.c @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* eoutput.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/02 16:47:00 by agilliar #+# #+# */ +/* Updated: 2025/12/18 16:32:18 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" +#include "output_inner.h" +#include + +static t_output_store *eoutput_store(void) +{ + static t_output_store store = {.written = 0}; + + return (&store); +} + +void eoutput_flush(void) +{ + size_t i; + ssize_t written; + t_output_store *store; + + store = eoutput_store(); + i = 0; + while (i < store->written) + { + written = write(2, &store->buf[i], store->written - i); + if (written <= 0) + cheatexit(written != 0); + i += written; + } + store->written = 0; +} + +void eoutput_char(char c) +{ + t_output_store *store; + + store = eoutput_store(); + if (store->written == OUTPUT_STORE_SIZE) + eoutput_flush(); + store->buf[store->written++] = c; +} + +void eoutput_str(const char *s) +{ + while (*s) + eoutput_char(*(s++)); +} + +void eoutput_str_ln(const char *s) +{ + eoutput_str(s); + eoutput_char('\n'); +} diff --git a/ft_memcpy.c b/ft_memcpy.c new file mode 100644 index 0000000..7cff35e --- /dev/null +++ b/ft_memcpy.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/10/29 09:48:05 by agilliar #+# #+# */ +/* Updated: 2025/12/18 15:17:29 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + while (i < n) + { + ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; + i++; + } + return (dest); +} diff --git a/get_next_op.c b/get_next_op.c new file mode 100644 index 0000000..e6d8bce --- /dev/null +++ b/get_next_op.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_op.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/18 15:36:01 by agilliar #+# #+# */ +/* Updated: 2025/12/18 17:15:30 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" +#include + +#define BUF_SIZE 128 + +bool get_next_op(t_op *res) +{ + static char buf[BUF_SIZE]; + static size_t used = 0; + ssize_t n; + t_slice curr; + t_slice op; + + while (used < 10) + { + n = read(0, &buf[used], BUF_SIZE - used); + if (n == 0) + break ; + if (n < 0) + cheatexit(1); + used += n; + } + if (!used) + return (false); + curr = slice_new_range(buf, &buf[used]); + op = slice_split(&curr, '\n'); + *res = op_parse(op); + if (*res == OP_INVALID || used - curr.len - op.len == 0) + cheatexit(1); + ft_memcpy(buf, curr.ptr, curr.len); + used = curr.len; + return (true); +} diff --git a/input.txt b/input.txt new file mode 100644 index 0000000..6ee4a92 --- /dev/null +++ b/input.txt @@ -0,0 +1,655 @@ +ra +ra +pb +rr +ra +ra +ra +pb +pb +ra +pb +rb +pb +rr +pb +rb +pb +pb +pb +ra +ra +pb +ra +ra +ra +pb +rr +pb +rr +ra +ra +pb +pb +rb +pb +pb +rr +pb +pb +pb +rr +ra +ra +ra +ra +ra +ra +pb +rb +pb +rr +pb +pb +pb +ra +ra +ra +ra +pb +rr +ra +pb +ra +ra +pb +pb +rb +pb +rb +pb +ra +pb +rb +pb +rr +ra +ra +ra +ra +ra +ra +ra +pb +rb +pb +ra +ra +ra +ra +ra +ra +ra +ra +pb +rr +ra +pb +rr +ra +ra +ra +ra +pb +pb +pb +pb +rra +rra +rra +rb +pb +rra +pb +rra +rb +pb +rra +rb +pb +rra +rra +rb +pb +rra +pb +rra +rb +pb +rra +pb +rra +pb +rra +rra +rra +rb +pb +rra +rra +rb +pb +rra +rra +rra +rb +pb +rra +rb +pb +rra +pb +rra +rb +pb +rra +pb +rra +rb +pb +rra +pb +rra +rb +pb +rra +rb +pb +rra +pb +rra +pb +rra +pb +rra +rra +pb +rra +pb +rra +rra +pb +rra +rra +rra +pb +rra +rb +pb +rra +rra +rra +rb +pb +rra +rb +pb +rra +pb +rra +rra +rra +rra +rb +pb +rra +pb +rra +rb +pb +rra +rb +pb +rra +pb +rra +pb +rra +rb +pb +rra +rb +pb +rra +rra +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pb +pa +pa +rr +rb +rb +rb +rb +pa +rr +rb +pa +rr +pa +rb +rb +rb +pa +pa +ra +pa +rb +sa +pb +sa +pb +sa +pa +pa +rra +rra +pb +rra +pb +rra +sa +pa +pa +rrb +pa +rrb +pa +rrb +pa +rrb +pa +ra +rrb +pa +rrb +rrb +pa +ra +rrb +rrb +pa +ra +rrb +pa +ra +rrb +rrb +pb +sa +pb +ss +pa +sa +pa +sa +rra +pb +rra +rra +sa +rra +pa +pa +pa +pa +pa +pb +pb +ss +pa +sa +pa +pa +ra +pa +pa +rb +pa +rb +rb +rb +rb +rb +rb +pa +rb +rb +rb +rb +rb +pa +ra +pa +ra +pa +ra +pb +sa +pb +sa +pa +sa +pa +rra +rra +rra +pb +rra +sa +pa +rrb +pa +rrb +rrb +pa +ra +rrb +rrb +pa +ra +rrb +pa +ra +rrb +pa +rrb +rrb +pa +rrb +pa +ra +rrb +pa +rrb +pb +sa +pb +sa +pa +sa +pa +rra +pb +rra +rra +sa +pa +rra +pa +pa +pa +pa +sa +pb +sa +pa +sa +pa +rb +rb +rb +pa +rr +rb +pa +rr +rb +pa +rb +pa +rr +pa +rr +pa +rb +pa +rb +pb +sa +pb +ss +pa +sa +pa +sa +rra +pb +rra +rra +pa +rrr +pa +rrb +pa +ra +rrb +pa +ra +rrb +pa +ra +rrb +pa +rrb +rrb +rrb +rrb +pa +ra +rrb +pa +rrb +pa +rrb +sa +pb +sa +pb +sa +pa +pa +rra +pb +rra +rra +pa +rra +pa +pa +pa +pa +pb +pb +ss +pa +sa +pa +sa +rb +pa +rr +pa +rb +rb +rb +rb +rb +pa +pa +rb +pa +rr +pa +rr +rb +rb +pa +ra +pa +pb +pb +ss +ra +pa +sa +pa +rra +rra +rra +pb +rra +sa +pa +rrr +pa +rrb +pa +ra +rrb +pa +rrb +rrb +pa +rrb +rrb +rrb +pa +ra +rrb +pa +ra +rrb +rrb +pa +rrb +pa +ra +pb +pb +ss +pa +sa +pa +sa +rra +rra +pb +rra +rra +pa +pa +pa +pa +pa +sa +pb +sa +pb +ss +pa +sa +pa +rb +pa +rb +pa +rb +pa +rr +rb +pa +rr +pa +rb +rb +rb +rb +rb +rb +pa +ra +pa +pa +ra +pb +pb +ss +ra +pa +sa +pa +rra +rra +rra +pb +rra +sa +pa +rrr +pa +rrb +pa +ra +rrb +rrb +pa +ra +rrb +rrb +rrb +pa +rrb +rrb +pa +ra +rrb +pa +ra +rrb +pa +rrb +pa +sa +rra +rra +pb +rra +pb +rra +sa +pa +pa +pa +pa +pa +pa diff --git a/main_checker.c b/main_checker.c new file mode 100644 index 0000000..b4174a5 --- /dev/null +++ b/main_checker.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main_checker.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: clefrere +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/02 22:15:12 by agilliar #+# #+# */ +/* Updated: 2025/12/18 17:11:15 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" + +static void arg_step(char *str, t_stacks *stacks) +{ + stack_push_back(&stacks->a, psval_parse(str)); +} + +int main(int argc, char **argv) +{ + t_stacks stacks; + int i; + t_ops ops; + + i = 1; + stacks = stacks_new(); + while (i < argc) + arg_step(argv[i++], &stacks); + ops = ops_stackops(); + stacks_apply(&stacks, &ops, &algorithm_stdin); + output_flush(); + eoutput_flush(); + cheatexit(0); +} diff --git a/main_pushswap.c b/main_pushswap.c index e46902f..1669b92 100644 --- a/main_pushswap.c +++ b/main_pushswap.c @@ -6,7 +6,7 @@ /* By: clefrere +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 22:15:12 by agilliar #+# #+# */ -/* Updated: 2025/12/18 14:07:38 by agilliar ### ########.fr */ +/* Updated: 2025/12/18 16:12:13 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,9 +34,7 @@ typedef struct s_args { t_stacks state; t_algovar algo; - t_algorithm *algo_func; bool bench; - t_frac disorder; } t_args; static t_algorithm *algorithm_get(t_algovar var, t_frac disorder) @@ -55,25 +53,25 @@ static t_algorithm *algorithm_get(t_algovar var, t_frac disorder) } #define COMPLEXITY_SIMPLE "Simple / O(N^2)" -#define COMPLEXITY_MEDIUM "Simple / O(N^(3/2))" -#define COMPLEXITY_COMPLEX "Simple / O(N log N)" +#define COMPLEXITY_MEDIUM "Medium / O(N^(3/2))" +#define COMPLEXITY_COMPLEX "Complex / O(N log N)" #define COMPLEXITY_ADAPTIVE_LOW "Adaptive / O(N^2)" #define COMPLEXITY_ADAPTIVE_MEDIUM "Adaptive / O(N^(3/2))" #define COMPLEXITY_ADAPTIVE_HIGH "Adaptive / O(N log N)" -t_slice complexity_get(t_algovar var, t_frac disorder) +static const char *complexity_get(t_algovar var, t_frac disorder) { if (var == ALGORITHM_SIMPLE) - return (slice_new(COMPLEXITY_SIMPLE)); + return (COMPLEXITY_SIMPLE); if (var == ALGORITHM_MEDIUM) - return (slice_new(COMPLEXITY_MEDIUM)); + return (COMPLEXITY_MEDIUM); if (var == ALGORITHM_COMPLEX) - return (slice_new(COMPLEXITY_COMPLEX)); + return (COMPLEXITY_COMPLEX); if (frac_lt(disorder, frac_new(1, 5))) - return (slice_new(COMPLEXITY_ADAPTIVE_LOW)); + return (COMPLEXITY_ADAPTIVE_LOW); if (frac_lt(disorder, frac_new(1, 2))) - return (slice_new(COMPLEXITY_ADAPTIVE_MEDIUM)); - return (slice_new(COMPLEXITY_ADAPTIVE_HIGH)); + return (COMPLEXITY_ADAPTIVE_MEDIUM); + return (COMPLEXITY_ADAPTIVE_HIGH); } static void arg_step(char *str, t_args *arg) @@ -96,7 +94,7 @@ typedef struct s_benchres { t_ops_count pre_opt; t_ops_count post_opt; - t_slice strategy; + const char *strategy; t_frac disorder; } t_benchres; @@ -106,16 +104,51 @@ static t_benchres pushswap_solve(t_args *args) t_optimizer opt; t_benchres res; - res.disorder = args->disorder; + res.disorder = compute_disorder(&args->state.a); ops = ops_compose(ops_output(), ops_count(&res.post_opt)); ops = ops_optimizer(ops, &opt); ops = ops_compose(ops_stackops(), ops); ops = ops_compose(ops_count(&res.pre_opt), ops); - stacks_apply(&args->state, &ops, args->algo_func); + stacks_apply(&args->state, &ops, algorithm_get(args->algo, res.disorder)); ops_optimizer_commit(&opt, &args->state); + res.strategy = complexity_get(args->algo, res.disorder); return (res); } +static void output_ops(t_ops_count ops) +{ + t_op op; + size_t total; + + op = OP_SA; + total = 0; + while (op <= OP_RRR) + { + if (op != OP_SA) + eoutput_str(", "); + eoutput_str(ops_str(op)); + eoutput_str(": "); + eoutput_size(ops.counters[op]); + total += ops.counters[op]; + op++; + } + eoutput_str("\t| "); + eoutput_str("total: "); + eoutput_size(total); + eoutput_char('\n'); +} + +static void output_bench(t_benchres res) +{ + eoutput_str_ln("[Bench]"); + eoutput_str("\tStrategy:\t"); + eoutput_str_ln(res.strategy); + eoutput_str("\tPost-Opt:\t"); + output_ops(res.post_opt); + eoutput_str("\tPre-Opt:\t"); + output_ops(res.pre_opt); +} + #include int main(int argc, char **argv) { @@ -129,13 +162,9 @@ int main(int argc, char **argv) i = 1; while (i < argc) arg_step(argv[i++], &args); - args.disorder = compute_disorder(&args.state.a); - args.algo_func = algorithm_get(args.algo, args.disorder); res = pushswap_solve(&args); + output_bench(res); output_flush(); - printf("pre: %lu\n", res.pre_opt.counters[OP_RR]); - printf("post: %lu\n", res.post_opt.counters[OP_RR]); - printf("num: %lu\n", args.disorder.num); - printf("den: %lu\n", args.disorder.den); + eoutput_flush(); cheatexit(!stacks_is_solved(&args.state)); } diff --git a/numutils.c b/numutils.c new file mode 100644 index 0000000..743d3b0 --- /dev/null +++ b/numutils.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* numutils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/18 14:58:14 by agilliar #+# #+# */ +/* Updated: 2025/12/18 15:00:37 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" + +void eoutput_size(size_t n) +{ + if (n >= 10) + eoutput_size(n / 10); + eoutput_char("0123456789"[n % 10]); +} diff --git a/op_output.c b/op_output.c index 5622c8b..9892ee3 100644 --- a/op_output.c +++ b/op_output.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/03 12:28:28 by agilliar #+# #+# */ -/* Updated: 2025/12/16 19:07:40 by agilliar ### ########.fr */ +/* Updated: 2025/12/18 14:55:48 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,21 +21,8 @@ static void op_output_inner(const char *data, t_stack *stack) static t_closure op_output(t_op op) { t_closure res; - const char *const ops[11] = { - "sa", - "sb", - "ss", - "pa", - "pb", - "ra", - "rb", - "rr", - "rra", - "rrb", - "rrr", - }; - res.data = (void *) ops[op]; + res.data = (void *) ops_str(op); res.func = &op_output_inner; return (res); } diff --git a/ops.c b/ops.c index 48fca72..5d8441b 100644 --- a/ops.c +++ b/ops.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/03 10:57:30 by agilliar #+# #+# */ -/* Updated: 2025/12/11 16:58:11 by agilliar ### ########.fr */ +/* Updated: 2025/12/18 17:16:20 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,3 +59,22 @@ t_ops ops_init(t_closure (*gen)(t_op)) } return (res); } + +const char *ops_str(t_op op) +{ + const char *const ops[11] = { + "sa", + "sb", + "ss", + "pa", + "pb", + "ra", + "rb", + "rr", + "rra", + "rrb", + "rrr", + }; + + return (ops[op]); +} diff --git a/pushswap.h b/pushswap.h index cac3466..d579485 100644 --- a/pushswap.h +++ b/pushswap.h @@ -6,7 +6,7 @@ /* By: clefrere +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 11:02:44 by agilliar #+# #+# */ -/* Updated: 2025/12/18 14:07:48 by agilliar ### ########.fr */ +/* Updated: 2025/12/18 16:04:35 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -117,6 +117,11 @@ void output_str(const char *s); void output_str_ln(const char *s); void output_flush(void); +void eoutput_char(char c); +void eoutput_str(const char *s); +void eoutput_str_ln(const char *s); +void eoutput_flush(void); + t_stacks stacks_new(void); bool stacks_is_solved(const t_stacks *stacks); void stacks_apply(t_stacks *stacks, const t_ops *ops, @@ -142,6 +147,7 @@ t_op op_parse(t_slice s); t_closure op_compose(t_closure first, t_closure second); t_ops ops_compose(t_ops lhs, t_ops rhs); t_ops ops_init(t_closure (*gen)(t_op)); +const char *ops_str(t_op op); t_ops ops_stackops(void); t_ops ops_output(void); @@ -161,7 +167,6 @@ t_slice slice_new(const char *s); t_slice slice_new_range(void *start, void *end); bool slice_eq(t_slice lhs, t_slice rhs); t_slice slice_split(t_slice *rem, char at); -void slice_output(t_slice s); void leaf_top_a_a(const t_stacks *stacks, t_closure cb, size_t size); @@ -175,6 +180,7 @@ void splitsort(const t_stacks *stacks, t_closure cb, size_t blocks); void algorithm_simple(const t_stacks *stacks, t_closure cb); void algorithm_medium(const t_stacks *stacks, t_closure cb); void algorithm_complex(const t_stacks *stacks, t_closure cb); +void algorithm_stdin(const t_stacks *stacks, t_closure cb); t_frac frac_new(size_t num, size_t den); t_frac frac_mul(t_frac lhs, t_frac rhs); @@ -182,4 +188,10 @@ bool frac_lt(t_frac lhs, t_frac rhs); t_frac compute_disorder(const t_stack *a); +void eoutput_size(size_t n); + +void *ft_memcpy(void *restrict dest, const void *src, size_t n); + +bool get_next_op(t_op *res); + #endif diff --git a/slice.c b/slice.c index 28536a6..3a9ee88 100644 --- a/slice.c +++ b/slice.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/10 17:08:21 by agilliar #+# #+# */ -/* Updated: 2025/12/10 18:41:15 by agilliar ### ########.fr */ +/* Updated: 2025/12/18 14:34:34 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,9 +65,3 @@ t_slice slice_split(t_slice *rem, char at) } return (res); } - -void slice_output(t_slice s) -{ - while (s.len--) - output_char(*(s.ptr++)); -}