{"id":19789015,"url":"https://github.com/ponsfrilus/kata-frame","last_synced_at":"2025-08-27T09:42:14.643Z","repository":{"id":150880550,"uuid":"410102453","full_name":"ponsfrilus/kata-frame","owner":"ponsfrilus","description":"Kata : calcul d'encombrement en 2D","archived":false,"fork":false,"pushed_at":"2025-06-16T22:15:21.000Z","size":7,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-16T23:24:39.646Z","etag":null,"topics":["dojo","dojo-kata","epfl-dojo","epfl-dojo-kata","kata"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/ponsfrilus.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}},"created_at":"2021-09-24T21:09:17.000Z","updated_at":"2025-06-16T22:15:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"fd5038a2-2419-417e-8bde-d90ae771aeff","html_url":"https://github.com/ponsfrilus/kata-frame","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ponsfrilus/kata-frame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-frame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-frame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-frame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-frame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ponsfrilus","download_url":"https://codeload.github.com/ponsfrilus/kata-frame/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-frame/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272315597,"owners_count":24912606,"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-08-27T02:00:09.397Z","response_time":76,"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":["dojo","dojo-kata","epfl-dojo","epfl-dojo-kata","kata"],"created_at":"2024-11-12T06:29:38.545Z","updated_at":"2025-08-27T09:42:14.627Z","avatar_url":"https://github.com/ponsfrilus.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kata Frame\n\n\u003c!-- start:apropos --\u003e\n\u003e **À propos**\n\u003e\n\u003e ⓘ Ce dépôt contient un [kata], c'est à dire un _exercice de programmation_\n\u003e généralement utilisé dans le cadre d'un [coding dojo]. Il est proposé aux\n\u003e membres du dojo de l'[EPFL] et fait partie d'une collection de différents\n\u003e katas identifiés par le topic **[epfl-dojo-kata]** sur GitHub.\n\u003e\n\u003e Comment participer ?\n\u003e\n\u003e  - Réalisez le kata dans le langage de programmation de votre choix.\n\u003e  - Ajoutez-vous à la liste des participants en proposant une [pull request].\n\u003e  - Partagez votre intérêt pour ce dépôten lui ajoutant une ⭐.\n\u003e  - Proposez des suggestions ou signalez des bugs en ouvrant une issue.\n\u003e\n\u003e Bonne lecture et bon code !\n\n[kata]: https://fr.wikipedia.org/wiki/Coding_dojo#Kata\n[coding dojo]: https://fr.wikipedia.org/wiki/Coding_dojo\n[EPFL]: https://www.epfl.ch\n[epfl-dojo-kata]: https://github.com/topics/epfl-dojo-kata\n[Pull Request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests\n\n\u003c!-- Texte mis à jour en juin 2025 --\u003e\n\u003c!-- end:apropos --\u003e\n\n\n## But\n\nOn positionne un rectangle et un cercle dans un espace de 500 par 500. L'origine\nde cet espace (`x: 0`, `y: 0`) est situé en haut à gauche. Le rectangle est\ndéfini par `x`, `y`, `width` et `height`. Le cercle est défini par `cx`, `cy` et\n`r`.\n\nLe but de ce kata est de délimiter la zone occupée par le rectangle et le cercle\nen les encadrant. Ce cadre (de forme rectangulaire) est définit par `x`, `y`,\n`width` et `height`. Si le rectangle ou le cercle déborde de l'espace de base\n(500x500), alors on retourne `false`.\n\nVoici un exemple :  \n![](./example.png)  \nD'autres exemples de placement sont disponibles dans le fichier\n[example.html](./example.html).\n\n\n## Réalisation\n\nIl y a différents moyen de réaliser ce kata. Une possibilité est de le faire en\nligne de commande, en reprenant les données ci-dessous et en listant la réponse:\n```\n    Input:\n      rect = {x: 425, y: 425, width: 50, height: 50}\n      circ = {cx: 125, cy: 125, r: 100}\n    Output: \n      {x: 25, y: 25, width: 450, height: 450}\n```\n\nUne autre possibilité est de faire une solution\ngraphique, par exemple en utilisant des lirairies SVG\n(https://fr.wikipedia.org/wiki/Scalable_Vector_Graphics). On pourrait alors\nimaginer que l'utilisateur puisse inétragir avec le graphique, pour positionner\nle rectangle et le cercle, de manière aléatoire ou non, puis cliquer sur un\nbouton pour visualiser le cadre.\n\n\n## Données de tests\n\nLe fichier [example.html](./example.html) liste une série de cas de tests, qui\npeuvent être utilisés pour valider votre code. Placer de manière aléatoire un\ncercle et un rectangle dans le canvas est la voie à suivre.\n\n```\n// Exemple 1 : Le cercle chevauche le rectangle\nInput:\n  rect = {x: 150, y: 25, width: 325, height: 250}\n  circ = {cx: 150, cy: 350, r: 125}\nOutput:\n  {x: 25, y: 25, width: 450, height: 450}\n\n// Exemple 2 : Le cercle est séparé du rectangle\nInput:\n  rect = {x: 425, y: 425, width: 50, height: 50}\n  circ = {cx: 125, cy: 125, r: 100}\nOutput:\n  {x: 25, y: 25, width: 450, height: 450}\n\n// Exemple 3 : Le cercle est à l'intérieur du rectangle\nInput:\n  rect = {x: 25, y: 25, width: 450, height: 450}\n  circ = {cx: 250, cy: 250, r: 125}\nOutput:\n  {x: 25, y: 25, width: 450, height: 450}\n\n// Exemple 4 : Le rectangle est à l'intérieur du cercle\nInput:\n  rect = {x: 75, y: 125, width: 350, height: 250}\n  circ = {cx: 250, cy: 250, r: 225}\nOutput:\n  {x: 25, y: 25, width: 450, height: 450}\n\n// Exemple 5 : Le cercle est séparé du rectangle\nInput:\n  rect = {x: 175, y: 125, width: 50, height: 50}\n  circ = {cx: 350, cy: 250, r: 50}\nOutput:\n  {x: 125, y: 125, width: 225, height: 175}\n\n// Exemple 6 : Le cercle dépasse du canvas\nInput:\n  rect = {x: 150, y: 25, width: 325, height: 250}\n  circ = {cx: 150, cy: 350, r: 225}\nOutput:\n  false\n```\n\n\n## Je l'ai fait 💪\n\n* La version de [@octocat](https://github.com/octocat) a été faite en `langage`\n  et est disponible [ici](https://#).\n\n\n## Pour aller plus loin\nhttps://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Basic_Shapes\nhttps://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Positions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponsfrilus%2Fkata-frame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fponsfrilus%2Fkata-frame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponsfrilus%2Fkata-frame/lists"}