{"id":31731106,"url":"https://github.com/obaskly/42piscine","last_synced_at":"2025-10-09T07:49:59.616Z","repository":{"id":317694041,"uuid":"1068430089","full_name":"obaskly/42piscine","owner":"obaskly","description":"My experience during the 42 C piscine","archived":false,"fork":false,"pushed_at":"2025-10-02T12:23:13.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-02T14:18:25.222Z","etag":null,"topics":["42born2code","42cursus","42piscine","42projects","42school","c","coding","programming","shell"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/obaskly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-02T11:24:25.000Z","updated_at":"2025-10-02T12:24:10.000Z","dependencies_parsed_at":"2025-10-02T14:18:42.684Z","dependency_job_id":"e7617b0b-04a4-4ed9-a9d8-770d6357b172","html_url":"https://github.com/obaskly/42piscine","commit_stats":null,"previous_names":["obaskly/42piscine"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/obaskly/42piscine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obaskly%2F42piscine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obaskly%2F42piscine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obaskly%2F42piscine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obaskly%2F42piscine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/obaskly","download_url":"https://codeload.github.com/obaskly/42piscine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obaskly%2F42piscine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000970,"owners_count":26082974,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42born2code","42cursus","42piscine","42projects","42school","c","coding","programming","shell"],"created_at":"2025-10-09T07:49:57.793Z","updated_at":"2025-10-09T07:49:59.611Z","avatar_url":"https://github.com/obaskly.png","language":"C","readme":"# 42 C Piscine Portfolio\n\n## About this Repository\nThis repository collects my work from the 42 C Piscine. Over four intense weeks I coded exclusively in C and shell, tackling daily exercises, weekend \"rush\" projects, and the final BSQ algorithm challenge. Every folder in this repo mirrors a checkpoint in that journey, from learning how to print a character to parsing complex input and allocating dynamic memory safely.\n\n## Repository Map\nBelow is a quick tour of the top-level folders and their focus areas:\n\n| Directory | Focus | Highlights |\n| --- | --- | --- |\n| `c00` | I/O fundamentals | Printing characters, numbers, and simple combinations without standard library helpers. |\n| `c01` | Pointer basics | Manipulating pointers, references, and simple array utilities. |\n| `C02` | String sanitizers | Implementations for character class checks and case conversions. |\n| `c03` | String operations | Re-creating `strcmp`, `strcat`, substring search, and `strlcat`. |\n| `c04` | Basic libc re-creations | Custom `strlen`, `putstr`, `atoi`, and base conversions. |\n| `C05` | Recursion drills | Factorial, power, Fibonacci, square root, and prime utilities. |\n| `C06` | Command-line handling | Printing program names and sorting parameters from `argv`. |\n| `C07` | Dynamic memory | Custom `strdup`, range allocation helpers, and string joining. |\n| `bsq/ex00` | Final project | Full solver for the \"Biggest Square\" problem with parsing, validation, and output rendering. |\n| `rush00` | Weekend rush #1 | ASCII-art rectangle generator (`rush00`-`rush04`). |\n| `rush01` | Weekend rush #2 | 4x4 Skyscraper puzzle solver with constraint validation. |\n| `shell00` | Shell warm-up | File permissions, archives, and simple command-line exercises. |\n| `shell01` | Shell scripting | Pipeline and text-processing drills using classic Unix tools. |\n\n\u003e Tip: The mix of lowercase/uppercase folder names follows the Piscine's original naming. I kept them intact to preserve the daily hand-in structure.\n\n## Project Highlights\n\n### BSQ (Biggest Square)\nThe `bsq/ex00` directory contains my implementation of the final Piscine challenge. It reads a map describing obstacles, computes the largest possible square without obstacles, and prints the map with the solution highlighted. The project is broken down into:\n\n- `parse_utils.c`, `map_utils.c`, and `memory_utils.c` for input parsing and safe memory management.\n- `solver.c` with a dynamic-programming approach to identify the biggest square efficiently.\n- `file_utils.c` for buffered file loading so the solver can operate on stdin or any file path.\n- `Makefile` to build the executable with the Piscine's strict `-Wall -Wextra -Werror` flags.\n\n**Compile \u0026 run:**\n\n- macOS/Linux\n   ```bash\n   cd bsq/ex00\n   make\n   ./bsq map/example_map\n   ```\n- Windows (PowerShell)\n   ```powershell\n   Set-Location bsq/ex00\n   make\n   .\\bsq.exe map\\example_map\n   ```\n\nReplace `map/example_map` with any valid map file or use standard input (`cat map/example_map | ./bsq` on macOS/Linux, `Get-Content map\\example_map | .\\bsq.exe` on Windows).\n\n### Rush Projects\n- `rush00` focuses on generating framed ASCII rectangles, emphasizing clean structuring and parameter validation under time pressure.\n- `rush01` builds a backtracking solver for the Skyscrapers puzzle. The code demonstrates input validation, table generation, and constraint propagation.\n\n### Shell Projects\n- `shell00` introduces low-level file manipulation, permissions, and tarball handling.\n- `shell01` deepens shell scripting with pipelines, string processing, and command substitution.\n\n## How to Explore the Exercises\n1. Each `cXX` and `CXX` directory contains standalone exercises (`ex00`, `ex01`, …). You can compile any file directly with the 42 Piscine flags:\n   ```powershell\n   cc -Wall -Wextra -Werror \u003csource\u003e.c -o \u003cprogram\u003e\n   ```\n2. For folders with multiple sources (like `bsq` or the rushes), use the provided `Makefile` or add the necessary `.c` files to the compile command.\n3. Many exercises mirror standard library behavior; comparing outputs with the real libc functions is a great way to test correctness.\n\n## Lessons Learned\n- Comfort with pointers, dynamic allocation, and manual memory management.\n- Writing reusable utility functions instead of relying on standard library shortcuts.\n- Collaborating under strict deadlines during rush weekends.\n- Reading and validating complex inputs (maps, puzzles) before processing data.\n\n## IMPORTANT NOTICE\n- To my fellow programmers, try to get an idea from my experience, but DON'T copy paste, otherwise you won't learn. **Create your own experience**.\n**Good luck**.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobaskly%2F42piscine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobaskly%2F42piscine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobaskly%2F42piscine/lists"}