finish 12 part 1 and part 2 in progress, i suffer

This commit is contained in:
Xamora 2024-12-12 18:24:56 +01:00
parent 11f605a216
commit c4d7c86038
12 changed files with 557 additions and 0 deletions

41
12/Makefile Executable file
View file

@ -0,0 +1,41 @@
CC := gcc
LD := $(CC)
LIBS := -lm
LDFLAGS :=
CFLAGS := -Wall -Wextra -Wno-override-init -std=c2x -include_.h
SRC := part1.c mylib.c
ifeq ($(PART),2)
SRC := part2.c mylib.c
endif
OBJ_DIR := build
OBJ := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o,$(SRC)))
DIR := .
RAW_NAME:= a.out
NAME := $(RAW_NAME)
ifeq ($(RELEASE),1)
CFLAGS += -O3
LDFLAGS += -O3 -s
else
CFLAGS += -O0 -g3
LDFLAGS += -O0 -g
endif
all: $(NAME)
$(NAME): $(OBJ)
$(LD) $(LDFLAGS) -o $(DIR)/$(NAME) $(OBJ) $(LIBS)
$(OBJ_DIR)/%.o: %.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c -o $@ $<
clean:
@rm -rf $(OBJ_DIR)
@rm -rf $(RAW_NAME)
re:
@make --no-print clean
@make --no-print all
.PHONY: all clean re

29
12/_.h Normal file
View file

@ -0,0 +1,29 @@
#pragma once
#include <ctype.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include <strings.h>
#include <wctype.h>
#include <math.h>
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
#define ABS(X) ((X) >= 0 ? (X) : -(X))
char** str_split(char* a_str, const char a_delim);
int str_index(char *str, char c);
int number_of_element(char *str, char c);
long gmc(long a, long b);
long lmc(long a, long b);
long lmcs(int array[], int n);
long strslen(char **strs);
char **strsdup(char **strs);

140
12/main.txt Normal file
View file

