Skip to content

Instantly share code, notes, and snippets.

@Sigmanificient
Last active July 5, 2024 02:37
Show Gist options
  • Save Sigmanificient/7bc053b3bacbdc4cb489a9c6db9418e9 to your computer and use it in GitHub Desktop.
Save Sigmanificient/7bc053b3bacbdc4cb489a9c6db9418e9 to your computer and use it in GitHub Desktop.
Code Golf of Epitech lib inspired from QuentindiMeo/tek-pool-challenge (2532 bytes)
#include<ctype.h>
#include<stddef.h>
#include<unistd.h>
#define H(c)"0W"[(c&15)>9]+(c&15)
#define I(n,m)_Bool n(q){N(s,V)U(W=0;*s;s++)W|=!m(*s);R!W;}
#define N(s,r)if(s==V)R r;
#define P my_putchar
#define R return
#define S(f)my_str##f
#define O(f)S(f)(C*a,C*b){R S(n##f)(a,b,S(len)(b)+1);}
#define Y(f,o)C*f(q){N(s,V)U(Q=s;*Q;Q++)if(isalpha(*Q))*Q o 32;R s;}
#define T typedef
#define q C*s
#define V NULL
#define U for
T unsigned u;T int J;T char C;C*Q;J W,X;J my_putchar(C c){R c&&write(STDOUT_FILENO,&c,sizeof c);}J my_isneg(J n){P("PN"[n<0]);}J my_put_nbr(J n);J cn(J n){X=-(n/10);P(45);R!X?0:my_put_nbr(X)+1;}J my_put_nbr(J n){u w=0;U(;n<0;n=-(n%10))w+=cn(n);w+=n>9?my_put_nbr(n/10):0;P(48|n%10);R++w;}J my_swap(J*a,J*b){W=*a;*a=*b;*b=W;}J my_putstr(q){N(s,0)U(Q=s;*Q;P(*Q++));R Q-s;}u S(len)(q){N(s,0)U(Q=s;*Q++;);R--Q-s;}J my_getnbr(q){N(s,0)U(W=X=0;*s&&!isdigit(*s);X+=*s++=='-');U(--s;isdigit(*++s);W=W*10-(*s&~48))if(W<(-((1<<30)/5)+(*s&~48)))R 0;R X&1?W:-W;}void my_sort_int_array(J*a,J s){U(u i=0;i<s;i++)U(u j=i;j<s;j++)if(a[i]>a[j])my_swap(a+i,a+j);}u my_compute_power_rec(u n,u p){R(p<2)?(!p?1:n):my_compute_power_rec(n,p-1)*n;}u my_compute_square_root(u n){U(W=0;W*W<n;W++);R(W*W==n)*W;}J sq(J n){u k=n/2;U(u i=33;--i;k=(k+n/k)/2);R k;}J my_is_prime(J n){if(n<4)R n>1;W=(n%6|4)!=5;U(u i=3;i<=sq(n);i+=2)W|=!(n%i);R!W;}u my_find_prime_sup(u n){if(my_is_prime(n|1)||n<3)R n<3?2:n|1;U(n=(n|1)+2;!my_is_prime(n);n+=2);R n;}C*S(ncpy)(C*d,q,u n){N(d,V)U(Q=d;s!=V&&n>0&&*s;n--)*Q++=*s++;if(n>0)*Q=0;R d;}C*my_revstr(q){u l=S(len)(s);U(u i=0;i<(l/2);i++){X=s[i];s[i]=s[l-i-1];s[l-i-1]=X;}R s;}J S(ncmp)(C*a,C*b,u n){if(!n)R 0;U(;n-->1&&*a&&*a==*b;a++)b++;R*a-*b;}C*S(str)(q,C*f){N(f,V)N(s,V)if(!*f)R s;U(W=S(len)(f);*s;s++)if(!S(ncmp)(s,f,W))R s;R V;}Y(S(upcase),&=~)Y(S(lowcase),|=)C*S(capitalize)(q){N(s,V)Q=s;U(X=1;*Q;X=!isalnum((++Q)[-1]))if(isalnum(*Q))*Q=X&&!isdigit(*Q)?*Q&~32:*Q|32;R s;}I(str_isalpha,isalpha)I(S(_isnum),isdigit)I(S(_islower),islower)I(S(_isupper),(*s==32)&&!isupper)I(S(_isprintable),isprint)u my_showstr(q){W=0;N(s--,0)U(u i=0;*++s;W+=isprint(*s)?P(*s):P(92)+P(H(*s&~15))+P(H(*s)));R W;}J puthex(J n,J d){d>1?puthex(n>>4,d-1):0;n&=15;P("0W"[n>9]+n);}J sm(C*m,J n){J g=16;P(58);P(32);U(X=n;X>0;X--){puthex(*m++,2);(g--&1)&&P(' ');}U(X=17-n;--X;my_putstr(" "+!(g--&1)));U(m-=n;n--;m++)P(isprint(*m)?*m:46);P(10);}J my_showmem(q,J n){u i=0;U(J b;i<n;i+=b){puthex(i,8);sm(s,b=n>15?16:n);s+=b;}R i;}C*S(ncat)(C*d,q,u n){N(s,d)N(d,V)U(Q=d;*Q;Q++);U(;n--&&*s;*Q++=*s++);R d;}C*O(cpy)J O(cmp)C*O(cat)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment