# oomsveta/42-piscine-february-2026 architecture

> Architecture diagram of the GitHub repository oomsveta/42-piscine-february-2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/oomsveta/42-piscine-february-2026
- Repository: https://github.com/oomsveta/42-piscine-february-2026

## Overview

This repository is a portfolio of 42 Piscine C exercise solutions, not a single application. Its principal end-to-end workflows are separate command-line programs: BSQ reads and solves maps, Rush 01 parses clues and solves a Skyscrapers grid, and Rush 02 loads a dictionary and converts numbers to words. Other branches are independent C exercises and small utilities. Edges are limited to calls visible in excerpts or relationships explicitly documented by the README; unsampled implementations are represented by their exact enclosing directories where needed.

Main entry points: [`rush_02/ex00/src/main.c`](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/main.c) (Converter entry), [`rush_01/ex00/main.c`](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/main.c) (Skyscraper entry), [`bsq/src/main.c`](https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/main.c) (BSQ entry), [`c_10/ex02/src/main.c`](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/main.c) (Tail entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_puzzles["Puzzle programs"]
  node_bsq_entry["BSQ entry<br/>[main.c]"]
  node_bsq_parse["Map parser<br/>[parser.c]"]
  node_bsq_solver["Map solver<br/>[solver.c]"]
  node_bsq_helpers["BSQ helpers<br/>[bsq_utils.c]"]
  node_skyscraper_entry["Skyscraper entry<br/>[main.c]"]
  node_skyscraper_parser["Clue parser<br/>[parser.c]"]
  node_skyscraper_solver["Grid solver<br/>[solver.c]"]
  node_skyscraper_printer["Grid printer<br/>[printer.c]"]
end

subgraph group_wordtools["Word conversion"]
  node_dict_entry["Converter entry<br/>[main.c]"]
  node_dict_parser["Dictionary parser<br/>[parser.c]"]
  node_dict_reader["Dictionary input<br/>[read_line.c]"]
  node_word_conversion["Number conversion<br/>[number_to_words.c]"]
  node_word_repl["Conversion REPL<br/>[repl.c]"]
  node_dict_storage["Dictionary structures<br/>[dict.h]"]
end

subgraph group_cli["File utilities"]
  node_cat_tool["File display<br/>[main.c]"]
  node_tail_entry["Tail entry<br/>[main.c]"]
  node_tail_options["Tail options<br/>[parser.c]"]
  node_tail_engine["Tail engine<br/>[tail.c]"]
  node_tail_buffer["Ring buffering<br/>[ring_buffer.c]"]
  node_hexdump["Hexdump stub<br/>[main.c]"]
end

subgraph group_libraries["C data structures"]
  node_stock_strings["Stock strings<br/>[ft_strs_to_tab.c]"]
  node_linked_lists["Linked-list operations"]
  node_list_reverse["List reversal"]
  node_sorted_list["Sorted-list insertion"]
  node_btree_insert["Tree insertion"]
  node_btree_search["Tree search"]
  node_btree_levels["Level traversal"]
end

subgraph group_exercises["C exercises"]
  node_basic_exercises["Core C exercises<br/>[ft_putchar.c]"]
  node_pointer_exercises["Pointer exercises<br/>[ft_ft.c]"]
  node_string_exercises["String exercises<br/>[ft_strcpy.c]"]
  node_search_exercises["String search<br/>[ft_strstr.c]"]
  node_number_exercises["Number conversion<br/>[ft_atoi_base.c]"]
  node_algorithm_exercises["Algorithms"]
end

node_user(("Command-line user"))

node_user -->|"provides input"| node_bsq_entry
node_bsq_entry -->|"parses map"| node_bsq_parse
node_bsq_entry -->|"solves map"| node_bsq_solver
node_user -->|"provides clues"| node_skyscraper_entry
node_skyscraper_entry -->|"parses clues"| node_skyscraper_parser
node_skyscraper_entry -->|"solves grid"| node_skyscraper_solver
node_skyscraper_entry -->|"prints grid"| node_skyscraper_printer
node_user -->|"provides number"| node_dict_entry
node_dict_entry -->|"reads entries"| node_dict_reader
node_dict_entry -->|"parses entries"| node_dict_parser
node_dict_entry -->|"converts number"| node_word_conversion
node_dict_entry -->|"starts REPL"| node_word_repl
node_dict_parser -->|"fills structures"| node_dict_storage
node_user -->|"selects file"| node_cat_tool
node_user -->|"selects files"| node_tail_entry
node_tail_entry -->|"parses options"| node_tail_options
node_tail_entry -->|"tails files"| node_tail_engine
node_user -.->|"invokes utility"| node_hexdump

click node_bsq_entry "https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/main.c"
click node_bsq_parse "https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/parser.c"
click node_bsq_solver "https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/solver.c"
click node_bsq_helpers "https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/bsq_utils.c"
click node_skyscraper_entry "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/main.c"
click node_skyscraper_parser "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/parser.c"
click node_skyscraper_solver "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/solver.c"
click node_skyscraper_printer "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/printer.c"
click node_dict_entry "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/main.c"
click node_dict_parser "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/parsing/parser.c"
click node_dict_reader "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/parsing/read_line.c"
click node_word_conversion "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/number_to_words.c"
click node_word_repl "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/repl.c"
click node_dict_storage "https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/include/dict.h"
click node_cat_tool "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex01/src/main.c"
click node_tail_entry "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/main.c"
click node_tail_options "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/parser.c"
click node_tail_engine "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/tail.c"
click node_tail_buffer "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/ring_buffer.c"
click node_hexdump "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex03/src/main.c"
click node_stock_strings "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_08/ex04/ft_strs_to_tab.c"
click node_linked_lists "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex12/ft_list_remove_if.c"
click node_list_reverse "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex15/ft_list_reverse_fun.c"
click node_sorted_list "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex16/ft_sorted_list_insert.c"
click node_btree_insert "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex04/btree_insert_data.c"
click node_btree_search "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex05/btree_search_item.c"
click node_btree_levels "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex07/btree_apply_by_level.c"
click node_basic_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_00/ex00/ft_putchar.c"
click node_pointer_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_01/ex00/ft_ft.c"
click node_string_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_02/ex00/ft_strcpy.c"
click node_search_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_03/ex04/ft_strstr.c"
click node_number_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_04/ex05/ft_atoi_base.c"
click node_algorithm_exercises "https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_05/ex08/ft_ten_queens_puzzle.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bsq_entry,node_bsq_parse,node_bsq_solver,node_bsq_helpers,node_skyscraper_entry,node_skyscraper_parser,node_skyscraper_solver,node_skyscraper_printer,node_user toneBlue
class node_dict_entry,node_dict_parser,node_dict_reader,node_word_conversion,node_word_repl,node_dict_storage toneAmber
class node_cat_tool,node_tail_entry,node_tail_options,node_tail_engine,node_tail_buffer,node_hexdump toneMint
class node_stock_strings,node_linked_lists,node_list_reverse,node_sorted_list,node_btree_insert,node_btree_search,node_btree_levels toneRose
class node_basic_exercises,node_pointer_exercises,node_string_exercises,node_search_exercises,node_number_exercises,node_algorithm_exercises toneIndigo
```

## Components

### Puzzle programs

- [BSQ entry](https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/main.c): `bsq/src/main.c`
- [Map parser](https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/parser.c): `bsq/src/parser.c`
- [Map solver](https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/solver.c): `bsq/src/solver.c`
- [BSQ helpers](https://github.com/oomsveta/42-piscine-february-2026/blob/main/bsq/src/bsq_utils.c): `bsq/src/bsq_utils.c`
- [Skyscraper entry](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/main.c): `rush_01/ex00/main.c`
- [Clue parser](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/parser.c): `rush_01/ex00/parser.c`
- [Grid solver](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/solver.c): `rush_01/ex00/solver.c`
- [Grid printer](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_01/ex00/printer.c): `rush_01/ex00/printer.c`

### Word conversion

- [Converter entry](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/main.c): `rush_02/ex00/src/main.c`
- [Dictionary parser](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/parsing/parser.c): `rush_02/ex00/src/parsing/parser.c`
- [Dictionary input](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/parsing/read_line.c): `rush_02/ex00/src/parsing/read_line.c`
- [Number conversion](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/number_to_words.c): `rush_02/ex00/src/number_to_words.c`
- [Conversion REPL](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/src/repl.c): `rush_02/ex00/src/repl.c`
- [Dictionary structures](https://github.com/oomsveta/42-piscine-february-2026/blob/main/rush_02/ex00/include/dict.h): `rush_02/ex00/include/dict.h`

### File utilities

- [File display](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex01/src/main.c): `c_10/ex01/src/main.c`
- [Tail entry](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/main.c): `c_10/ex02/src/main.c`
- [Tail options](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/parser.c): `c_10/ex02/src/parser.c`
- [Tail engine](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/tail.c): `c_10/ex02/src/tail.c`
- [Ring buffering](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex02/src/ring_buffer.c): `c_10/ex02/src/ring_buffer.c`
- [Hexdump stub](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_10/ex03/src/main.c): `c_10/ex03/src/main.c`

### C data structures

- [Stock strings](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_08/ex04/ft_strs_to_tab.c): `c_08/ex04/ft_strs_to_tab.c`
- [Linked-list operations](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex12/ft_list_remove_if.c): `c_12/ex12/ft_list_remove_if.c`
- [List reversal](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex15/ft_list_reverse_fun.c): `c_12/ex15/ft_list_reverse_fun.c`
- [Sorted-list insertion](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_12/ex16/ft_sorted_list_insert.c): `c_12/ex16/ft_sorted_list_insert.c`
- [Tree insertion](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex04/btree_insert_data.c): `c_13/ex04/btree_insert_data.c`
- [Tree search](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex05/btree_search_item.c): `c_13/ex05/btree_search_item.c`
- [Level traversal](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_13/ex07/btree_apply_by_level.c): `c_13/ex07/btree_apply_by_level.c`

### C exercises

- [Core C exercises](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_00/ex00/ft_putchar.c): `c_00/ex00/ft_putchar.c`
- [Pointer exercises](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_01/ex00/ft_ft.c): `c_01/ex00/ft_ft.c`
- [String exercises](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_02/ex00/ft_strcpy.c): `c_02/ex00/ft_strcpy.c`
- [String search](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_03/ex04/ft_strstr.c): `c_03/ex04/ft_strstr.c`
- [Number conversion](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_04/ex05/ft_atoi_base.c): `c_04/ex05/ft_atoi_base.c`
- [Algorithms](https://github.com/oomsveta/42-piscine-february-2026/blob/main/c_05/ex08/ft_ten_queens_puzzle.c): `c_05/ex08/ft_ten_queens_puzzle.c`

### Other components

- **Command-line user**

## Connections

- Command-line user → BSQ entry: provides input (evidence: `bsq/src/main.c`)
- BSQ entry → Map parser: parses map (evidence: `bsq/src/main.c`)
- BSQ entry → Map solver: solves map (evidence: `bsq/src/main.c`)
- Command-line user → Skyscraper entry: provides clues (evidence: `rush_01/ex00/main.c`)
- Skyscraper entry → Clue parser: parses clues (evidence: `rush_01/ex00/main.c`)
- Skyscraper entry → Grid solver: solves grid (evidence: `rush_01/ex00/main.c`)
- Skyscraper entry → Grid printer: prints grid (evidence: `rush_01/ex00/main.c`)
- Command-line user → Converter entry: provides number (evidence: `rush_02/ex00/src/main.c`)
- Converter entry → Dictionary input: reads entries (evidence: `rush_02/ex00/src/main.c`)
- Converter entry → Dictionary parser: parses entries (evidence: `rush_02/ex00/src/main.c`)
- Converter entry → Number conversion: converts number (evidence: `rush_02/ex00/src/main.c`)
- Converter entry → Conversion REPL: starts REPL (evidence: `rush_02/ex00/src/main.c`)
- Dictionary parser → Dictionary structures: fills structures (evidence: `rush_02/ex00/src/parsing/parser.c`)
- Command-line user → File display: selects file (evidence: `c_10/ex01/src/main.c`)
- Command-line user → Tail entry: selects files (evidence: `c_10/ex02/src/main.c`)
- Tail entry → Tail options: parses options (evidence: `c_10/ex02/src/main.c`)
- Tail entry → Tail engine: tails files (evidence: `c_10/ex02/src/main.c`)
- Command-line user → Hexdump stub: invokes utility