@ -0,0 +1,140 @@
OORRQQQQQDUDDDDDDDDDDDDDDDDDDDYYDDDDPGGGGGGGGGGGNNNNNNNTTTTTTTTTTYYYHKKKKKKKKKKXXXXXXXXXXXXYEEEEEEEEEEEEVVAAAAAAAAAAAAAAAATERREVEEEEEEEEEEEE
OOORQBQQQDDDDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGGNNNNNNTTTTTTTTTTTTYHKKKKKKKKKKXXXXXXXXXXXEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAREEEEEEEEEEEEEEEEE
OOOOOOOQODDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGGGGNNNNNTTTTTTTTTTTTTHHHKKKKKKKKKKXXXXXXXXXEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAARRREEEEEEEEEEEEEEE
OOOOOOOOOVVDDDDDDDDDDDDDDDDDDYYYYDDGGGGGGGGGGGGGNNNNNNTTTTTTTTTTHHHHHHKKKHHHHKKKXXXXXXXXXXXXEEEEEEEEEEEEEEEEAAAAAAAAAAAAAARREEEEEEEEEEEEEEEE
OOOOOOOOVVVDDDDDDDDDDDDDDDDDDYYYYYYYGGGGGGGCCCCNNNNNNNNTTUTTTTTTHHHHHKKKKHHHHHXXXXXXXXXXXXXXEREEEEEEEEEEEEEEEAAAAAAAAAAARRRRRREERRREEEEEEEEE
OOOOOOOODDDDDDDDDDDDDDDLDDDDDBYYYYYYYYYGGCCCCCCCNCCCNNNTDUUUTTTTRHHHHHHHHHHHHHXAAAAAXXXXXSSXXEEEEEEEEEENEEEEAAAAAAAAAAAAAARRRRRRRRRREEEEEEEE
OOOOOOOWWWWWWWDDDDDDDLLLDFFDBBYYYYYYYYYJCCCCCCCCCCCCNNNIIUUUTTRRRRRHHHHHHHHHHHAAAAAAAXXXSSSSSRREEEEEEEENEEAAAAKKKAAAAAAAAARRRRRRRRRREEEEEEEE
OOOOOOOOWWWWWDDDDDDLLLLLFFCBBYYYYYYYAAACCCCCCCCCCCCCIINIIUUUKTRRRRRSHXXXHHHHHUAAAAAXXXXXSSSSSREEREEEEEPAAAAKKAKKKAAAAAAARRRRRRRRRRREEEEEEEEE
OOOOOOWWWWWWWDDDDDDLLLLLFFCCBYYYYYYYACCCCCCCCCCCCCCIIIIIIIKKKKRRRRRRHXXXHHHXAAAAAAAAXXXSFSSSSSQQEEEECEEEVKKKKKKKKKKAAAAARRRRRRRRRRREEEEEEEEJ
OOOOOWWOOWWWWWDDDDOLILLLFLLCCYYYYYYYACCCCCCCCCCCCCCCIIIIIIIKKRRRRRRNRXXXXXXXXAAAAAAAXSSSSSVVSSQQEEEQCEEVVKKKKKKKKKXAAAAARRRRRRRRRFREEEEEEEEE
OOOOOOOOJJWWWJIIIDLLLLLLLLLCCCYYYYYYACCCCCCCCCCCCCCIIIIIIIIKKRRRRRRRRRXRXXXXXAAAAAJJJSSSSSVQQQQQQQEQQVVVVKKKKKKKKKKEKRRRRRRRRRRREEEEEEEEEEEE
OOOOOOOJJJJJJJJIIIIILLLLLLLCCCYYYCCCCUFFCCCCCCCCCCCIIIIIIIIIKRRRRRRRRRRRXXXXXAAAAAASSSSSSSVVVQQQQQQQQVVVVVKKKKKKKKKKKARRRRRRRRRPEEEEEEEEKKKK
OOJJOOOJJJJJJJIIIIIILLLLLLLLCCCCCCCCUUFUCCCCCCCCPCCIIIIIIIIRRRRRRRRRRXXXXXXXXAARRRSSSSSSSSSSQQQQQQQYQVHVVVVKKKKKKKKKKKKKKRRRRRRPPDDKEKEEKKKK
OOOJJJJJJJJJJJIIEEEILLLLLLLLLLCCCCCCUUFUCCCCCPCCPPPPIIIIITTTRRRRRRRRRXXXXXXJJJJRRRSSSSSSSSSSEQQQQQQQQVHHHHHKKKKKKKKKTKKKTRRRPPRDDDDKKKKEEKKK
OOJJJJJJJJJJJJEEEEEEELLLLLLLLLCCCCCUUUUUCCCCCPPPPKIIIIIIIIRRRRRRRRRRRRRRXXJJJJJRRRASSSSSSSSSEQQQQQHHVVHHHHHKKKKKKKKTTKTTTTPPPPDDDDDKKKKKKKKK
JJJJJJJJJJJJJEEPEEEEPLLLLLLLLLLCCCCCCUCUUSSSKKPKKKIIIIIIIIIJJRRRRRRRRRRXXXJJJJJRRRAASSSSSSSEEQQPQQHHHHHHHHKKKKKKKKTTTJTTTTTPPACDAADKKKKKKKKK
JJJJJJJJJJJJJEEEEEEEPLLLLLLLLLLCCCCCCCCCKKKKKKKKKKIIIIIIBIIIRRLRRRRRXXXXXXJJJRRRRRRRRRSHHHPPPPPPPHHHHHHHHKKKKKKKKKTTTTTTTTTPPAADAAAKKKKKKKKK
JJJJJJJJJJJJEEEEEEEEEXLLLLLLCCCCCCCCCCCKKKKKKKKKKKKKIIIIBIIILRLLRRRRXXXXXJJJRRRRRRRRRRSSHHPPPPPPPPHHHHHHHHKKKKKKKKTTTTTTTTTPPAAAAAAKKKKKKKKK
JJJJJJJJJJEEEEEEEEEEXXLLLLCCCCCCGCCCCCCKKKKKKKKKKKKKKKIIBBILLLLLRRRRPPPPXXJJRRRRRRRRRRSSNNNPPPPPPPPHHHHHHKKKKKKKKKKTTTTTTTTAAAAAAAAKKKKKKKKK
JJJJJJJJJJJJEEEEEEEEEXXXXCCCCCCCGCEECCCKKKKKKKKKKKKKKKIBBBBBBBRRRRRRRPPPPXXXRRRRRRRRRRSNNNNPPPPPPPPHHHHHKKKKKKKKKKKTTTTTTTTTAAAAAAAKKKKKKKKZ
JJJJJJJJJJJFEEEEEEEEXXXXXXXCCCCCGEEEECCGGHKKKKKKKKKKKKKBBBBBPPPPPPPPPPPPPPQQRRRRRRRRRRSNNNCCCPPPPPPIILHKKKKKKKKKKTTTTTTTTTTTAAAAAAAJKKKKKKKK
JJPJJJJJJJJEEEEEEEEEXXXXXXXCCCCCGGEEECGGGHKKKKKKKKKKKKKBBBBBBPPPPPPPPPPPPPQQRRRRRRRRRRVVNNNCCPPPIIIIIIOOKKKKFFKKFTTTTTTTTTTTAAAAAAKKKKKKKKKK
JPPPPPPPPPJEEGGEEEEEXXXXXCCCCCCGGGGGGGGGGGPKKKKKKKKKKKKKBBPPPPPPPPPPPPPPPBQQRRRRRRRRRRVVNNCCPPPPPIIIIIIIKYKKFFFFFTTTTTTTFTVVVVAAVAKVKKKKKKKK
PPMPPPPPPPGGGGGGGGGXXXXXXXXCCCCNNGGGGGGGLLPKKKKKKKKKKKKKBPPPPPPPPPPPPPPXXQQQRRRRRRRRRRAZNCCCCPPPCIIIIIIIIIFFZFFFFTTTTTTTTVVVVVVVVVVVKKKKKKKK
YPPPPPPPGGGGGGGGGGGXXXXXXNNCCCNNNNNGGGGGLAKKKLKKKKKKKKKKBPPPPPPPPPPPPPPXXQQQRRRRQZZZZZZZZCCCPPPCCIIIIIIIIPFFFFFFFFTTTTTTVVVVVVVVVVVVKKKKKKKK
YPPPPPPPPGGGGGGLLLLLLXXNNNNNNNNNNNNGGGLGLLLKKLKLKOKKKKKKBPPPPPPPPPPPPPXXXQQQRRRRQZZZZZZZZCCCCCPCIIIIIIIIIFPFFFFFFFMTTTTUVVUVVVVVVVVVKKKKKKKK
PPPPPPPPPGGGOGGGGGLLLXXXNNNNNNNNNNNBGGLLLLLKKLLLKOKKKKKPPPPPPPPPPPPPPPXXXXXQQQQQQQQZZZZZCCCICCCCCIIILLLIRFFFFFFFFFFFFUUUUUUVVVVVVVVVVKFKKKKK
PPPPPPPPPPOOOOGGGGLLLLXXNNNNNNNNNNNBGULLLLLLLLLKKKKKKKKPPPPPPPPPPPPPPPPXXXXXXQQQQNZZZZZZZCIICCCCCIYILRLRRRRFFFFFFFFFFUUUUUUVWWVVVWVVVKKKKOOO
PPPPPPPPPPOOOOGGGLLLLLLLNNLNNNNNNNNBNUULLLLLLLLLLLSKKSKKKPPPPFPFPPPPXXXXXXXXQQQQQNNNZCCZEIIICCICCRRLLRRRRRFFFFFFFFFFFUUUUUUUWWWWWWWWVVVKKXOX
PPPQPPPPPPOOOOGGGLLLLMMLLLLLLLNNNNNNNNUULLLLLLLLLSSSSSKKKPPPPFPFNPPPXXXXXXXXXQQNNNNFCCCIIIIIIIIICRRRRRRRRFFFFFFFFUUUUUUUUUUWWWWWWWWVVVVVVXXX
PPPPPPPPCWOOOOCGGGLLLLLLLLLLNNNNNNNNNNULLLLLLLLLLLSSSKKSKKPFPFPFFFXXXTXTTTXXXXQFFFFFFCIIIIIIIIIICRRRRRRRRFFFFFYFFUHHHUUUUUUUWWWWWWWXVVVVVXXX
PPKKPPPPCCCOCCCCCGLLLLLLLLLLLNNNNNNNJCLLLLLLLLLLLSSSSKSSKKKFFFFUFFQQQTXTTTTTTXGFFFFFFCCIIIIIIIITRRRRRRRRRRFFYFYYYYHHHHHHHHHUWWWWWWWXXXXXVXXX
CPKKCCPPCCCCCCCCCGLLLLLLLLLLLNJNNNNNJCLLLLLLLLLLLSSSSSSSSSFFFFSFFFFQQTTTTTTGGGGGFFFFFCCIIIIIIIITRRRRRRRRRRFYYYYYYYHHHHHHHHHUUWWWWLLXXXXXXXXX
CCCCCCPCCCCCCCCCCLLLLLSKLLLLJJJJJNNNJJXLLLLLLLLLSSSSSSSSSKKFFFFFFFFTTTTTTTTTTGUGUUFFFFCTTTTTTTTTTRRRRRRRRRRYYYYYYYHHHHHHHHHUUWWWWLLXXXXXXXXX
CCCCCCPCCCCCCCCAALSSSSSKLLJJJJJJJJJJJJJLDLLLLLLLFFSFSSSSSFFFFFFFFFKTTTTTTTTTTUUUUFFFFFCTTTTTTTTTTRRRRRRRRYYYYYYYYYHHHHHHHHHUUUWDWLLLXXXXXXXX
CCCCCCCCCCCCCCCCCLSSSSSKKSJJJJJJJJJJJJDDDDOLOCLFFFFFSSESFFFFFFFFFFFFTTTTTTTTHHUUUFFBBBBBBBBBBTTTTRRRRRRYYYYYYYYYYYHHHHHHHHHUUUXULLLLXXXXXXXX
CCCCCCCCCCCCCCCCSSSSSSSKSSSJJJJJJJJJJJJDDOOOOOVOFFFFSSFFFFFFFFFFFFFTTTTTTTTTTHUUUFFBBBBBBBBBBTSSSRRRRRRBYYYYYYYYYYHHHHHHHHHUUUUULLLLXXXXXXXX
CCCCCCCCCCCCCCCSSSSSSSSSSSSJJJJJJJJJJJDDDOOOOOOOOFYYYYYYYYYYFFFFFFFOOTTTTTTTTHUUUUFBBBBBBBBBBTSSSSSRRRSYYYYYYYYYYYHHHHHHHHHUUUUUDLLLLXXXXXXX
CCFCCCCCCCCCCCCSSSSSSSSSSSSSJJJJJJJJJJDDDDOOOOOOOOYYYYYYYYYYYFFFRRRFFFGTTTTTHHHHBBBBBBBBBBBBBYTTSSSSRSSYYYYYYYYYYYHHHHHHHHHUUUUSDLLLLXXXXXXX
CFFFCFFFCCCCCCCSSSSSSSSSSSSJJWWJWJJJJDDDDOOOOOOOOOYYYYYYYYYYYOOFFRFFFFGTSSTTMHHMBBBBBBBBBBBBBTTSSAASSSSYYYYYYYYYYYHHHHHHHHHUUUSSDLDDDDXXXXXX
FFFFCFFFFCCCCCCCSSSSSSSSSSZWWWJJWWJJDDDDDDDOOOOOOOYYYYYYYYYYYOOFFRRFFFFFFSSSMMMMBBBBBBBBTFTTTTTTAAASSSYYYYYYYYYYVVYYAAAADUUUUUUDDDDPDDIIXXXX
FFFFFFFFFCCCCSSCCSSSSSSSSWZWWWJJWWWWWDDDDDOOOOOOOYYYYYYYYYYYYOOFFRFFFFFFFSSSMMMBBBBBBBBBFFTTTAAAAAASAAAAFYYYYYYYVVVVAAAADUUUDDDDDDDDDDDIIXEX
FFFFFFFFFFFCVSVSSSVSSSSSQWWWWTTJWWWWWDDDDDOOOOOOOOYYYYYYYYYYYOOOFRFFFFFFFFSSMMMBBBBBBBBBQQTATAAAAAAAAAAAFFFFYYYYVVVVAAAAVUTUDDDDDDDDDDDKKEEE
FFFFFFFFFFFFVVVVVVVVVSSQQWWWWWWWWWWWWWWDDDDOOOOOOOYYYYYYYYYYYOOOOOFFFFFFFLMMMMMBBBBBBBBBQQOAAAAAAAAAAAAAFFFYYYYYVVVVVAVVVUBBBBBDDDDDDDDKZIIE
FFFFFFFFFFVVVVVVVVVVVVWWWWWWWWWWWWWWWWDDDDEEOOOOOEEYYYYYYYYYYOOOOFFFFFFFFMMMMMMBBBBBBBBBOOOAAAAAAAAAAAAAAFYYYYXYVVVVVVVVVVBBBBDDDDDDDDDKKKII
FFFWWFWFFVVVVVVVVVVVBWWWWWWWWWWWWWWWWWDDDDEEEEEYYYYYYYYYYYYYYOOOFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAAAAYYYYYYVVVVVVVVVVVVVBBBBDDDDDDKKKKII
FFWWWWWWWWWWVVVVVVVBBWWWWWWWWWWWWWWWWWDDDDEEEEEYYYYYYYYYYYHHTHOOFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAVYYYYYYYAVVVVVVVVVVVVVBBBBDDDDDDKKKKII
FFWWWWWWWWWWVVVVVVVVVWWWWFFWFFWWWWWWWWWXXDEEEEEYYYYYYYYYHHHHHHHFFFFFFFFFMMMMMMMMBBBBBBBBBBBAAAAAAAAAAAVYYYAAYAAVVVVVVVVVVVVVVBBDDDDDDKKKKKII
FFFWWWWWWWWWVVVVVVVVQQQQWFFFFWWWWWWWXWXXXDEEEEEEEEEYYYEEHHHHHHAFFFFFFFFFLMMMMMKKBBBBBBBBBBBAAAAAAAAAAAVVYYYAAAAJVJVVVVVVVVVVVDDDDDDIIKKKKKII
FFFFWWWWWWWWWVWWWWVVQQQQQQFFFFFWWWWXXXXXXXXEEEEEEELYYYHHHHHHHHHGHHFFLFFFLLLLMMKKBBBBBBBBBBBAAAAAAAAAAAAAYYYYAAJJJJJCVVVVVVVOODDDDDDIIIIIKKII
FFFFFWWWWWWWWWWWWWQQQQQQQQFFFFWWWWWXXXXXEXEEEEEEEELYYYHHHHHHHHHGHHHFLLLLLLLLLKKKKKKKKBBBBBBAAAAAAAAAAAAYYYYYAAJJJJJJVVJVVVVOOODDDDIIIIIIIIII
FFFFFWWWWWWWWWWWQQQQQQQQQQFFFFWJWPXXXXXXEEEEEEEEEEEYYYHHHHHHHHHHHLLLLLLLLLLLLKKKKKKKKBBBBBBAAAAAAAAAAAYYYYYYAAJJJJJJJJJOOOOOOODDDIIIIIIIIIII
FFFFFWWWWWWWWWWWQQQQQQQQQQFFFFPPPPXXXXXXEEEEEEEEEEEYYYHHHHHHHHHHHLLLLLLLLLLLLLAKKKKKKBBBBBBQQAYYYAAYAYYYYYYYYAAAJJJJJJJJJOOOOODDOIOIIIIIIIII
FFFWWWWWWWWWWWWWQQQQQSQQQFFPPPPPPPPXXXXXXXEEEEEEHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLUKKKKKBBBBBBQQQYYYYAYYYYYYYYYCYTTTJJJJJJJJOOOOOOOOOOIIIIIIIII
FFFFFWWWWWWWWWWWWWSQVQQQQQFFFPPPPPXXXXXXXXEEEEEEHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLUUUUKKKBBBBBBQQQYYYYYYYYYYYYYTTTTTTJJJJJJJOOOOOOOOOIIIIIIIIIII
FFFFFFWWWWGWWWWWWWQQKKQQQFFFFFPPPMXXXSXXSSSSEEEEEHHHHHHHHHHHHHHHHLLLLLLLLLLLLLUUKKKKKKKKBBBQQQQQYYYYYYYYYYYTTTTTTTTTJJJJJOOOOOOOOOIIIIIIIIII
FFFFFFWWWWGWWWWWWKKKKKKQFFFFFFPSSSSXXSXSSSSCEECEEHHHHKHHHHHHNHKHHLLLLLLLLLLUUUUKKKMKKKKQBBBQQQQYYYYYYYYYYYYTTTTTTTTTJJJJJJOOOOOOOOIIIIIIIIII
FFFFFFFWWWWWWWWWKKKKKKKKKKFFFFFSSSSSSSSSSSCCQCCCCHHHHKKKKJKKKKKEEELLLLLLLLUUUUUQKQQQQQQQBBBQQQQYYYYYYYYYYYYTTTTTTTTTJJJJJJJOJJZZOOIIIIIIIIII
FFFFFFFSSWWWKKKKKKKKKKKKKFFFFFSSSSSSSSSSSCCCCCCCCHHKKKKKKKKKKKKKKEELLLDLLLLUUUQQQQQQQQQQBBBQQQQQYYYYYYYYYJJTTTTTTTTTJJJJJJJJJJZZZZZIIIIIIIII
FFFFFTFSSSSSSKKKKKKKKKKDKFFFFFSSSSSSSSSSSSCCCCCCCCCCCKKKKKKKKKKKKEELLDDDZLZUUUQQQQQQQQQQBBBAQQQQYYYYYYYYYJTTTTTTTTTTJJJJJJJJJJJZZHFIIIIIIIII
FFFFFFFQSSSSSKKKKKKKKKKKFFFFFSSSSSSSSSSSSSCCCCCCCCCCKKKKKKKKKKKKKEEEEZDDZZZUQQQQQQQQQQQQBBBAAAAQYYYYYYYYYJTTTTTTTTTTJJJJLJJJVVVZZHFFFIIIIIII
FFFFFFFQQSSSSKKKKKKKKKFFFFFFFFSSSSSSSSSSSSCCCCCCCCCNKKKKKKKKKKKKKEEEEZZZZZUUQQQQQQQQQQQQBBBAAAAAYYYYYYYNJJTTTTTTTTTTJJJJJVJVVFFFFFFFYYIIIIIC
FFFFFFFQQQQSSSSKKKKKKKFFFFFFFFFFSSSSSSSSSSSCCCCCCCNNKKKKKKKKKKKKKKKEEZZZZZUZJQQQQQQQQQQQBBBAAAAAAYAAAYJJJJTTTTTTTTTTJJJJJVJVVFFFFFYYYYIIIIIC
FFFFFFFQQQQSSSSSSKKKKKKFFFFFFFSSSSSSSSSSSSCCCNCCCNNNKKKKKKKKKKKKKKKEZZZZZZZZZQQQQQQQQQQQBBBAAAAAAAAAAYFFJJTTTTTTTTTTVVVVJVVVFFFFYYYYYYIIICCC
FFFFFQQQQQQQQSSSKKKKKKFFFFFFFFFFFSSSSSSSSSSCCNCCCCNNKKKKKKKKKKKKKKKKKZZZZZZZZZAAQQQAAAQYAAAAAAAAAAAAAYFFFJTTTTTTTTTTJVVVJVVVFFFFFYYYYYYYYCCC
FFQQQQQQQQQQQSSSKEKKKKKFFFFFFFFFCSSSSSSSSSSCCCPCPMNNKKKKKKKKKKKKKLKNNZZZZZZZZZAAAAAAAQQYAAAAAAAAAAAAAFFJJJTTTTTTTSSHHVVVVVVFFFFFYYYYYYYCCCCC
QQQQQQQQQQQQQVVVKKKKVKKFFFFFFFFFCYSSSSSSSSSSPPPPPMMMMKKKKKKKKKKKLLZZZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAAFFJJJTTTTTTTHHHHVVVVVFFFFFFFYYYYYYYCCCC
QQQQQQQQQQQQVVVVVVVVVVVVVVFFFFFFYYSSSSSSSSSSPPPPPMMMMMMMKKKKKKILLLLZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAFFFJJJJTTTTTTTHHHHVVLVVVFFFFFFYYYYYYYCYCC
QQQQQQQQQQQQQQVVVVVVVVVVVTFFFFFFYYYVSYYYYYYPPPPMMMMMMMMMKKIIIIIJLLLZZZZZZZZZZZAAAAAAAAAAAAAAAAAAAAAAAAAJJJTTTTTTTJYHMLLLLLLLSFOFPPYYYYYYYYOC
QQQQQQQQQQQQQQVVVVVVVVVVVAFFFFFYYYYYYYYYYYYYPPPMMMMMMMMMMIIIIIIIGGLLZZZZZZZZZFFFFAAAAAAAAAAAOOAAAAAAAAYYJJYYYYJJJJYLLLLLLLLLSSCCCPPPYYYVVVOO
QQQQQQQQQQQQQQVVVVVVVVUVVAFFSFFYYYYYYYYYYYPPPPPPMMMMMMMMIIIIIIIIILLLAZZZZZZZZFFFFFFFAAAAAAAOOOOAAAAAAYYYJJYYYYYJJYYYYLLLLLLLSCVCECPPPOVVVOOM
QQQQQQQQQQQQQXVVVVVVVVUVAAAAAFRYYYYYYYYYYYPPPPPPMMMMMMMMIIIIIIIIIALAAZZZZZFSFFFFFFFAAAAEEAAOOOOOOAAAAAAAWWYYYYYYYYYLLLLLLLLSSCCCCCCPPOOOOOOO
QQQQQQQQQQQXXXXVVVVVVVVXAAAAAYYYYYYYYYYYYPPPPPPPMMMMMMMMIIIIIIIIIALAAAAZFZFFFFFFFFFFAANEENROOOOOOOAAKAAAYYYYYYYYYYYYLLLLLLGGCCCCCCCPPOOOOOOO
QQQQQQQQQXQXXXVVVVVVVVXXAAAAAYYYYYYYYYYYPPPPPPPPPPMMMMMMMIIIIIIIIAAAAAFFFFFFFFFFFFFFAANNENNNLOOOOOOKKYYAYYYYYYYYYYYYYYLLLLGGGCCCCCCPOOOOOOOO
XXQQQQQQQXXXXVVVVVVVVVXXXAUAJJYYYYYYYYYYYPPPJPPPPPMMMMMMMIIIIIIAAAAAAAAFFFFFFFFFFFFFNNNEENNNNOOOORRKKYYYYYYYYYYYYYYYYYLLLLGGGGSCCCCOOOOOOOOO
XXXQQQXQQXXXXVVVVVEEEEXXXAUJJJJYYJYYYYYYPPPJJJJPPPMMMMMMMMIIIIIAARRAAAFFFFFFFFFFFFFFNNNNNNNNOROOOORRKKYYYYYYYYYYYYYYYYYLLAGGGASSSCOOOOOOOOOO
XXXQXXXXXXXXXXVVVVVVEUUUUXUJJUJJJJJJYYYYYJJJJJJJPPMMMMMMMIIAAIIAARRRAAAFFFFFFFFFFFFNNNNNNNNOOOOOOORRRKKYYYYYYYYYYYYYYLLLLAAAAAAOOHHOOOOOOOOO
XXXXXXXXXXXXXDZZZDVVEUUUUUUUUUJJJJJJJYYYYJJJJJJJPPPPMMSMMMAAAAAAARRAAAFFFFFFFFFFFFNNNNNNNNNOOOOZZORRRRRRRNNNNYYYYYYYLLLLAAAAAAAOOOOOOOOOOOOO
XXXXXXXXXDDDDDZZZDDDEEUUUUUUUJJJJJJJYYYYJJJJJJJJPPPPMMMAAAAAARRRRRRRRAAAFFFFFFFFFBBNNNNNNNNONBRZRRRRRRRRRRRNYYYYDYYDLLLAGAAAAAAAAAAOOOOOOOOO
XXXXXXXXXDXDDDDZZDDDEEEUUUUUUUJJJJJJJJJYYJJJJJJJPPPPAAAAAAAAAAARRRRRRRARRRFFFFFBBBBNNNNNNNNNNRRRRRRRRRRRRRRRRDDDDDDDAAAAAAAAAAAAAAABOOOOOOOO
XXXXXXXXXXXDDDDDZDDDEEEUUUUUUUJJUJJJJJJJJJJJJJPPPPPPAPAAAAAAAARRRRRRRRRRKRRFFFFXBBXXNNNNNNNNRRRRRRRRRRRRRRRRRDDDDDDDBBAAAAAAAAAAAABBOOOOOOOX
XXXXXXXXXXDDDDDDDDDDEEDZUUUUUUJJUJJJJJPJJJJJJJJPQPPPPPAAAAAAAAHRRRRRRRRRKRRFFFXXXXXXXNNNNNNNNNLRRRRRRRRRRRRDDDDDDDADDBBBAAAAAAAAAAAOOHOOLLOO
XXXXXXXXXXDDDDDDDDDDDDDDUUUUUUUUUJJPJPPJJJJJJJPPQQQPPOOOAAAARRRRRRRRRRRRRRRRXXXXXXXXXXXXXXXXXXRRRRRRRRRRRRDDDDDDDDDBBBBBBBAAAAAAAAAAOOOLLLZO
XXXXXXXXXXDDDDDDDDDDDDDDEEEEUJUUJJJPPDPPJJJPJPPQQQQPPOOOOAATRRRRRRRRRRRRRRRRXXXRXXXXXXXXXXXXXXRRRRRRRRRRRRLRDDDDDDBBBBDDBAAAAAAAAAAAALLLLLZZ
XXXXXSXSXXDDDDDDDDDDDDDDEEEEEEEEEEEEPPPPPPPPPPPQQQQQQWOOOAAARTRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXBRRRRRRRRRRRLRRDDDDDBBBBDDAAAAAAAAAUAARLLLLLZZ
XXXSSSSSSSWDDDDDDDDDDDDDEEEEEEEEEEEEPPPPPPPPPPPQQQQQQQQOORAAARRRRRRRRRRRRRRRRRRRXXXXXXXXXXXXXXRRRRRRRRRRWRRRKDDBDBBDBDDDDDAAAAAAAAAAALLLLZZZ
XXXSSSSSSSDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEPPPPPQQQQQQQQQQORRAARRRYRRRRRHHHHHRRRRRXXXXXXXXXXXXXXTRRRRRRRXRWRRVVVBBBBBDDDDDDDDDAAAAAAABLLLLZZZZ
XXXXSSSSSSSSDDDDDDDDDDDDEEEEEEEEEEEEEEEEEPPTTTQQQQQQQQQQORRAAAARYRRRHHHHHHHHHXRRXXXXXXXXXXXXXXTVRVRRVRVVWVVVVYYYBBBDDDDDDDDDDAAAAAABLLLZZZZZ
EEEEESESSSSSDDDYDDDDDDDDDDEEEEEEEEEEEEEEEPTTTTQQQQQQQQQOORRAAAARRRRRHHHHHHHHHHRRRXXXXXRXXXXXXXTVVVVVVVVVVVVVVYYYBBBDDDDDDDDDDADAJAAJJZZZZZZZ
EEWEESESSSSSSCDDDDDDDYZZDDJEEEEEEEEEPPPPPPHTTTTQQQQQQQQOOORAAAARRRPHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVVVVVVVYYYYBBBDDDDDDDDDDDDJJJJJJZZZZZZZ
EEEEEEEESSSSSCCDDQYYYYYZZZZEEEEEEEEEPPPPPHPTTTTMQKQQQIQQOOOAAAARPHHHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVVIIVIIYBBYBBBBBDDDDDDDDDDDJJJJJJJZZZZZ
EEEEEEEESSSSSSCDDDIYYYZZZZZEEEEEEEEEPPPPPPPPTTTMQRRRXIBOOOOOOOORPPHHHHHHHHHHHHRRRRRRRRXXXXXXXXVVVVVVVVIIIIIIIBBBBBBBBOODDDDDDDJJJJJJJJZZZZZZ
EEEEEEEESJSSSJJJJDDYYYZLZZZEEEEEEEEEPPPPPPPXTTTTQRRIIIOOOOOPPPOOPHHHHHHHHHHHHHRRRRRRRRXXXXKKVVVVVVVVIIIIIIIIBBBBOBBBBOOODDDDDDJJJJJJJZZZZZPP
EEEEEEEEEJSSJJJJJJHYYPZZZZTEEEEEEEEEPPPPPPPXRRBRRRRRIIIIOODTTPPPPHHHHHHHHHHHHHRRRRRRRRXXXXXKKVVVVVVVVIIIIIIIIIBOOOOOOOOOODDDGDJJJJJJJZZZZPPP
EEEEEEEEEJJJJJJJJJYYYYZZZZZTTTTEEEPPCCCRRPPPRRRRRRRRIIIITTTTCTTPPHHHHHHHHHUUMMUUUKKKKXXXXXKKVVVVVVVVVVIIIIIIIIICOOOOOODDDDDDGRRRJJJJJJPPPPPP
PEEEEAEEEJJJJJJJJJYYTTZZZZZZTTTEEEPPCCRRRPRRRRRRRRRRIIITTTTTTTTPPHHHHHHHHHUUUUUUUUUKXXXXXKKKKVVVVVVIIIIIIIIIIIIIOOOOOOODDDDGGARRJJJJJJPPPPPP
PEEEEAAXXJJXJJJJJJJJTZZZZZZZZZTEEEECCCCARRRRRRRRRRRRIIITTTTTTTTTPHHHHHHHHHUDDUUUUUKKKXXXKKKKVVVVVVVIIIIIIIIIIIIOOOOOOOOOODDGGARRJRRJPPPPPPPP
PPEEEEEXIXXXJJJJNNNJJZZZZZZZEEEEEEEECCCARRRRRRRRRRRRIIIITTTTTTTTPPPTTTHHHHDDDUUUUUUKKKKKKHHHHHHHVVVIIIIIIIIIIIOOOOOOOOOOODDGGGRRRRRJPPPPPPPP
PEEEEEXXXXXXJNNNNNNZZZZZZZZEEEEEEEEEAACARRRRRRRRRRNNIIIIITTTTTTPPPPPTTTHHDDDDUUUUUKKKKKKKKHHHHHHHHVIIIGICIIIOOOOOOOOOOOOODDCRRRRRRRJPPPPPPPP
PXXXXXXXXXYYNNNNNNNZZZZZZZEEEEEEEEEEAAAAAARRRRRRRNNNIIIIITTTTTTPPPPTTTTHHDDDDDUUUKKKKKKKKHHHHHHHWWWWWCCCCCIIIOOOOOOOOOOODDDDRRRRRRRRRPPPPPPP
PXXXXXXXXXYYYNNNNNNNZZZZZZEEEEEEEEEAAAAAARRRRRRRNNNNIIIIITTTTTTPPPPTTTTHHHDDDDUUUKKKKKKKKKHHHHHHHCCCCCCCCCIOOOOOOOOOOOOOODDDRRRRRRRRRLPPPPPP
PXXXXXXXXYYXNNNNNNNNZZZZZZZEEEEAEEAAAAAAAAARRRRRNNNNNIIIAATTCTTPPPTTTTTHHDDDDDKKKKDKKKKKKHHHHHHHHCCCCCCCCCCCCOOOOOOOOOOOOOOOOORRRRRLLLLPPPPP
PXXXXXXXXXXXXNNNNNNNZZZZZZZEEEAAEAAAAAAAARRRRRRRNNNNNIIIAAAACCYCCCCCCTTTDDDDDDDKKDDDKKKHHHHHHHHHHICCCCCCCCCCCCCOOOOOOOOOOOOOOORRRRRRRPPPPPPP
XXXXXXXXXXXXXNNNNNNNZZZZZZZZZAAAAAAEEEAAAARRRRRRNNNNNNAAAAACCCCCCCCCCTTTDDDDDKKKKDDDKKKKHHHHHHHHHICCCCUCCCCCCCCCOOOOOOOOOOOOOOORRRRROPPPPPPP
XKXXXXXXXXXXXXNNNNNNCCZQZZRRRAAAAEAEEEAAARRRRRRNNNNNNNAAAAACCCCCCCCCCTTFDDDDDDKKKDDDDKHHHHHHHHHHHHQCCCUUCCCCCCCCOOOOOOOQOOOOOOORROOOOPPPPPPP
KKKKXXXXXXXXXXNNNNLCCCCCZCRRRRAAAEEEEEARRRRRRRRNNHNNNNAAAAAACCCCCCCCTTFFFDDDDKKKKDDDDDDDHHHHHHHHHHHRUUUUUCCCCCCCCOOOJOOOOOOOOOOOOOOOPPPPPPPP
KKKKXXXXXXXDXNNNNNLCCCCCCCRRRREEEEEEEEERRRRRKRRRRRNNNNAOAAACCCCCCCCCTTFFFFDDDDDDDDDDDDDHHHHHHHHHHHHRRUUUUUUCCCCCCCOOJJOOOMOOOOOOOOOOOPPPPPPP
KKKKKXXXXXXXXCCLLLLLCCCCCCIRRRREEEEEEEEEKKKKKRRRRKAAAAAOOOOOCCFFCCCCTTFFZZVVDVVDDDDDDDDHHHHHHHHHHHHHRJUUUCCCCNNCCCCCCJOOMMMOOOOOOOOOOPPPPPPP
KKKKKXXXXXXAXXCCLCLCCCCCCIIRRRRREEEEEEEEIKKKKKKKRKAAOOOOOOOOCCOFCCCCZTTZZZVVVVVVDDDDDDHHHHHHHHHHHHJJJJUUUUCCNUNNNCCCCJJMMMMOOOOOOWWOOPYYPPPP
KKKKKKXXXXAAXXCCLCCCCCCCCCIQRRRREEEEEEIIIKKKKKKKKKAAOOOOOOOOOCOFCZZCZZZZZVVVVDDDDDDDDDDHHHHHHHWWEHJJJJJUUNNNNNNNNNGCJJMMMMMMMMWWWWWWWPPPPWPW
KKKKKKKKKKKAAXCCCCCCCCCCCCIQQRRREEEEEEEIIIKKKKKKKAAOOOOOOOOOOOOOCZZZZZZZZZVVVVDDDDDDDDDDDHHHEEEEEJJJJJJJNNNNNNNNNNNJJJMMMMMMMMWWWWWWWWWWWWWW
KKKKKKKKKKCCCCCCCCCCCCCCCCCQHHHHEEEEEEIIIKKKKKKKAAKOOOOOOOOOOOOOOZZZZZZZZZZVVDDDDDDDDDDDDHHHHEEEJJJJJJJJYYYYFNNNNNNNJJMMMMMMMMWWWWWDWWTTTTTW
KKKKKKKKCCCCCCCCCCCCCCCCCCCQQQHHHEEEEEIKKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZZVVDDDDDDDDDDDDDDDEEEJJJJJJJJJYYYMIINNNNJJJMMMMMMMMWWWWWDDWWWWWTTT
KKKKKKVKCCCCCCCCCCCCCCKKCCMQQQHHHEEEEEKIKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZVVVVDDDDDDDDLLDDDEEEEEJJJJJJJJYYYYIIINNNNNIIMMMMMMMWWWWWDDDDTTTTTT
KKKKKVVVPPCBCBBBCBBBBBBBBPQQQQHHHHKKEKKIKKKKKKKKKKKKOOOOOOOOOOOOOZZZZZZZZZVVVVDDDDDDDDLLDDDDEEEEEEEEJYJJYYYYIIINNNNNIIIIMMMMWWWWWWWDDCTTTTTT
KKKKKVVVVVVBBBBBBBBBBBBBBPQQQQQHHKKKKKKKKKKKKKKKKKKKKOOOOOOOOOOAOOZZZZZZZZZVVVDDDDLLLLLLDDDDEEEEEEEEYYJJYYYYYIIIINNIIIIIMMMMMTWWWWWWTTTTTTTT
KKKKVVVVVVBBBBBBBBBBBBBBBBQQQQQQHHKKKKKKKKKKKKKKKKKKOOOOOOOOOOJOOOZZZZZIZZIIIVDDDLLLLLLEEEEEEEEEEEEYYYYJYYYYIIIIIIIIIIITMTMMMTWWWWWTTTTTTTTT
KKKKVVVVVVVBBBBBBBBBBBBBBQQQQQQHHHKKKKKKKKKWWKKKKKKKOOOOOOOOOOOOZZZZZZZIIIIIIIDDDLLLLLLLLEEEEEEEEEEYYYYYYYYYYIIIIIIIQIITTTTTTTWWWTTTTTTTTTTT
KKKKVVVVVVVBBBBBBBBBBBBBBBQQQQQQHHKKKKKKKWWWWWKKYKKOOOOPOOOOOOOOOOZZZZZIIIIIIIIDDLLLLLLLLLEEEEEEEEEYYYYYYYYYIIIIIIITTTTTTTTTTTTTWTTTTTTTTTTT
KKKKKVVVVXVVLBBBBBBBBBBBBBBQQQQLLLKKKKKKWWWWWWKKYOOOOOOPPPPOOOOOOZZZZZZIIIIIIIIILLLLLLLLLLLEYYEYYYYYYYYYYYYIIIIIIITTTTTTTTTTTTTTTTTTTTTTTTTT
KKKKKKKKVLLLLBBBBBBBBBBBBBQQTTQLLLKKKKKKWWWWIIIOOOOOOOPPPPPPPPPOOZZZZZZIIIIIIIIIIILLLLLLLLDDDYYYYYYYYYYYYYTPPIIIIITTTTTTTTTTTTTRRTTTTTTTTTTT
KKKKKKLLLLLLLBBBBBBBBBBBBBBBTTTLLLLKZKRKOOWIIIIIOOOOOPPPPPPPPOOOOOZZZZZIIIIIIIIIIILLLLLLLLDDDFYYYYYYYYYYYYTPPNIIINTETATTTTTTTTRRRRRRTTTTTTTT
KKKKKKKLRLLLLJBBBBBBBBBBBBGLLLLLLLLLLVKKOOOIIIIOOOOOOOOOPPPPPPPOPZZZZZZIIIIIIIIIILLLLLLLLLLDDFYYYYYYYYYYYYPPPNNNNNTTTTTTTTTTTTRRRRRRLLTTTTTT
KKKKKKKLLLLBBBBBBBBBBBBBBGGLLLLLLLLLLVKKOOOIOOOOOOOOOOPPPPPPPPPPPZZZZZIIIIIIIIIIILLLLLLLLLDDDDKKYYYYYYYYYYPPNNNNNNNNTTTCCTCTPRRRRRRRLPTTTTTV
KKKKKKLLLELLBLLLBBBBEBBBBBBLLLLLLLLLLVVOOYOOOOOOOOOOOPPPPPPPPPPZZZZZZZZIIIIIIIIIILLLLULLLLLDDDKKYYYYYYYYYPPPNNNNNNNNCCCCCCCPPRRRRRRLLITIIVVV
KKKKKLLLLLLLLLLLLLCBBBBBCCBLLLLLLLLLLVYYYYOOOOOOOOOOOPPPPPPPPPPZZZZZZZZIIIIIIIIIZLJLULLLLLGGDDKKKYYYYYYPPPPPNONNNNNNCCCCCCCPPPRPPRRLLIIIIVVV
KKKKKKKLLLLLLLLLLLCCCCCBCCLLLLLLLLLLLVYYYYYYOYOOOOOOOOWWPPPPPPPPZZZZZZZIIIIIIIZIZLJLULLLLLGGGDDDPPYYYYYYPPPNNNNNNNNNCCCCCCCCPPPPPRRRRRIVVVVV
KKKKKKKLDLLLLLLLLYCCCCCBCLLLLLLLLLLVVVYYYYYYYYYOOOOOOOWWPWPWPPHPPZPZZZZIIZZZIIZIZZEEEQQQQQGGGDDDGPPPYYPPPPNJNNNNNNNNNCCCCCCCCCPPPRRRRRVVVVVV
KKKKKKDNDLLLLLLLLYCCCCCCCCCPPDDLLLLVVVYYYYYYYYOOOOOOOOWWWWWWHHHPPPPHHHZZZZZZZIZZZEEEEEQQQQQGGDGGGPPPPPPPPPNNNNNNNNNNCCCCCCCCCPPPPRRRVRVVVVVV
KKKKKKDDDDDDLLLLYYYYCCCCCCCPPDPSSPVVVVYYYYYYYYOWOOOWWWWWWWWHHHHHHHHHHZZZZZZZZIZZZEEEEEQQQQQQGGGNNPNNPPPPPPPNNVNNCCCNCCCCICCCINPPPRRVVVVVVVVV
DKKKKKDDDDDDTLLYYYYYYCCCCCCPPPPPSPPVVVYYYYYYYYWWOOWWWWWWWWHHHHHHHHHHFZZZZZZZZZZZEEEEQQQQQQQQQGNNNNNNPPPPPPPPVVVWCCCNCCCIIIIIINPPPRRIIIVVVVVV
DDDDDDDDDDDTTLLYYYYYYCYCCCPPPPPPPPVVVVYYYYYYYYWWWWWWWWWWWWHHHHHHHHHHFZFZZZZZZZZZEEEEQQQQQQQQQGNNNNNNNNPPPLPPPVVWWCNNCCCIIIIIIPPPPRIIYVVVVVVV
DDDDDDDDDDDTTLLTTYYYYYYYCPPPPPPPVPPVVYYYYYYYYYYWWWWWWWWWWHHHHHHHHHHFFFFFZZZZZEEEEEEEQQQQQBGGNNNNNNNNNNNPPWWWWWWWWCCCCHHIIIIIIIIPIIIIIVVVVVVV
DDDDDDDDDDDDTTTTTTYTTTYYCCPPPPPPVVVVYYGYYYYYYYYWWWWWWWWWWWHHHHHHHHFFFFFFZZZZZEEEEEEEEQQBBBGGGNNNNNNNNNNNNNWWWWWWWCCCCCHHIIIIIIIIIIIIIIVVVVVV
KKDDDDDDDDDDTTTTTTTTTTTTCCCPPPPPVVVVVYYYYYYYYYWWWWWWWWWWWHHHHHHHHHFFFFFFFZZZZEEEEEEEQQQBBBBBGBBNNNNNNNNNNNWWWWWWWWWWHHHHHIIIIIIIIIIILLLVVLVL
KKDDDDDDDDTTTTTTTTTTTTTTCCCPPPPVVVVVYYYYYYYYYYWWWWWWWWWWWWHHHHHHHFFFFFFFFFFZZEEEEEEBQQQBBBBBBBBBNNNNNNNNNNWWWWWWWWWMHHHHHIIIIIIIIIIILLLLLLVL
KKKDDDDDHDTTTTTTTTTTTTTCCCPPPPPPPPVYYYYYYYYYYYWWWWWWWWWWWWHHHHHHHHQQFFFFFFFZZEEZEEBBQQQQBBBBBBBBBBNNNNNNNNWWWWWWWWWWHHHHHIIIIIIIIIIILLLLLLVL
KKKDDDDDDTTTTTTTTTTTTTTCCPPPPPPPPCYYYYYYYYYYRYWWWWWWWWWWWWHHHHHHHHQFFFFFFFFFZZZZZERBBBBBBBBBBBBBBBBBNNNWWWWWWWWWWWWWWHHNIIIIIIIIIIIICLLLLLLL
KKDDDDDDDTTTTTTTTTTTTTTTCCCPPPPPPCYLLYYLYYYRRWWWWWWWWWWWHHHHHHHHHHHHFGFFZZFFZZZEEEEEBBBBBBBBBBBBBBNNNNWWWWWWWWWWWWWNNNHNIIIIIIIIIIIICCLLLLLL
KKKKDDDDTTTTTTTTTTTTTTTCCCCCPPPPPYYYLLLLLYYRRRRRWWWTTWWWWQQHHHHHHHHHHHHFZZZZZZZEQEEEBXBBBBBBBBBBBBNNNNNWWWWWWWWWWWWWNNNNIIIIIIIIIIIICCLLLLLL

