# el-montasir/piscine-1337 architecture

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

- Interactive diagram: https://gitdiagram.com/el-montasir/piscine-1337
- Repository: https://github.com/el-montasir/piscine-1337

## Overview

This repository is a collection of standalone C exercises rather than a single application. The principal workflow is a caller supplying values, strings, or command-line arguments to an exercise routine, which computes a value or writes output. The tree shows capabilities across formatted output, pointers and arrays, string operations, conversion and mathematics, argument handling, and allocation. No README is present; sampled files establish only a few internal calls, so the graph avoids inferring wiring between exercises.

Main entry points: [`c00/ex00/ft_putchar.c`](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex00/ft_putchar.c) (Character and sequence output), [`c00/ex05/ft_print_comb.c`](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex05/ft_print_comb.c) (Combination output), [`c00/ex07/ft_putnbr.c`](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex07/ft_putnbr.c) (Integer output), [`c04/ex04/ft_putnbr_base.c`](https://github.com/el-montasir/piscine-1337/blob/main/c04/ex04/ft_putnbr_base.c) (Base number output)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_output["Output exercises"]
  node_c00simple["Character and sequence output<br/>[ft_putchar.c]"]
  node_c00comb["Combination output<br/>[ft_print_comb.c]"]
  node_c00number["Integer output<br/>[ft_putnbr.c]"]
end

subgraph group_memory["Pointers and arrays"]
  node_c01ptr["Pointer and swap routines<br/>[ft_swap.c]"]
  node_c01div["Division routines<br/>[ft_div_mod.c]"]
  node_c01array["Integer array reversal<br/>[ft_rev_int_tab.c]"]
end

subgraph group_strings["String operations"]
  node_c02copy["String copying<br/>[ft_strcpy.c]"]
  node_c02classify["String classification<br/>[ft_str_is_alpha.c]"]
  node_c02case["Case conversion<br/>[ft_strupcase.c]"]
  node_c03compare["String comparison<br/>[ft_strcmp.c]"]
  node_c03concat["String concatenation<br/>[ft_strcat.c]"]
  node_c03search["Substring search<br/>[ft_strstr.c]"]
end

subgraph group_compute["Conversion and math"]
  node_c04parse["Integer parsing<br/>[ft_atoi.c]"]
  node_c04format["Base number output<br/>[ft_putnbr_base.c]"]
  node_c05factorial["Factorial routines"]
  node_c05sequence["Fibonacci and powers<br/>[ft_fibonacci.c]"]
  node_c05prime["Prime and square routines<br/>[ft_sqrt.c]"]
end

subgraph group_programs["Arguments and allocation"]
  node_c06params["Argument display<br/>[ft_print_params.c]"]
  node_c06sort["Argument sorting<br/>[ft_sort_params.c]"]
  node_c07dup["String duplication<br/>[ft_strdup.c]"]
  node_c07range["Integer range allocation<br/>[ft_range.c]"]
end

node_caller(("Routine caller"))
node_stdout["Standard output"]

node_caller -->|"invokes"| node_c00simple
node_caller -->|"invokes"| node_c00comb
node_caller -->|"invokes"| node_c00number
node_caller -->|"invokes"| node_c01ptr
node_caller -->|"invokes"| node_c01div
node_caller -->|"invokes"| node_c01array
node_caller -->|"invokes"| node_c02copy
node_caller -->|"invokes"| node_c02classify
node_caller -->|"invokes"| node_c02case
node_caller -->|"invokes"| node_c03compare
node_caller -->|"invokes"| node_c03concat
node_caller -->|"invokes"| node_c03search
node_caller -->|"invokes"| node_c04parse
node_caller -->|"invokes"| node_c04format
node_caller -->|"invokes"| node_c05factorial
node_caller -->|"invokes"| node_c05sequence
node_caller -->|"invokes"| node_c05prime
node_caller -->|"invokes"| node_c06params
node_caller -->|"invokes"| node_c06sort
node_caller -->|"invokes"| node_c07dup
node_caller -->|"invokes"| node_c07range
node_c00simple -->|"writes"| node_stdout
node_c00comb -->|"writes"| node_stdout
node_c00number -->|"writes"| node_stdout
node_c04format -->|"writes"| node_stdout

click node_c00simple "https://github.com/el-montasir/piscine-1337/blob/main/c00/ex00/ft_putchar.c"
click node_c00comb "https://github.com/el-montasir/piscine-1337/blob/main/c00/ex05/ft_print_comb.c"
click node_c00number "https://github.com/el-montasir/piscine-1337/blob/main/c00/ex07/ft_putnbr.c"
click node_c01ptr "https://github.com/el-montasir/piscine-1337/blob/main/c01/ex02/ft_swap.c"
click node_c01div "https://github.com/el-montasir/piscine-1337/blob/main/c01/ex03/ft_div_mod.c"
click node_c01array "https://github.com/el-montasir/piscine-1337/blob/main/c01/ex07/ft_rev_int_tab.c"
click node_c02copy "https://github.com/el-montasir/piscine-1337/blob/main/c02/ex00/ft_strcpy.c"
click node_c02classify "https://github.com/el-montasir/piscine-1337/blob/main/c02/ex02/ft_str_is_alpha.c"
click node_c02case "https://github.com/el-montasir/piscine-1337/blob/main/c02/ex07/ft_strupcase.c"
click node_c03compare "https://github.com/el-montasir/piscine-1337/blob/main/c03/ex00/ft_strcmp.c"
click node_c03concat "https://github.com/el-montasir/piscine-1337/blob/main/c03/ex02/ft_strcat.c"
click node_c03search "https://github.com/el-montasir/piscine-1337/blob/main/c03/ex04/ft_strstr.c"
click node_c04parse "https://github.com/el-montasir/piscine-1337/blob/main/c04/ex03/ft_atoi.c"
click node_c04format "https://github.com/el-montasir/piscine-1337/blob/main/c04/ex04/ft_putnbr_base.c"
click node_c05factorial "https://github.com/el-montasir/piscine-1337/blob/main/c05/ex00/ft_iterative_factorial.c"
click node_c05sequence "https://github.com/el-montasir/piscine-1337/blob/main/c05/ex04/ft_fibonacci.c"
click node_c05prime "https://github.com/el-montasir/piscine-1337/blob/main/c05/ex05/ft_sqrt.c"
click node_c06params "https://github.com/el-montasir/piscine-1337/blob/main/c06/ex01/ft_print_params.c"
click node_c06sort "https://github.com/el-montasir/piscine-1337/blob/main/c06/ex03/ft_sort_params.c"
click node_c07dup "https://github.com/el-montasir/piscine-1337/blob/main/c07/ex00/ft_strdup.c"
click node_c07range "https://github.com/el-montasir/piscine-1337/blob/main/c07/ex01/ft_range.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_c00simple,node_c00comb,node_c00number toneBlue
class node_c01ptr,node_c01div,node_c01array toneAmber
class node_c02copy,node_c02classify,node_c02case,node_c03compare,node_c03concat,node_c03search toneMint
class node_c04parse,node_c04format,node_c05factorial,node_c05sequence,node_c05prime toneRose
class node_c06params,node_c06sort,node_c07dup,node_c07range,node_caller,node_stdout toneIndigo
```

## Components

### Output exercises

- [Character and sequence output](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex00/ft_putchar.c): `c00/ex00/ft_putchar.c`
- [Combination output](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex05/ft_print_comb.c): `c00/ex05/ft_print_comb.c`
- [Integer output](https://github.com/el-montasir/piscine-1337/blob/main/c00/ex07/ft_putnbr.c): `c00/ex07/ft_putnbr.c`

### Pointers and arrays

- [Pointer and swap routines](https://github.com/el-montasir/piscine-1337/blob/main/c01/ex02/ft_swap.c): `c01/ex02/ft_swap.c`
- [Division routines](https://github.com/el-montasir/piscine-1337/blob/main/c01/ex03/ft_div_mod.c): `c01/ex03/ft_div_mod.c`
- [Integer array reversal](https://github.com/el-montasir/piscine-1337/blob/main/c01/ex07/ft_rev_int_tab.c): `c01/ex07/ft_rev_int_tab.c`

### String operations

- [String copying](https://github.com/el-montasir/piscine-1337/blob/main/c02/ex00/ft_strcpy.c): `c02/ex00/ft_strcpy.c`
- [String classification](https://github.com/el-montasir/piscine-1337/blob/main/c02/ex02/ft_str_is_alpha.c): `c02/ex02/ft_str_is_alpha.c`
- [Case conversion](https://github.com/el-montasir/piscine-1337/blob/main/c02/ex07/ft_strupcase.c): `c02/ex07/ft_strupcase.c`
- [String comparison](https://github.com/el-montasir/piscine-1337/blob/main/c03/ex00/ft_strcmp.c): `c03/ex00/ft_strcmp.c`
- [String concatenation](https://github.com/el-montasir/piscine-1337/blob/main/c03/ex02/ft_strcat.c): `c03/ex02/ft_strcat.c`
- [Substring search](https://github.com/el-montasir/piscine-1337/blob/main/c03/ex04/ft_strstr.c): `c03/ex04/ft_strstr.c`

### Conversion and math

- [Integer parsing](https://github.com/el-montasir/piscine-1337/blob/main/c04/ex03/ft_atoi.c): `c04/ex03/ft_atoi.c`
- [Base number output](https://github.com/el-montasir/piscine-1337/blob/main/c04/ex04/ft_putnbr_base.c): `c04/ex04/ft_putnbr_base.c`
- [Factorial routines](https://github.com/el-montasir/piscine-1337/blob/main/c05/ex00/ft_iterative_factorial.c): `c05/ex00/ft_iterative_factorial.c`
- [Fibonacci and powers](https://github.com/el-montasir/piscine-1337/blob/main/c05/ex04/ft_fibonacci.c): `c05/ex04/ft_fibonacci.c`
- [Prime and square routines](https://github.com/el-montasir/piscine-1337/blob/main/c05/ex05/ft_sqrt.c): `c05/ex05/ft_sqrt.c`

### Arguments and allocation

- [Argument display](https://github.com/el-montasir/piscine-1337/blob/main/c06/ex01/ft_print_params.c): `c06/ex01/ft_print_params.c`
- [Argument sorting](https://github.com/el-montasir/piscine-1337/blob/main/c06/ex03/ft_sort_params.c): `c06/ex03/ft_sort_params.c`
- [String duplication](https://github.com/el-montasir/piscine-1337/blob/main/c07/ex00/ft_strdup.c): `c07/ex00/ft_strdup.c`
- [Integer range allocation](https://github.com/el-montasir/piscine-1337/blob/main/c07/ex01/ft_range.c): `c07/ex01/ft_range.c`

### Other components

- **Routine caller**
- **Standard output**

## Connections

- Routine caller → Character and sequence output: invokes
- Routine caller → Combination output: invokes
- Routine caller → Integer output: invokes
- Routine caller → Pointer and swap routines: invokes
- Routine caller → Division routines: invokes
- Routine caller → Integer array reversal: invokes
- Routine caller → String copying: invokes
- Routine caller → String classification: invokes
- Routine caller → Case conversion: invokes
- Routine caller → String comparison: invokes
- Routine caller → String concatenation: invokes
- Routine caller → Substring search: invokes
- Routine caller → Integer parsing: invokes
- Routine caller → Base number output: invokes
- Routine caller → Factorial routines: invokes
- Routine caller → Fibonacci and powers: invokes
- Routine caller → Prime and square routines: invokes
- Routine caller → Argument display: invokes
- Routine caller → Argument sorting: invokes
- Routine caller → String duplication: invokes
- Routine caller → Integer range allocation: invokes
- Character and sequence output → Standard output: writes
- Combination output → Standard output: writes
- Integer output → Standard output: writes
- Base number output → Standard output: writes
