{"id":557,"url":"https://github.com/gamontal/awesome-katas","last_synced_at":"2025-09-27T10:30:44.676Z","repository":{"id":38360940,"uuid":"47000453","full_name":"gamontal/awesome-katas","owner":"gamontal","description":"A curated list of code katas","archived":false,"fork":false,"pushed_at":"2025-04-19T03:05:19.000Z","size":109,"stargazers_count":3023,"open_issues_count":1,"forks_count":217,"subscribers_count":87,"default_branch":"master","last_synced_at":"2025-09-25T14:02:50.582Z","etag":null,"topics":["awesome","awesome-list","awesome-lists","code-katas","coding","coding-exercises","coding-katas","dojo","katas","learning","list","practice","training"],"latest_commit_sha":null,"homepage":"","language":null,"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/gamontal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2015-11-27T21:44:03.000Z","updated_at":"2025-09-25T05:05:34.000Z","dependencies_parsed_at":"2024-08-03T06:11:19.605Z","dependency_job_id":null,"html_url":"https://github.com/gamontal/awesome-katas","commit_stats":null,"previous_names":["gamontalvo/awesome-katas","gmontalvoriv/awesome-katas"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gamontal/awesome-katas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamontal%2Fawesome-katas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamontal%2Fawesome-katas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamontal%2Fawesome-katas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamontal%2Fawesome-katas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamontal","download_url":"https://codeload.github.com/gamontal/awesome-katas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamontal%2Fawesome-katas/sbom","scorecard":{"id":417997,"data":{"date":"2025-08-11","repo":{"name":"github.com/gamontal/awesome-katas","commit":"18c4cb0e6c9a4f6d8b54c368560cb597ac9bd21c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":7,"reason":"Found 12/16 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T00:25:30.715Z","repository_id":38360940,"created_at":"2025-08-19T00:25:30.715Z","updated_at":"2025-08-19T00:25:30.715Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276966323,"owners_count":25736758,"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-09-25T02:00:09.612Z","response_time":80,"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":["awesome","awesome-list","awesome-lists","code-katas","coding","coding-exercises","coding-katas","dojo","katas","learning","list","practice","training"],"created_at":"2024-01-05T20:12:58.126Z","updated_at":"2025-09-27T10:30:44.670Z","avatar_url":"https://github.com/gamontal.png","language":null,"funding_links":[],"categories":["Programming","Miscellaneous","Technical","其他","Other Lists","Uncategorized","Others","📚 Learning \u0026 Resources","Live Site:   [searchAwesome](https://search-awesome.vercel.app/)","杂项","Themed Directories"],"sub_categories":["awesome-*","TeX Lists","Uncategorized","Updated in the last year"],"readme":"![banner](https://github.com/gmontalvoriv/katas/blob/master/images/kata_guruma.png)\n\n# Awesome Katas [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\u003e A curated list of code katas\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Dave Thomas's CodeKata](#codekata)\n- [Wonderland Clojure Katas](#wonderland-clojure-katas)\n- [SensioLabs PoleDev Katas](#sensiolabs-poledev-katas)\n- [Gaurav Arora's TDD Katas Collection](#gaurav-aroras-tdd-katas-collection)\n- [Others](#others)\n- [Contribution](#contribution)\n\n## Introduction\nA kata, or code kata, is defined as an exercise in programming which helps hone your skills through practice and repetition. Dave Thomas [@pragdave](https://twitter.com/pragdave), started this movement for programming. This project aims to provide you with a list of some kata exercises that I've found in the Internet and the Github community. These exercises vary from general to more complex algorithms and real life situations for you to try using your preferred programming language. Remember that code katas are not quizzes or puzzles. You should not only try to 'solve' it, but find a very good solution, following best practices of the programming language you are using.\n\n## [CodeKata](http://codekata.com/)\n  - [Kata01: Supermarket Pricing](http://codekata.com/kata/kata01-supermarket-pricing/)\n  - [Kata02: Karate Chop](http://codekata.com/kata/kata02-karate-chop/)\n  - [Kata03: How Big? How Fast?](http://codekata.com/kata/kata03-how-big-how-fast/)\n  - [Kata04: Data Munging](http://codekata.com/kata/kata04-data-munging/)\n  - [Kata05: Bloom Filters](http://codekata.com/kata/kata05-bloom-filters/)\n  - [Kata06: Anagrams](http://codekata.com/kata/kata06-anagrams/)\n  - [Kata07: How'd I Do?](http://codekata.com/kata/kata07-howd-i-do/)\n  - [Kata08: Conflicting Objectives](http://codekata.com/kata/kata08-conflicting-objectives/)\n  - [Kata09: Back to the Checkout](http://codekata.com/kata/kata09-back-to-the-checkout/)\n  - [Kata10: Hashes vs. Classes](http://codekata.com/kata/kata10-hashes-vs-classes/)\n  - [Kata11: Sorting It Out](http://codekata.com/kata/kata11-sorting-it-out/)\n  - [Kata12: Best Sellers](http://codekata.com/kata/kata12-best-sellers/)\n  - [Kata13: Counting Code Lines](http://codekata.com/kata/kata13-counting-code-lines/)\n  - [Kata14: Tom Swift Under the Milkwood](http://codekata.com/kata/kata14-tom-swift-under-the-milkwood/)\n  - [Kata15: A Diversion](http://codekata.com/kata/kata15-a-diversion/)\n  - [Kata16: Business Rules](http://codekata.com/kata/kata16-business-rules/)\n  - [Kata17: More Business Rules](http://codekata.com/kata/kata17-more-business-rules/)\n  - [Kata18: Transitive Dependencies](http://codekata.com/kata/kata18-transitive-dependencies/)\n  - [Kata19: Word Chains](http://codekata.com/kata/kata19-word-chains/)\n  - [Kata20: Klondike](http://codekata.com/kata/kata20-klondike/)\n  - [Kata21: Simple Lists](http://codekata.com/kata/kata21-simple-lists/)\n\n## [Wonderland Clojure Katas](https://github.com/gigasquid/wonderland-clojure-katas)\n  - [Alphabet Cipher](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/alphabet-cipher)\n  - [Card game War](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/card-game-war)\n  - [Doublets](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/doublets)\n  - [Fox Goose Bag of Corn](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/fox-goose-bag-of-corn)\n  - [Magic Square](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/magic-square)\n  - [Tiny Maze](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/tiny-maze)\n  - [Wonderland Number](https://github.com/gigasquid/wonderland-clojure-katas/tree/master/wonderland-number)\n\n## [SensioLabs PoleDev Katas](https://github.com/devdrops/Katas)\n  - [Kata 1: (Form) DataTransformer](https://github.com/devdrops/Katas/tree/kata-data-transformers)\n  - [Kata 2: (EventDispatcher) Event Listener / Event Dispatcher](https://github.com/devdrops/Katas/tree/kata-event-listener)\n  - [Kata 3: (Form) Inherit data / Virtual Form](https://github.com/devdrops/Katas/tree/kata-inherit-data)\n  - [Kata 4: (Form) File Upload](https://github.com/devdrops/Katas/tree/kata-upload-file)\n  - [Kata 5: (Translation) Manage translations](https://github.com/devdrops/Katas/tree/kata-translation)\n\n## [Gaurav Arora's TDD Katas Collection](https://github.com/garora/TDD-Katas)\n  - [String Sum Kata](https://github.com/garora/TDD-Katas#string-sum-kata)\n  - [String Calculator Kata](https://github.com/garora/TDD-Katas#string-calculator-kata-via-roy-osherove)\n  - [The Bowling Game Kata](https://github.com/garora/TDD-Katas#the-bowling-game-kata-via-uncle-bob)\n  - [The FizzBuzz Kata](https://github.com/garora/TDD-Katas#the-fizzbuzz-kata)\n  - [The OddEven Kata](https://github.com/garora/TDD-Katas#the-oddeven-kata)\n  - [The PrimeFactor Kata](https://github.com/garora/TDD-Katas#the-primefactor-kata-via-uncle-bob)\n  - [Game of Life](https://github.com/garora/TDD-Katas#game-of-life-)\n  - [Harry Potter](https://github.com/garora/TDD-Katas#harry-potter-)\n  - [LCD Digits](https://github.com/garora/TDD-Katas#lcd-digits-)\n  - [Leap Year](https://github.com/garora/TDD-Katas#leap-year-)\n  - [Mine Fields](https://github.com/garora/TDD-Katas#mine-fields-)\n  - [Poker Hands](https://github.com/garora/TDD-Katas#poker-hands)\n  - [Recently Used List](https://github.com/garora/TDD-Katas#recently-used-list-)\n  - [Reversi](https://github.com/garora/TDD-Katas#reversi-)\n  - [Yehtzee](https://github.com/garora/TDD-Katas#yehtzee-)\n  - [The Word Wrap Kata](http://codingdojo.org/cgi-bin/wiki.pl?KataWordWrap)\n\n## Others\n  - [Look and Say Sequence](https://en.wikipedia.org/wiki/Look-and-say_sequence)\n  - [AKS primality test](https://en.wikipedia.org/wiki/AKS_primality_test)\n  - [Roman Numeral Converter](https://en.wikipedia.org/wiki/Roman_numerals)\n  - [Natural sort order](https://en.wikipedia.org/wiki/Natural_sort_order)\n  - [ES6 Katas](http://es6katas.org/)\n  - [.Net Code Katas](https://github.com/AlanBarber/CodeKatas)\n  - [Bank OCR](http://code.joejag.com/coding-dojo/bank-ocr/)\n  - [Bubble sort](https://en.wikipedia.org/wiki/Bubble_sort)\n  - [Racing Car Katas](https://github.com/emilybache/Racing-Car-Katas)\n  - [Coding Dojo's KataCatalogue](http://codingdojo.org/KataCatalogue/)\n  - [The OCP Kata](http://matteo.vaccari.name/blog/archives/293)\n  - [The Birthday Greetings Kata](http://matteo.vaccari.name/blog/archives/154)\n  - [Social Networking Kata](https://github.com/sandromancuso/social_networking_kata)\n  - [Tell don't ask kata](https://github.com/gabrieletondi/tell-dont-ask-kata)  \n  - [Functional Structures Refactoring Kata](https://github.com/matteobaglini/functional-structures-refactoring-kata)\n  - [incremental_katas](https://github.com/Gianfrancoalongi/incremental_katas)\n  - [CLI Arguments Parser Kata](https://github.com/ivoputzer/cli-args-parser-kata)\n  - [Git katas](https://github.com/praqma-training/gitkatas)\n  - [Pdt256 katas (php, go, python, java, haskell, typescript)](https://github.com/pdt256/kata)\n  - [Opening Hours Kata](https://github.com/christian-fei/opening-hours-kata)\n  - [The Quantum Katas](https://github.com/Microsoft/QuantumKatas)\n  - [Katalyst](https://katalyst.codurance.com/)\n  - [The Beverages Prices Refactoring Kata](https://github.com/trikitrok/beverages_pricing_refactoring_kata)\n  - [The Goose Game Kata](https://github.com/xpeppers/goose-game-kata)\n  - [Salary slip kata](https://github.com/sandromancuso/salaryslipkata)\n  - [RPG Game kata](https://github.com/ardalis/kata-catalog/blob/master/katas/RPG%20Combat.md)\n  - [Train Reservation kata](https://github.com/emilybache/KataTrainReservation)\n  - [Password-strength Checker TDD Kata](https://github.com/xpepper/PasswordStrengthChecker)\n  - [Parrot Refactoring Kata](https://github.com/emilybache/Parrot-Refactoring-Kata)\n  - [Gilded Rose - Many languages](https://github.com/emilybache/GildedRose-Refactoring-Kata)\n  - [Gilded Rose Original - C#](https://github.com/NotMyself/GildedRose)\n  - [Java by Comparison Kata](https://java.by-comparison.com/kata)\n  - [DNA Transcription Kata](https://github.com/nickdelgrosso/dna-transcription-kata)\n  - [Refactoring Golf Kata](https://github.com/daviddenton/refactoring-golf)\n  - [Promotion Text Kata](https://github.com/nealhu/promotion-text-kata)\n  - [Args Kata](https://github.com/nealhu/args-kata)\n  - [CodeCrafters(Build your own Git, Redis, Docker etc.)](https://app.codecrafters.io/tracks?r=8Ol)\n  - [Tennis Refactoring Kata](https://github.com/emilybache/Tennis-Refactoring-Kata)\n  - [Docker Katas](https://github.com/eficode-academy/docker-katas)\n  \n## Contribution\n  \n#### Please read the [contribution guidelines](https://github.com/gmontalvoriv/katas/blob/master/CONTRIBUTING.md).\n\n## License\n\n[![CC0](https://i.creativecommons.org/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamontal%2Fawesome-katas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamontal%2Fawesome-katas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamontal%2Fawesome-katas/lists"}