91
12/mylib.c Normal file
View file

@ -0,0 +1,91 @@
#include "_.h"
// NOT MY CODE
// https://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c
char** str_split(char* str, const char a_delim)
{
char *a_str = strdup(str);
char** result = 0;
size_t count = 0;
char* tmp = a_str;
char* last_comma = 0;
char delim[2];
delim[0] = a_delim;
delim[1] = 0;
while (*tmp)
{
if (a_delim == *tmp)
{
count++;
last_comma = tmp;
}
tmp++;
}
count += last_comma < (a_str + strlen(a_str) - 1);
count++;
result = malloc(sizeof(char*) * count);
if (result)
{
size_t idx = 0;
char* token = strtok(a_str, delim);
while (token)
{
//assert(idx < count);
*(result + idx++) = strdup(token);
token = strtok(0, delim);
}
//assert(idx == count - 1);
*(result + idx) = 0;
}
free(a_str);
return result;
}
int str_index(char *str, char c) {
int i = 0;
while (str[i])
if (str[i++] == c)
return i;
return -1;
}
int number_of_element(char *str, char c) {
int nbr = 0;
for (int i = 0; str[i] != '\0'; i++)
if (str[i] == c)
nbr++;
return nbr;
}
long gmc(long a, long b) {
if (b == 0)
return a;
return gmc(b, a % b);
}
long lmc(long a, long b) {
return (a / gmc(a, b)) * b;
}
long lmcs(int array[], int n) {
long result = array[0];
for (int i = 1; i < n; i++)
result = lmc(result, array[i]);
return result;
}
long strslen(char **strs) {
long count = 0;
while (strs[count])
count++;
return count;
}

69
12/part1.c Normal file
View file

@ -0,0 +1,69 @@
#include "_.h"
int count = 0;
long check(int ***already, char **inputs, int y, int x) {
(*already)[y][x] = inputs[y][x];
long perimeter = 0;
if (inputs[y + 1] != NULL && inputs[y][x] == inputs[y + 1][x]) {
if ((*already)[y + 1][x] == 0)
perimeter += check(already, inputs, y + 1, x);
}
else
perimeter += 1;
if (y > 0 && inputs[y][x] == inputs[y - 1][x]) {
if ((*already)[y - 1][x] == 0)
perimeter += check(already, inputs, y - 1, x);
}
else
perimeter += 1;
if (x < strlen(inputs[y]) - 1 &&
inputs[y][x] == inputs[y][x + 1]) {
if ((*already)[y][x + 1] == 0)
perimeter += check(already, inputs, y, x + 1);
}
else
perimeter += 1;
if (x > 0 && inputs[y][x] == inputs[y][x - 1]) {
if ((*already)[y][x - 1] == 0)
perimeter += check(already, inputs, y, x - 1);
}
else
perimeter += 1;
count += 1;
return perimeter;
}
int main(int argc, char **argv) {
if (argc != 2)
return 1;
char *input = argv[1];
char **inputs = str_split(strdup(input), '\n');
int len = strlen(inputs[0]);
int lens = strslen(inputs);
int **already = calloc(lens + 1, sizeof(int*));
for (int i = 0; i == 0 || inputs[i - 1] != NULL; i++)
already[i] = calloc(len + 1, sizeof(int));
long result = 0;
for (int i = 0; inputs[i] != NULL; i++) {
for (int j = 0; inputs[i][j] != '\0'; j++) {
if (already[i][j] == 0) {
int perimeter = (check(&already, inputs, i, j));
result += (count * perimeter);
//printf("perimeter: %d\n", perimeter);
//printf("count: %d\n", count);
//printf("result: %ld\n", result);
count = 0;
}
}
}
printf("result: %ld\n", result);
return 0;
}

150
12/part2.c Normal file
View file

@ -0,0 +1,150 @@
#include "_.h"
int count = 1;
int len = 0;
int lens = 0;
void set(int ***already, char **inputs, int y, int x) {
(*already)[y][x] = inputs[y][x];
if (inputs[y + 1] != NULL && inputs[y][x] == inputs[y + 1][x]
&& (*already)[y + 1][x] == 0) {
set(already, inputs, y + 1, x);
count++;
}
if (y > 0 && inputs[y][x] == inputs[y - 1][x]
&& (*already)[y - 1][x] == 0) {
set(already, inputs, y - 1, x);
count++;
}
if (x < strlen(inputs[y]) - 1 && inputs[y][x] == inputs[y][x + 1]
&& (*already)[y][x + 1] == 0) {
set(already, inputs, y, x + 1);
count++;
}
if (x > 0 && inputs[y][x] == inputs[y][x - 1]
&& (*already)[y][x - 1] == 0) {
set(already, inputs, y, x - 1);
count++;
}
}
int test(int ***already, int ***sides_lines, int check, int *sides, int y, int x, int h, int w, int add_y, int add_x) {
int i = 0;
int abs_y = ABS(add_y), abs_x = ABS(add_x);
for (i = 0; y >= -1 && x >= -1 && y + (i * abs_x) <= h && x + (i * abs_y) <= w && (*already)[y + (i * abs_x)][x + (i * abs_y)] != check && (*already)[y + (i * abs_x) + add_y][x + (i * abs_y) + add_x] == check && (*sides_lines)[y + (i * abs_x)][x + (i * abs_y)] == 0; i++) {
if ((i == 0 && (*sides_lines)[y + (-1 * abs_x)][x + (-1 * abs_y)] != 0) ||
(*sides_lines)[y + 1 + (i * abs_x)][x + (i * abs_y)] != 0 ||
(*sides_lines)[y + (i * abs_x)][x + 1 + (i * abs_y)] != 0 ||
(abs_x != 0 && (*sides_lines)[y + i][x - 1] != 0) ||
(abs_y != 0 && (*sides_lines)[y - 1][x + i] != 0)) {
(*sides_lines)[y][x] = 0;
for (; i >= 0; i--)
(*sides_lines)[y + i][x] = 0;
i = 0;
break;
}
(*sides_lines)[y + (i * abs_x)][x + (i * abs_y)] = *sides + 1;
}
if (i > 0) {
int top = 0, bottom = 0, left = 0, right = 0;
for (int j = 0; j < i; j++) {
top = top ? 1 : (*already)[y - 1 + (j * abs_x)][x + (j * abs_y)] == check;
if (top && add_y != 1) {
test(already, sides_lines, check, sides, y + 1, x, h, w, 0, 1);
test(already, sides_lines, check, sides, y + 1, x, h, w, 0, -1);
}
bottom = bottom ? 1 : (*already)[y + 1 + (j * abs_x)][x + (j * abs_y)] == check;
if (bottom && add_y != -1) {
test(already, sides_lines, check, sides, y - 1, x, h, w, 0, 1);
test(already, sides_lines, check, sides, y - 1, x, h, w, 0, -1);
}
right = right ? 1 : (*already)[y + (j * abs_x)][x + 1 + (j * abs_y)] == check;
if (right && add_x != 1) {
test(already, sides_lines, check, sides, y, x, h, w, 1, 0);
test(already, sides_lines, check, sides, y, x, h, w, -1, 0);
}
left = left ? 1 : (*already)[y + (j * abs_x)][x - 1 + (j * abs_y)] == check;
if (left && add_x != -1) {
test(already, sides_lines, check, sides, y, x, h, w, 1, 0);
test(already, sides_lines, check, sides, y, x, h, w, -1, 0);
}
}
*sides += (top + bottom + left + right);
return 1;
}
return 0;
}
int get_side(int ***already, int check, int h, int w) {
int **sides_lines = calloc(lens + 2, sizeof(int*));
for (int i = -2; i < len + 2; i++) {
sides_lines[i] = calloc(len + 2, sizeof(int));
for (int j = -2; j < len + 2; j++)
sides_lines[i][j] = 0;
}
int **new_already = calloc(lens + 2, sizeof(int*));
for (int i = -2; i < len + 2; i++) {
new_already[i] = calloc(len + 2, sizeof(int));
for (int j = -2; j < len + 2; j++) {
new_already[i][j] = (*already)[i][j];
}
}
int sides = 0;
for (int y = -1; y < h + 1; y++) {
for (int x = -1; x < w + 1; x++) {
if (x >= 0 && y >= 0 && x < w && y < h) {
if ((*already)[y][x] == check) {
new_already[y][x] = -1;
continue;
}
}
test(already, &sides_lines, check, &sides, y, x, h, w, 1, 0);
test(already, &sides_lines, check, &sides, y, x, h, w, -1, 0);
test(already, &sides_lines, check, &sides, y, x, h, w, 0, 1);
test(already, &sides_lines, check, &sides, y, x, h, w, 0, -1);
}
}
(*already) = new_already;
return sides;
}
int main(int argc, char **argv) {
if (argc != 2)
return 1;
char *input = argv[1];
char **inputs = str_split(strdup(input), '\n');
len = strlen(inputs[0]);
lens = strslen(inputs);
int **already = calloc(lens + 2, sizeof(int*));
for (int i = -2; i < len + 2; i++)
already[i] = calloc(len + 2, sizeof(int));
long result = 0;
for (int i = 0; inputs[i] != NULL; i++) {
for (int j = 0; inputs[i][j] != '\0'; j++) {
if (already[i][j] == 0) {
set(&already, inputs, i, j);
long side = get_side(&already, already[i][j], lens, len);
result += (count * side);
printf("side: %ld\n", side);
printf("count: %d\n\n", count);
//printf("result: %ld\n", result);
count = 1;
}
}
}
printf("result: %ld\n", result);
return 0;
}

4
12/test.txt Normal file
View file

@ -0,0 +1,4 @@
AAAA
BBCD
BBCC
EEEC

5
12/test2.txt Normal file
View file

@ -0,0 +1,5 @@
OOOOO
OXOXO
OOOOO
OXOXO
OOOOO

10
12/test3.txt Normal file
View file

@ -0,0 +1,10 @@
RRRRIICCFF
RRRRIICCCF
VVRRRCCFFF
VVRCCCJFFF
VVVVCJJCFE
VVIVCCJJEE
VVIIICJJEE
MIIIIIJJEE
MIIISIJEEE
MMMISSJEEE

5
12/test4.txt Normal file
View file

@ -0,0 +1,5 @@
EEEEE
EXXXX
EEEEE
EXXXX
EEEEE

6
12/test5.txt Normal file
View file

@ -0,0 +1,6 @@
AAAAAA
AAABBA
AAABBA
ABBAAA
ABBAAA
AAAAAA

7
12/test6.txt Normal file
View file

@ -0,0 +1,7 @@
CCCJFFF
VCJJCFE
VCCJJEE
IICJJEE
IIIJJEE
ISIJEEE
ISSJEEE