├── .appends └── .github │ └── labels.yml ├── .github ├── CODEOWNERS ├── dependabot.yml ├── labels.yml └── workflows │ ├── configlet.yml │ ├── no-important-files-changed.yml │ ├── pause-community-contributions.yml │ ├── ping-cross-track-maintainers-team.yml │ ├── sync-labels.yml │ └── test.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── _template ├── build.gradle.kts ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts └── src │ ├── example │ └── kotlin │ │ └── .keep │ ├── main │ └── kotlin │ │ └── .keep │ └── test │ └── kotlin │ └── .keep ├── bin ├── README.md ├── build-jq.sh ├── fetch-configlet ├── journey-test.sh ├── run-journey-test-from-ci.sh └── unit-tests.sh ├── concepts ├── basics │ ├── .meta │ │ └── config.json │ ├── about.md │ ├── introduction.md │ └── links.json └── booleans │ ├── .meta │ └── config.json │ ├── about.md │ ├── introduction.md │ └── links.json ├── config.json ├── docs ├── ABOUT.md ├── INSTALLATION.md ├── LEARNING.md ├── RESOURCES.md ├── SNIPPET.txt ├── TESTS.md ├── config.json └── img │ ├── mac-osx--idea-ce-gradle-import-dialog.png │ ├── mac-osx--idea-ce-run-unit-tests.png │ └── mac-osx--install-java-dialog.png ├── exercises ├── build.gradle.kts ├── concept │ ├── annalyns-infiltration │ │ ├── .docs │ │ │ ├── hints.md │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── design.md │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── AnnalynsInfiltration.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── AnnalynsInfiltration.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AnnalynsInfiltrationTest.kt │ └── lucians-luscious-lasagna │ │ ├── .docs │ │ ├── hints.md │ │ ├── instructions.md │ │ └── introduction.md │ │ ├── .meta │ │ ├── config.json │ │ ├── design.md │ │ └── src │ │ │ └── reference │ │ │ └── kotlin │ │ │ └── LuciansLusciousLasagna.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── LuciansLusciousLasagna.kt │ │ └── test │ │ └── kotlin │ │ └── LuciansLusciousLasagnaTests.kt ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── practice │ ├── accumulate │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── Accumulate.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Accumulate.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AccumulateTest.kt │ ├── acronym │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Acronym.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Acronym.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AcronymTest.kt │ ├── affine-cipher │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── AffineCipher.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── AffineCipher.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AffineCipherTest.kt │ ├── all-your-base │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── BaseConverter.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BaseConverter.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BaseConverterTest.kt │ ├── allergies │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Allergen.kt │ │ │ │ │ └── Allergies.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── Allergen.kt │ │ │ │ └── Allergies.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AllergiesTest.kt │ ├── anagram │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Anagram.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Anagram.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AnagramTest.kt │ ├── armstrong-numbers │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ArmstrongNumber.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ArmstrongNumber.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ArmstrongNumberTest.kt │ ├── atbash-cipher │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Atbash.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Atbash.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── AtbashTest.kt │ ├── bank-account │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── BankAccount.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BankAccount.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BankAccountTest.kt │ ├── beer-song │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── BeerSong.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BeerSong.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BeerSongTest.kt │ ├── binary-search-tree │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── BinarySearchTree.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BinarySearchTree.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BinarySearchTreeTest.kt │ ├── binary-search │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── BinarySearch.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BinarySearch.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BinarySearchTest.kt │ ├── binary │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Binary.kt │ │ │ └── tests.toml │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Binary.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BinaryTest.kt │ ├── bob │ │ ├── .approaches │ │ │ ├── answer-list │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── config.json │ │ │ ├── if-expressions │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── introduction.md │ │ │ └── when-expression │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Bob.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Bob.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BobTest.kt │ ├── bowling │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── BowlingGame.kt │ │ │ │ │ └── Frame.kt │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── BowlingGame.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BowlingGameTest.kt │ ├── change │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ChangeCalculator.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ChangeCalculator.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ChangeCalculatorTest.kt │ ├── circular-buffer │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── CircularBuffer.kt │ │ │ └── tests.toml │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── CircularBuffer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── CircularBufferTest.kt │ ├── clock │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Clock.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Clock.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ ├── ClockAddTest.kt │ │ │ ├── ClockCreationTest.kt │ │ │ ├── ClockEqualTest.kt │ │ │ └── ClockSubtractTest.kt │ ├── collatz-conjecture │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── CollatzCalculator.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── CollatzCalculator.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── CollatzCalculatorTest.kt │ ├── complex-numbers │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ComplexNumber.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ComplexNumber.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ComplexNumberTest.kt │ ├── crypto-square │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── CryptoSquare.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── CryptoSquare.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── CryptoSquareTest.kt │ ├── custom-set │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── CustomSet.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── CustomSet.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── CustomSetTest.kt │ ├── darts │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── hypot-for-radius │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Darts.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Darts.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DartsTest.kt │ ├── diamond │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── DiamondPrinter.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── DiamondPrinter.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DiamondPrinterTest.kt │ ├── difference-of-squares │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── formula │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── DifferenceOfSquares.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── DifferenceOfSquares.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SquaresTest.kt │ ├── diffie-hellman │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── DiffieHellman.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── DiffieHellman.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DiffieHellmanTest.kt │ ├── dnd-character │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── DndCharacter.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── DndCharacter.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DndCharacterTest.kt │ ├── dominoes │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Dominoes.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Dominoes.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DominoesTest.kt │ ├── eliuds-eggs │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── EliudsEggs.kt │ │ │ └── tests.toml │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── EliudsEggs.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── EliudsEggsTest.kt │ ├── etl │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ETL.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ETL.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ETLTest.kt │ ├── flatten-array │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Flattener.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Flattener.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── FlattenerTest.kt │ ├── forth │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Forth.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Forth.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ForthTest.kt │ ├── gigasecond │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── introduction.md │ │ │ └── secondary-constructor-atstartofday │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Gigasecond.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Gigasecond.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── GigasecondTest.kt │ ├── grade-school │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── GradeSchool.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── GradeSchool.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SchoolTest.kt │ ├── grains │ │ ├── .approaches │ │ │ ├── bit-shifting │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── config.json │ │ │ └── introduction.md │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Grains.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Grains.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── BoardTest.kt │ ├── hamming │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── introduction.md │ │ │ └── zip-count │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Hamming.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Hamming.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── HammingTest.kt │ ├── hello-world │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── HelloWorld.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── TUTORIAL.md │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── HelloWorld.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── HelloWorldTest.kt │ ├── hexadecimal │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── Hexadecimal.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Hexadecimal.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── HexadecimalTest.kt │ ├── isbn-verifier │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── fold-when-let │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── IsbnVerifier.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── IsbnVerifier.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── IsbnVerifierTest.kt │ ├── isogram │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Isogram.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Isogram.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── IsogramTest.kt │ ├── kindergarten-garden │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── KindergartenGarden.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── KindergartenGarden.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── KindergartenGardenTest.kt │ ├── knapsack │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Knapsack.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Knapsack.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── KnapsackTest.kt │ ├── largest-series-product │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── LargestSeriesProduct.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── LargestSeriesProduct.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SeriesTest.kt │ ├── leap │ │ ├── .approaches │ │ │ ├── boolean-chain │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── built-in-method │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── config.json │ │ │ ├── introduction.md │ │ │ ├── plusdays │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── ternary-expression │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Leap.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Leap.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── LeapTest.kt │ ├── linked-list │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── LinkedList.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── LinkedList.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DequeTest.kt │ ├── list-ops │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ListOps.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ListOps.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ListExtensionsTest.kt │ ├── luhn │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Luhn.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Luhn.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── LuhnTest.kt │ ├── matching-brackets │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── MatchingBrackets.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── MatchingBrackets.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── MatchingBracketsTest.kt │ ├── matrix │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Matrix.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Matrix.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── MatrixTest.kt │ ├── meetup │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Meetup.kt │ │ │ │ │ └── MeetupSchedule.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── Meetup.kt │ │ │ │ └── MeetupSchedule.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── MeetupTest.kt │ ├── minesweeper │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Minesweeper.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Minesweeper.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── MinesweeperBoardTest.kt │ ├── nth-prime │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── NthPrime.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── NthPrime.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PrimeTest.kt │ ├── nucleotide-count │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── groupby-plus │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Dna.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Dna.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── DnaTest.kt │ ├── pangram │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Pangram.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Pangram.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PangramTest.kt │ ├── pascals-triangle │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── PascalsTriangle.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── PascalsTriangle.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PascalsTriangleTest.kt │ ├── perfect-numbers │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── NaturalNumber.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── NaturalNumber.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── NaturalNumberTest.kt │ ├── phone-number │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── PhoneNumber.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── PhoneNumber.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PhoneNumberTest.kt │ ├── pig-latin │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── hashset-lookup │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── PigLatin.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── PigLatin.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PigLatinTest.kt │ ├── prime-factors │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── PrimeFactors.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── PrimeFactors.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── PrimeFactorCalculatorTest.kt │ ├── protein-translation │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ProteinTranslation.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ProteinTranslation.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ProteinTranslationTest.kt │ ├── rail-fence-cipher │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── RailFenceCipher.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RailFenceCipher.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RailFenceCipherTest.kt │ ├── raindrops │ │ ├── .approaches │ │ │ ├── buildstring │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ ├── config.json │ │ │ ├── fold-on-list │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Raindrops.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Raindrops.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RaindropsTest.kt │ ├── react │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── React.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── React.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ReactTest.kt │ ├── resistor-color-duo │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Color.kt │ │ │ │ │ └── ResistorColorDuo.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── Color.kt │ │ │ │ └── ResistorColorDuo.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ResistorColorDuoTest.kt │ ├── resistor-color-trio │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Color.kt │ │ │ │ │ ├── ResistorColorTrio.kt │ │ │ │ │ └── Unit.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── Color.kt │ │ │ │ ├── ResistorColorTrio.kt │ │ │ │ └── Unit.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ResistorColorTrioTest.kt │ ├── resistor-color │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ResistorColor.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ResistorColor.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ResistorColorTest.kt │ ├── reverse-string │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ReverseString.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ReverseString.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ReverseStringTest.kt │ ├── rna-transcription │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── RnaTranscription.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RnaTranscription.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RnaTranscriptionTest.kt │ ├── robot-name │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── RobotName.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RobotName.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RobotTest.kt │ ├── robot-simulator │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── GridPosition.kt │ │ │ │ │ ├── Orientation.kt │ │ │ │ │ └── Robot.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── GridPosition.kt │ │ │ │ ├── Orientation.kt │ │ │ │ └── Robot.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RobotTest.kt │ ├── roman-numerals │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── fold-repeat │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── RomanNumerals.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RomanNumerals.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RomanNumeralsTest.kt │ ├── rotational-cipher │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── RotationalCipher.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RotationalCipher.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RotationalCipherTest.kt │ ├── run-length-encoding │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── RunLengthEncoding.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── RunLengthEncoding.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── RunLengthEncodingTest.kt │ ├── saddle-points │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Matrix.kt │ │ │ │ │ └── MatrixCoordinate.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Matrix.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── MatrixTest.kt │ ├── say │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Say.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Say.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── NumberSpellerTest.kt │ ├── scale-generator │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Scale.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Scale.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ScaleTest.kt │ ├── scrabble-score │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── introduction.md │ │ │ ├── map │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── when │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── ScrabbleScore.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── ScrabbleScore.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── ScrabbleScoreTest.kt │ ├── secret-handshake │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── HandshakeCalculator.kt │ │ │ │ │ └── Signal.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── HandshakeCalculator.kt │ │ │ │ └── Signal.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── HandshakeCalculatorTest.kt │ ├── series │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Series.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Series.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SeriesTest.kt │ ├── sieve │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Sieve.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Sieve.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SieveTest.kt │ ├── simple-cipher │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── SimpleCipher.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── SimpleCipher.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ ├── IncorrectKeyCipherTest.kt │ │ │ ├── RandomKeyCipherTest.kt │ │ │ ├── SimpleCipherTest.kt │ │ │ └── SubstitutionCipherTest.kt │ ├── space-age │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── SpaceAge.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── SpaceAge.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SpaceAgeTest.kt │ ├── spiral-matrix │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── SpiralMatrix.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── SpiralMatrix.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SpiralMatrixTest.kt │ ├── strain │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ └── src │ │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ └── Strain.kt │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Strain.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── StrainTest.kt │ ├── sublist │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Relationship.kt │ │ │ │ │ └── Sublist.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Sublist.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SublistTest.kt │ ├── sum-of-multiples │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── SumOfMultiples.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── SumOfMultiples.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── SumOfMultiplesTest.kt │ ├── transpose │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Transpose.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Transpose.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── TransposeTest.kt │ ├── triangle │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Triangle.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Triangle.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── TriangleTest.kt │ ├── two-fer │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── TwoFer.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── TwoFer.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── TwoFerTest.kt │ ├── word-count │ │ ├── .approaches │ │ │ ├── config.json │ │ │ ├── findall-groupingby-eachcount │ │ │ │ ├── content.md │ │ │ │ └── snippet.txt │ │ │ └── introduction.md │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── WordCount.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── WordCount.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── WordCountTest.kt │ ├── wordy │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ └── Wordy.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ └── Wordy.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── WordyTest.kt │ ├── yacht │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── config.json │ │ │ ├── src │ │ │ │ └── reference │ │ │ │ │ └── kotlin │ │ │ │ │ ├── Yacht.kt │ │ │ │ │ └── YachtCategory.kt │ │ │ ├── tests.toml │ │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ └── kotlin │ │ │ │ ├── Yacht.kt │ │ │ │ └── YachtCategory.kt │ │ │ └── test │ │ │ └── kotlin │ │ │ └── YachtTest.kt │ └── zebra-puzzle │ │ ├── .docs │ │ ├── instructions.md │ │ └── introduction.md │ │ ├── .meta │ │ ├── config.json │ │ ├── src │ │ │ └── reference │ │ │ │ └── kotlin │ │ │ │ ├── HeapsPermutation.kt │ │ │ │ └── ZebraPuzzle.kt │ │ ├── tests.toml │ │ └── version │ │ ├── build.gradle.kts │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── ZebraPuzzle.kt │ │ └── test │ │ └── kotlin │ │ └── ZebraPuzzleTest.kt ├── settings.gradle.kts └── shared │ └── .docs │ ├── help.md │ └── tests.md ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── reference └── implementing-a-concept-exercise.md └── scripts ├── canonical_data_check.sh ├── fix_exercises_symlinks.sh ├── updateGradleFilesFromTemplate.kts └── updateTemplateBuildFile.kts /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Code owners 2 | .github/CODEOWNERS @exercism/maintainers-admin 3 | 4 | # Changes to `fetch-configlet` should be made in the `exercism/configlet` repo 5 | bin/fetch-configlet @exercism/maintainers-admin 6 | 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | 5 | # Keep dependencies for GitHub Actions up-to-date 6 | - package-ecosystem: 'github-actions' 7 | directory: '/' 8 | schedule: 9 | interval: 'monthly' 10 | -------------------------------------------------------------------------------- /.github/workflows/configlet.yml: -------------------------------------------------------------------------------- 1 | name: Configlet 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | configlet: 15 | uses: exercism/github-actions/.github/workflows/configlet.yml@main 16 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Kotlin / Test 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | workflow_dispatch: 8 | 9 | jobs: 10 | ci: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout repository 15 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 16 | 17 | - name: Run tests for all exercises 18 | run: bin/journey-test.sh 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .DS_Store 3 | bin/configlet 4 | bin/configlet.exe 5 | bin/jq* 6 | CHECKLIST 7 | build 8 | .gradle 9 | .idea 10 | *.iml 11 | out/ 12 | -------------------------------------------------------------------------------- /_template/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/_template/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /_template/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /_template/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /_template/src/example/kotlin/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/_template/src/example/kotlin/.keep -------------------------------------------------------------------------------- /_template/src/main/kotlin/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/_template/src/main/kotlin/.keep -------------------------------------------------------------------------------- /_template/src/test/kotlin/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/_template/src/test/kotlin/.keep -------------------------------------------------------------------------------- /bin/README.md: -------------------------------------------------------------------------------- 1 | # Cross-track consistency 2 | 3 | Many of these scripts are shared between the Java and Kotlin tracks. If you make an update to a script in one of these tracks, please also update the same script in the other track if appropriate. Thank you! 4 | -------------------------------------------------------------------------------- /bin/build-jq.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -ex 3 | 4 | pushd bin 5 | curl --location https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz >jq-1.5.tar.gz 6 | tar xvf jq-1.5.tar.gz 7 | cd jq-1.5 8 | ./configure --disable-maintainer-mode && make 9 | mv jq .. 10 | popd 11 | 12 | -------------------------------------------------------------------------------- /concepts/basics/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "blurb": "TODO: add blurb for basics concept", 3 | "authors": [ 4 | "dector" 5 | ], 6 | "contributors": [] 7 | } 8 | -------------------------------------------------------------------------------- /concepts/basics/links.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /concepts/booleans/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "blurb": "TODO: add blurb for booleans concept", 3 | "authors": ["dector"], 4 | "contributors": [] 5 | } 6 | -------------------------------------------------------------------------------- /concepts/booleans/links.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "url": "https://kotlinlang.org/docs/reference/basic-types.html#booleans", 4 | "description": "reference" 5 | }, 6 | { 7 | "url": "https://kotlinlang.org/docs/reference/grammar.html#expressions", 8 | "description": "precedence" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /docs/SNIPPET.txt: -------------------------------------------------------------------------------- 1 | fun getGreeting(): String { 2 | return "Hello, World!" 3 | } 4 | -------------------------------------------------------------------------------- /docs/img/mac-osx--idea-ce-gradle-import-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/docs/img/mac-osx--idea-ce-gradle-import-dialog.png -------------------------------------------------------------------------------- /docs/img/mac-osx--idea-ce-run-unit-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/docs/img/mac-osx--idea-ce-run-unit-tests.png -------------------------------------------------------------------------------- /docs/img/mac-osx--install-java-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/docs/img/mac-osx--install-java-dialog.png -------------------------------------------------------------------------------- /exercises/concept/annalyns-infiltration/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/concept/annalyns-infiltration/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/concept/annalyns-infiltration/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/concept/annalyns-infiltration/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/concept/lucians-luscious-lasagna/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/concept/lucians-luscious-lasagna/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/concept/lucians-luscious-lasagna/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/concept/lucians-luscious-lasagna/src/main/kotlin/LuciansLusciousLasagna.kt: -------------------------------------------------------------------------------- 1 | // TODO: define `remainingMinutesInOven()`. Use named variable to store expected time in oven. 2 | 3 | // TODO: define `preparationTimeInMinutes()`. 4 | 5 | // TODO: define `elapsedCookingTimeInMinutes()`. 6 | -------------------------------------------------------------------------------- /exercises/concept/lucians-luscious-lasagna/src/test/kotlin/LuciansLusciousLasagnaTests.kt: -------------------------------------------------------------------------------- 1 | import org.junit.Test 2 | import org.junit.Ignore 3 | import kotlin.test.assertFalse 4 | import kotlin.test.assertTrue 5 | 6 | class LuciansLusciousLasagnaTests { 7 | @Test 8 | fun `test`() 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /exercises/gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.incremental=false 2 | org.gradle.parallel=true 3 | -------------------------------------------------------------------------------- /exercises/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/.meta/src/reference/kotlin/Accumulate.kt: -------------------------------------------------------------------------------- 1 | object Accumulate { 2 | fun accumulate(collection: List, function: (T) -> R): List { 3 | val retVal = mutableListOf() 4 | for(item in collection) { 5 | retVal.add(function.invoke(item)) 6 | } 7 | return retVal 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/accumulate/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/accumulate/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/src/main/kotlin/Accumulate.kt: -------------------------------------------------------------------------------- 1 | object Accumulate { 2 | fun accumulate(collection: List, converter: (Any) -> Any): List { 3 | TODO("Change the function signature and implement it to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/acronym/.meta/src/reference/kotlin/Acronym.kt: -------------------------------------------------------------------------------- 1 | object Acronym { 2 | fun generate(phrase: String) = Regex("[A-Z]+[a-z]*|[a-z]+") 3 | .findAll(phrase.replace("'", "")) 4 | .map { it.value.first().uppercaseChar() } 5 | .joinToString("") 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/acronym/.meta/version: -------------------------------------------------------------------------------- 1 | 1.7.0 2 | -------------------------------------------------------------------------------- /exercises/practice/acronym/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/acronym/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/acronym/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/acronym/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/acronym/src/main/kotlin/Acronym.kt: -------------------------------------------------------------------------------- 1 | object Acronym { 2 | fun generate(phrase: String) : String { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/affine-cipher/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/src/main/kotlin/AffineCipher.kt: -------------------------------------------------------------------------------- 1 | object AffineCipher { 2 | 3 | fun encode(input: String, a: Int, b: Int) { 4 | TODO("Implement the function to complete the task") 5 | } 6 | 7 | fun decode(input: String, a: Int, b: Int) { 8 | TODO("Implement the function to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/.meta/version: -------------------------------------------------------------------------------- 1 | 2.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/all-your-base/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/all-your-base/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/src/main/kotlin/BaseConverter.kt: -------------------------------------------------------------------------------- 1 | class BaseConverter { 2 | // TODO: implement proper constructor to complete the task 3 | 4 | fun convertToBase(newBase: Int): IntArray { 5 | TODO("Implement the function to complete the task") 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/allergies/.meta/src/reference/kotlin/Allergen.kt: -------------------------------------------------------------------------------- 1 | enum class Allergen(val score: Int) { 2 | EGGS(1), 3 | PEANUTS(2), 4 | SHELLFISH(4), 5 | STRAWBERRIES(8), 6 | TOMATOES(16), 7 | CHOCOLATE(32), 8 | POLLEN(64), 9 | CATS(128) 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/allergies/.meta/src/reference/kotlin/Allergies.kt: -------------------------------------------------------------------------------- 1 | class Allergies(val score: Int) { 2 | 3 | fun getList(): List = Allergen.values().filter { isAllergicTo(it) } 4 | 5 | fun isAllergicTo(allergen: Allergen) = (score and allergen.score) == allergen.score 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/allergies/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/allergies/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/allergies/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/allergies/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/allergies/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/allergies/src/main/kotlin/Allergen.kt: -------------------------------------------------------------------------------- 1 | enum class Allergen(val score: Int) { 2 | EGGS(1), 3 | PEANUTS(2), 4 | SHELLFISH(4), 5 | STRAWBERRIES(8), 6 | TOMATOES(16), 7 | CHOCOLATE(32), 8 | POLLEN(64), 9 | CATS(128) 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/allergies/src/main/kotlin/Allergies.kt: -------------------------------------------------------------------------------- 1 | class Allergies { 2 | // TODO: implement proper constructor to complete the task 3 | 4 | fun getList(): List { 5 | TODO("Implement the function to complete the task") 6 | } 7 | 8 | fun isAllergicTo(allergen: Allergen) { 9 | TODO("Implement the function to complete the task") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/anagram/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Instructions Append 2 | 3 | The anagrams can be returned in any order. 4 | -------------------------------------------------------------------------------- /exercises/practice/anagram/.meta/version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /exercises/practice/anagram/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/anagram/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/anagram/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/anagram/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/anagram/src/main/kotlin/Anagram.kt: -------------------------------------------------------------------------------- 1 | class Anagram { 2 | // TODO: implement proper constructor to complete the task 3 | 4 | fun match(anagrams: Collection): Set { 5 | TODO("Implement the function to complete the task") 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/armstrong-numbers/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/src/main/kotlin/ArmstrongNumber.kt: -------------------------------------------------------------------------------- 1 | object ArmstrongNumber { 2 | 3 | fun check(input: Int): Boolean { 4 | TODO("Implement the function to complete the task") 5 | } 6 | 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/atbash-cipher/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/src/main/kotlin/Atbash.kt: -------------------------------------------------------------------------------- 1 | object Atbash { 2 | 3 | fun encode(s: String): String{ 4 | TODO("Implement the function to complete the task") 5 | } 6 | 7 | fun decode(s: String): String{ 8 | TODO("Implement the function to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/bank-account/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/bank-account/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/src/main/kotlin/BankAccount.kt: -------------------------------------------------------------------------------- 1 | class BankAccount { 2 | // TODO: implement read access to 'balance' 3 | 4 | fun adjustBalance(amount: Long){ 5 | TODO("Implement the function to complete the task") 6 | } 7 | 8 | fun close() { 9 | TODO("Implement the function to complete the task") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/.meta/version: -------------------------------------------------------------------------------- 1 | 2.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/beer-song/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/beer-song/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/src/main/kotlin/BeerSong.kt: -------------------------------------------------------------------------------- 1 | object BeerSong { 2 | fun verses(startBottles: Int, takeDown: Int): String { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/binary-search-tree/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/binary-search-tree/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/binary-search-tree/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/binary-search-tree/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/binary-search-tree/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/binary-search/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/binary-search/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/src/main/kotlin/BinarySearch.kt: -------------------------------------------------------------------------------- 1 | object BinarySearch { 2 | fun search(list: List, item: Int): Int { 3 | TODO("Implement the function to complete the task. Change the signature if necessary.") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/binary/.meta/src/reference/kotlin/Binary.kt: -------------------------------------------------------------------------------- 1 | object Binary { 2 | fun toDecimal(s: String): Int { 3 | return s.fold(0) { accum, char -> 4 | when (char) { 5 | '0' -> accum * 2 6 | '1' -> (accum * 2) + 1 7 | else -> return 0 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/binary/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/binary/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/binary/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/binary/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/binary/src/main/kotlin/Binary.kt: -------------------------------------------------------------------------------- 1 | object Binary { 2 | fun toDecimal(s: String): Int { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/bob/.approaches/answer-list/snippet.txt: -------------------------------------------------------------------------------- 1 | fun hey(input: String): String { 2 | val msg = input.trim() 3 | if (msg.isEmpty()) return "Fine. Be that way!" 4 | val isQuestion = if (msg.endsWith('?')) 1 else 0 5 | val isYelling = if (('A'..'Z').any { msg.contains(it) } && msg == msg.uppercase()) 2 else 0 6 | return answers[isQuestion + isYelling] 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/bob/.approaches/when-expression/snippet.txt: -------------------------------------------------------------------------------- 1 | fun hey(statement: String): String = 2 | when { 3 | statement.isQuestion() && statement.isYelling() -> "Calm down, I know what I'm doing!" 4 | statement.isQuestion() -> "Sure." 5 | statement.isYelling() -> "Whoa, chill out!" 6 | statement.isSilence() -> "Fine. Be that way!" 7 | else -> "Whatever." 8 | } -------------------------------------------------------------------------------- /exercises/practice/bob/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Bob is a [lackadaisical][] teenager. 4 | He likes to think that he's very cool. 5 | And he definitely doesn't get excited about things. 6 | That wouldn't be cool. 7 | 8 | When people talk to him, his responses are pretty limited. 9 | 10 | [lackadaisical]: https://www.collinsdictionary.com/dictionary/english/lackadaisical 11 | -------------------------------------------------------------------------------- /exercises/practice/bob/.meta/version: -------------------------------------------------------------------------------- 1 | 1.4.0 2 | -------------------------------------------------------------------------------- /exercises/practice/bob/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/bob/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/bob/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/bob/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/bob/src/main/kotlin/Bob.kt: -------------------------------------------------------------------------------- 1 | object Bob { 2 | fun hey(input: String): String { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/bowling/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/bowling/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/bowling/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/bowling/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/bowling/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/bowling/src/main/kotlin/BowlingGame.kt: -------------------------------------------------------------------------------- 1 | class BowlingGame { 2 | fun roll(pins: Int) { 3 | TODO("Implement the function to complete the task") 4 | } 5 | 6 | fun score() { 7 | TODO("Implement the function to complete the task") 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/change/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/change/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/change/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/change/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/change/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/change/src/main/kotlin/ChangeCalculator.kt: -------------------------------------------------------------------------------- 1 | class ChangeCalculator { 2 | // TODO: implement proper constructor 3 | 4 | fun computeMostEfficientChange(grandTotal: Int): List { 5 | TODO("Implement the function to complete the task") 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/circular-buffer/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/circular-buffer/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/circular-buffer/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/circular-buffer/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/clock/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Implement a clock that handles times without dates. 4 | 5 | You should be able to add and subtract minutes to it. 6 | 7 | Two clocks that represent the same time should be equal to each other. 8 | -------------------------------------------------------------------------------- /exercises/practice/clock/.meta/version: -------------------------------------------------------------------------------- 1 | 2.4.0 2 | -------------------------------------------------------------------------------- /exercises/practice/clock/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/clock/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/clock/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/clock/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/clock/src/main/kotlin/Clock.kt: -------------------------------------------------------------------------------- 1 | class Clock { 2 | //TODO: implement proper constructor 3 | 4 | //TODO: find a convenient way to take over `toString()` and `equals()` 5 | 6 | fun subtract(minutes: Int) { 7 | TODO("Implement the function to complete the task") 8 | } 9 | 10 | fun add(minutes: Int) { 11 | TODO("Implement the function to complete the task") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a positive integer, return the number of steps it takes to reach 1 according to the rules of the Collatz Conjecture. 4 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/.meta/src/reference/kotlin/CollatzCalculator.kt: -------------------------------------------------------------------------------- 1 | object CollatzCalculator { 2 | 3 | fun computeStepCount(start: Int): Int { 4 | require(start > 0) { "Only natural numbers are allowed" } 5 | 6 | if (start == 1) return 0 7 | 8 | val next = if (start % 2 == 0) start / 2 else 3 * start + 1 9 | return 1 + computeStepCount(next) 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.1 2 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/collatz-conjecture/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/src/main/kotlin/CollatzCalculator.kt: -------------------------------------------------------------------------------- 1 | object CollatzCalculator { 2 | fun computeStepCount(start: Int): Int { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/complex-numbers/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/complex-numbers/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/complex-numbers/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/complex-numbers/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/complex-numbers/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/complex-numbers/src/main/kotlin/ComplexNumber.kt: -------------------------------------------------------------------------------- 1 | data class ComplexNumber(val real: Double = 0.0, val imag: Double = 0.0) 2 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/.meta/version: -------------------------------------------------------------------------------- 1 | 3.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/crypto-square/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/crypto-square/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/src/main/kotlin/CryptoSquare.kt: -------------------------------------------------------------------------------- 1 | object CryptoSquare { 2 | 3 | fun ciphertext(plaintext: String): String { 4 | TODO("Implement the function to complete the task") 5 | } 6 | 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/custom-set/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Create a custom set type. 4 | 5 | Sometimes it is necessary to define a custom data structure of some type, like a set. 6 | In this exercise you will define your own set. 7 | How it works internally doesn't matter, as long as it behaves like a set of unique elements. 8 | -------------------------------------------------------------------------------- /exercises/practice/custom-set/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/custom-set/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/custom-set/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/custom-set/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/custom-set/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/darts/.approaches/hypot-for-radius/snippet.txt: -------------------------------------------------------------------------------- 1 | val toss = hypot(x.toDouble(), y.toDouble()) 2 | fun throwWithin(ring: Double) = toss <= ring 3 | 4 | if (throwWithin(innerRing)) return 10 5 | if (throwWithin(middleRing)) return 5 6 | if (throwWithin(outerRing)) return 1 7 | return 0 8 | -------------------------------------------------------------------------------- /exercises/practice/darts/.meta/version: -------------------------------------------------------------------------------- 1 | 2.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/darts/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/darts/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/darts/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/darts/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/darts/src/main/kotlin/Darts.kt: -------------------------------------------------------------------------------- 1 | object Darts { 2 | 3 | fun score(x: Any, y: Any /* choose proper types! */): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/diamond/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/diamond/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/diamond/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/diamond/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/diamond/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/diamond/src/main/kotlin/DiamondPrinter.kt: -------------------------------------------------------------------------------- 1 | class DiamondPrinter { 2 | 3 | 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/.approaches/formula/snippet.txt: -------------------------------------------------------------------------------- 1 | class Squares(private val input: Int) { 2 | 3 | fun squareOfSum() = (input * (input + 1) / 2).let { it * it } 4 | 5 | fun sumOfSquares() = (input * (input + 1) * ((input * 2) + 1)) / 6 6 | 7 | fun difference() = squareOfSum() - sumOfSquares() 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/.meta/src/reference/kotlin/DifferenceOfSquares.kt: -------------------------------------------------------------------------------- 1 | class Squares(private val max: Int) { 2 | private val range = 1..max 3 | 4 | fun sumOfSquares() = range.sumOf { it.squared() } 5 | fun squareOfSum() = range.sum().squared() 6 | fun difference() = squareOfSum() - sumOfSquares() 7 | 8 | private fun Int.squared() = this * this 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/difference-of-squares/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/diffie-hellman/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/dnd-character/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/dnd-character/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/dnd-character/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/dnd-character/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/dnd-character/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/dominoes/.meta/version: -------------------------------------------------------------------------------- 1 | 2.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/dominoes/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/dominoes/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/dominoes/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/dominoes/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/dominoes/src/main/kotlin/Dominoes.kt: -------------------------------------------------------------------------------- 1 | class ChainNotFoundException(msg: String) : RuntimeException(msg) 2 | 3 | data class Domino(val left: Int, val right: Int) 4 | 5 | object Dominoes { 6 | 7 | fun formChain(inputDominoes: List): List { 8 | TODO("Implement this to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to count the number of 1 bits in the binary representation of a number. 4 | 5 | ## Restrictions 6 | 7 | Keep your hands off that bit-count functionality provided by your standard library! 8 | Solve this one yourself using other basic tools instead. 9 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/.meta/src/reference/kotlin/EliudsEggs.kt: -------------------------------------------------------------------------------- 1 | object EliudsEggs { 2 | 3 | fun eggCount(number: Int): Int{ 4 | return number.countOneBits() 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/eliuds-eggs/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/src/main/kotlin/EliudsEggs.kt: -------------------------------------------------------------------------------- 1 | object EliudsEggs { 2 | 3 | fun eggCount(number: Int): Int{ 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/etl/.meta/src/reference/kotlin/ETL.kt: -------------------------------------------------------------------------------- 1 | object ETL { 2 | 3 | fun transform(old: Map>): Map { 4 | return old.flatMap { mapEntry -> 5 | mapEntry.value.map { word -> 6 | Pair(word.lowercaseChar(), mapEntry.key) 7 | } 8 | }.toMap() 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/etl/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.1 2 | -------------------------------------------------------------------------------- /exercises/practice/etl/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/etl/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/etl/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/etl/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/etl/src/main/kotlin/ETL.kt: -------------------------------------------------------------------------------- 1 | object ETL { 2 | fun transform(source: Map>): Map { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/flatten-array/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/flatten-array/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/src/main/kotlin/Flattener.kt: -------------------------------------------------------------------------------- 1 | object Flattener { 2 | fun flatten(source: Collection): List { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/forth/.meta/version: -------------------------------------------------------------------------------- 1 | 1.7.1 2 | -------------------------------------------------------------------------------- /exercises/practice/forth/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/forth/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/forth/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/forth/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/forth/src/main/kotlin/Forth.kt: -------------------------------------------------------------------------------- 1 | class Forth { 2 | 3 | fun evaluate(vararg line: String): List { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.approaches/secondary-constructor-atstartofday/snippet.txt: -------------------------------------------------------------------------------- 1 | class Gigasecond(baseDatetime: LocalDateTime) { 2 | private val gigaseconds: Long = 1_000_000_000 3 | val date: LocalDateTime = baseDatetime.plusSeconds(gigaseconds) 4 | 5 | constructor(baseDate: LocalDate) : this(baseDate.atStartOfDay()) 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to determine the date and time one gigasecond after a certain date. 4 | 5 | A gigasecond is one thousand million seconds. 6 | That is a one with nine zeros after it. 7 | 8 | If you were born on _January 24th, 2015 at 22:00 (10:00:00pm)_, then you would be a gigasecond old on _October 2nd, 2046 at 23:46:40 (11:46:40pm)_. 9 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.meta/src/reference/kotlin/Gigasecond.kt: -------------------------------------------------------------------------------- 1 | import java.time.LocalDate 2 | import java.time.LocalDateTime 3 | 4 | data class Gigasecond(val initialDateTime: LocalDateTime) { 5 | 6 | constructor(initialDate: LocalDate): this(initialDate.atTime(0, 0)) 7 | 8 | val date = initialDateTime.plusSeconds(1_000_000_000) 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/gigasecond/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/gigasecond/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/src/main/kotlin/Gigasecond.kt: -------------------------------------------------------------------------------- 1 | import java.time.LocalDateTime 2 | 3 | class Gigasecond { 4 | 5 | // TODO: Implement proper constructor 6 | 7 | val date: LocalDateTime = TODO("Implement this getter to complete the task") 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/grade-school/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.1 2 | -------------------------------------------------------------------------------- /exercises/practice/grade-school/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/grade-school/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/grade-school/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/grade-school/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/grains/.approaches/bit-shifting/snippet.txt: -------------------------------------------------------------------------------- 1 | fun getGrainCountForSquare(number: Int) = 2 | if (number < 1 || number > 64) 3 | throw IllegalArgumentException("square must be between 1 and 64") 4 | else BigInteger.ONE.shiftLeft(number - 1) 5 | 6 | fun getTotalGrainCount() = BigInteger.ONE.shiftLeft(64).subtract(BigInteger.ONE) 7 | -------------------------------------------------------------------------------- /exercises/practice/grains/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Calculate the number of grains of wheat on a chessboard. 4 | 5 | A chessboard has 64 squares. 6 | Square 1 has one grain, square 2 has two grains, square 3 has four grains, and so on, doubling each time. 7 | 8 | Write code that calculates: 9 | 10 | - the number of grains on a given square 11 | - the total number of grains on the chessboard 12 | -------------------------------------------------------------------------------- /exercises/practice/grains/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | There once was a wise servant who saved the life of a prince. 4 | The king promised to pay whatever the servant could dream up. 5 | Knowing that the king loved chess, the servant told the king he would like to have grains of wheat. 6 | One grain on the first square of a chessboard, with the number of grains doubling on each successive square. 7 | -------------------------------------------------------------------------------- /exercises/practice/grains/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/grains/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/grains/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/grains/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/grains/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/grains/src/main/kotlin/Grains.kt: -------------------------------------------------------------------------------- 1 | import java.math.BigInteger 2 | 3 | object Board { 4 | 5 | fun getGrainCountForSquare(number: Int): BigInteger { 6 | TODO("Implement this function to complete the task") 7 | } 8 | 9 | fun getTotalGrainCount(): BigInteger { 10 | TODO("Implement this function to complete the task") 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /exercises/practice/hamming/.approaches/zip-count/snippet.txt: -------------------------------------------------------------------------------- 1 | object Hamming { 2 | 3 | fun compute(leftStrand: String, rightStrand: String) = 4 | if (leftStrand.length != rightStrand.length) 5 | throw IllegalArgumentException("left and right strands must be of equal length") 6 | else 7 | (leftStrand zip rightStrand).count { it.first != it.second } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/hamming/.meta/src/reference/kotlin/Hamming.kt: -------------------------------------------------------------------------------- 1 | object Hamming { 2 | 3 | fun compute(leftStrand: String, rightStrand: String): Int { 4 | require(leftStrand.length == rightStrand.length) { "left and right strands must be of equal length" } 5 | 6 | val commonPairs = leftStrand.zip(rightStrand) 7 | return commonPairs.count { it.first != it.second } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/hamming/.meta/version: -------------------------------------------------------------------------------- 1 | 2.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/hamming/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/hamming/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/hamming/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/hamming/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/hamming/src/main/kotlin/Hamming.kt: -------------------------------------------------------------------------------- 1 | object Hamming { 2 | 3 | fun compute(leftStrand: String, rightStrand: String): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Instructions append 2 | 3 | Since this is your first Kotlin exercise, we've included a detailed TUTORIAL.md 4 | file that guides you through your solution. Check it out for tips and 5 | assistance! 6 | 7 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/src/reference/kotlin/HelloWorld.kt: -------------------------------------------------------------------------------- 1 | fun hello(): String { 2 | return "Hello, World!" 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/tests.toml: -------------------------------------------------------------------------------- 1 | [canonical-tests] 2 | 3 | # Say Hi! 4 | "af9ffe10-dc13-42d8-a742-e7bdafac449d" = true 5 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/hello-world/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/hello-world/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/src/main/kotlin/HelloWorld.kt: -------------------------------------------------------------------------------- 1 | fun hello(): String { 2 | return "Goodbye, Mars!" 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/src/test/kotlin/HelloWorldTest.kt: -------------------------------------------------------------------------------- 1 | import org.junit.Test 2 | import kotlin.test.assertEquals 3 | 4 | class HelloWorldTest { 5 | 6 | @Test 7 | fun helloWorldTest() { 8 | assertEquals("Hello, World!", hello()) 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/hexadecimal/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/hexadecimal/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/hexadecimal/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/hexadecimal/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/hexadecimal/src/main/kotlin/Hexadecimal.kt: -------------------------------------------------------------------------------- 1 | object Hexadecimal { 2 | 3 | fun toDecimal(s: String): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/.approaches/fold-when-let/snippet.txt: -------------------------------------------------------------------------------- 1 | .fold(Pair(10, 0)) { (pos, sum), ch -> 2 | when { 3 | ch.isDigit() -> pos - 1 to sum + (ch.digitToInt() * pos) 4 | ch == 'X' && pos == 1 -> pos - 1 to sum + 10 5 | ch == '-' -> pos to sum 6 | else -> -1 to sum 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/.meta/version: -------------------------------------------------------------------------------- 1 | 2.7.0 2 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/isbn-verifier/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/src/main/kotlin/IsbnVerifier.kt: -------------------------------------------------------------------------------- 1 | class IsbnVerifier { 2 | 3 | fun isValid(number: String): Boolean { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/isogram/.meta/version: -------------------------------------------------------------------------------- 1 | 1.7.0 2 | -------------------------------------------------------------------------------- /exercises/practice/isogram/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/isogram/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/isogram/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/isogram/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/isogram/src/main/kotlin/Isogram.kt: -------------------------------------------------------------------------------- 1 | object Isogram { 2 | 3 | fun isIsogram(input: String): Boolean { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/kindergarten-garden/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.1 2 | -------------------------------------------------------------------------------- /exercises/practice/kindergarten-garden/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/kindergarten-garden/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/kindergarten-garden/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/kindergarten-garden/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/kindergarten-garden/src/main/kotlin/KindergartenGarden.kt: -------------------------------------------------------------------------------- 1 | class KindergartenGarden(private val diagram: String) { 2 | 3 | fun getPlantsOfStudent(student: String): List { 4 | TODO("Implement the function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/knapsack/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/knapsack/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/knapsack/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/knapsack/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/knapsack/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/knapsack/src/main/kotlin/Knapsack.kt: -------------------------------------------------------------------------------- 1 | data class Item(val weight: Int, val value: Int) 2 | 3 | fun knapsack(maximumWeight: Int, items: List): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You work for a government agency that has intercepted a series of encrypted communication signals from a group of bank robbers. 4 | The signals contain a long sequence of digits. 5 | Your team needs to use various digital signal processing techniques to analyze the signals and identify any patterns that may indicate the planning of a heist. 6 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/largest-series-product/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/src/main/kotlin/LargestSeriesProduct.kt: -------------------------------------------------------------------------------- 1 | class Series { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | fun getLargestProduct(span: Int): Long { 6 | TODO("Implement this function to complete the task") 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/leap/.approaches/boolean-chain/snippet.txt: -------------------------------------------------------------------------------- 1 | data class Year(val year: Int) { 2 | val isLeap = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/leap/.approaches/built-in-method/snippet.txt: -------------------------------------------------------------------------------- 1 | import java.time.* 2 | 3 | data class Year(val year: Int) { 4 | val isLeap = LocalDate.of(year, Month.FEBRUARY, 28).isLeapYear 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/leap/.approaches/plusdays/snippet.txt: -------------------------------------------------------------------------------- 1 | import java.time.* 2 | 3 | data class Year(val year: Int) { 4 | val isLeap = LocalDate.of(year, Month.FEBRUARY, 28).plusDays(1).dayOfMonth == 29 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/leap/.approaches/ternary-expression/snippet.txt: -------------------------------------------------------------------------------- 1 | data class Year(val year: Int) { 2 | val isLeap = if (year % 100 == 0) year % 400 == 0 else year % 4 == 0 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/leap/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to determine whether a given year is a leap year. 4 | -------------------------------------------------------------------------------- /exercises/practice/leap/.meta/src/reference/kotlin/Leap.kt: -------------------------------------------------------------------------------- 1 | data class Year(private val year: Int) { 2 | val isLeap: Boolean by lazy { divisibleBy(4) && (divisibleBy(400) || !divisibleBy(100)) } 3 | 4 | private fun divisibleBy(i: Int) = year % i == 0 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/leap/.meta/version: -------------------------------------------------------------------------------- 1 | 1.6.0 2 | -------------------------------------------------------------------------------- /exercises/practice/leap/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/leap/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/leap/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/leap/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/leap/src/main/kotlin/Leap.kt: -------------------------------------------------------------------------------- 1 | data class Year(val todo: Nothing) { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | val isLeap: Boolean = TODO("Implement this getter to complete the task") 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You are working on a project to develop a train scheduling system for a busy railway network. 4 | 5 | You've been asked to develop a prototype for the train routes in the scheduling system. 6 | Each route consists of a sequence of train stations that a given train stops at. 7 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/linked-list/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/linked-list/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/.meta/version: -------------------------------------------------------------------------------- 1 | 2.4.1 2 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/list-ops/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/list-ops/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/luhn/.meta/version: -------------------------------------------------------------------------------- 1 | 1.6.1 2 | -------------------------------------------------------------------------------- /exercises/practice/luhn/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/luhn/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/luhn/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/luhn/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/luhn/src/main/kotlin/Luhn.kt: -------------------------------------------------------------------------------- 1 | object Luhn { 2 | 3 | fun isValid(candidate: String): Boolean { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a string containing brackets `[]`, braces `{}`, parentheses `()`, or any combination thereof, verify that any and all pairs are matched and nested correctly. 4 | Any other characters should be ignored. 5 | For example, `"{what is (42)}?"` is balanced and `"[text}"` is not. 6 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/matching-brackets/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/src/main/kotlin/MatchingBrackets.kt: -------------------------------------------------------------------------------- 1 | object MatchingBrackets { 2 | 3 | fun isValid(input: String): Boolean { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/matrix/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/matrix/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/matrix/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/matrix/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/matrix/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/matrix/src/main/kotlin/Matrix.kt: -------------------------------------------------------------------------------- 1 | class Matrix(private val matrixAsString: String) { 2 | 3 | fun column(colNr: Int): List { 4 | TODO("Implement this to complete the task") 5 | } 6 | 7 | fun row(rowNr: Int): List { 8 | TODO("Implement this to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/meetup/.meta/src/reference/kotlin/MeetupSchedule.kt: -------------------------------------------------------------------------------- 1 | enum class MeetupSchedule { 2 | 3 | FIRST, SECOND, THIRD, FOURTH, LAST, TEENTH 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/meetup/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/meetup/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/meetup/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/meetup/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/meetup/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/meetup/src/main/kotlin/Meetup.kt: -------------------------------------------------------------------------------- 1 | import java.time.DayOfWeek 2 | import java.time.LocalDate 3 | 4 | class Meetup { 5 | 6 | // TODO: implement proper constructor 7 | 8 | fun day(dayOfWeek: DayOfWeek, schedule: MeetupSchedule): LocalDate{ 9 | TODO("Implement this function to complete the task") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/meetup/src/main/kotlin/MeetupSchedule.kt: -------------------------------------------------------------------------------- 1 | enum class MeetupSchedule { 2 | 3 | FIRST, SECOND, THIRD, FOURTH, LAST, TEENTH 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Minesweeper][wikipedia] is a popular game where the user has to find the mines using numeric hints that indicate how many mines are directly adjacent (horizontally, vertically, diagonally) to a square. 4 | 5 | [wikipedia]: https://en.wikipedia.org/wiki/Minesweeper_(video_game) 6 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/minesweeper/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/minesweeper/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/src/main/kotlin/Minesweeper.kt: -------------------------------------------------------------------------------- 1 | data class MinesweeperBoard(val todo: Nothing) { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | fun withNumbers(): List { 6 | TODO("Implement this function to complete the task") 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a number n, determine what the nth prime is. 4 | 5 | By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. 6 | 7 | If your language provides methods in the standard library to deal with prime numbers, pretend they don't exist and implement them yourself. 8 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/.meta/version: -------------------------------------------------------------------------------- 1 | 2.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/nth-prime/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/nth-prime/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/src/main/kotlin/NthPrime.kt: -------------------------------------------------------------------------------- 1 | object Prime { 2 | 3 | fun nth(n: Int): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/.approaches/groupby-plus/snippet.txt: -------------------------------------------------------------------------------- 1 | class Dna(val sequence: String) { 2 | init { 3 | require(sequence.all { it in "ACGT" }) 4 | } 5 | val nucleotideCounts 6 | get() = mapOf('A' to 0, 'C' to 0, 'G' to 0, 'T' to 0) + sequence.groupingBy { it }.eachCount() 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/nucleotide-count/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/src/main/kotlin/Dna.kt: -------------------------------------------------------------------------------- 1 | class Dna { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | val nucleotideCounts: Map 6 | get() { 7 | TODO("Implement this function to complete the task") 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to figure out if a sentence is a pangram. 4 | 5 | A pangram is a sentence using every letter of the alphabet at least once. 6 | It is case insensitive, so it doesn't matter if a letter is lower-case (e.g. `k`) or upper-case (e.g. `K`). 7 | 8 | For this exercise, a sentence is a pangram if it contains each of the 26 letters in the English alphabet. 9 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.meta/src/reference/kotlin/Pangram.kt: -------------------------------------------------------------------------------- 1 | object Pangram { 2 | const val alphaLength = 26 3 | fun isPangram(input: String) = input.lowercase().replace(Regex("[^a-z]"), "").toSet().size == alphaLength 4 | } 5 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/pangram/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/pangram/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/pangram/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/pangram/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/pangram/src/main/kotlin/Pangram.kt: -------------------------------------------------------------------------------- 1 | object Pangram { 2 | 3 | fun isPangram(input: String): Boolean { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/pascals-triangle/.meta/version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /exercises/practice/pascals-triangle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/pascals-triangle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/pascals-triangle/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/pascals-triangle/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/pascals-triangle/src/main/kotlin/PascalsTriangle.kt: -------------------------------------------------------------------------------- 1 | object PascalsTriangle { 2 | 3 | fun computeTriangle(rows: Int): List> { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/perfect-numbers/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/src/main/kotlin/NaturalNumber.kt: -------------------------------------------------------------------------------- 1 | 2 | enum class Classification { 3 | DEFICIENT, PERFECT, ABUNDANT 4 | } 5 | 6 | fun classify(naturalNumber: Int): Classification { 7 | return Classification.DEFICIENT 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/.meta/version: -------------------------------------------------------------------------------- 1 | 1.7.0 2 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/phone-number/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/phone-number/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/src/main/kotlin/PhoneNumber.kt: -------------------------------------------------------------------------------- 1 | class PhoneNumber { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | val number: String? = TODO("Implement this getter to complete the task") 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/pig-latin/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/pig-latin/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/src/main/kotlin/PigLatin.kt: -------------------------------------------------------------------------------- 1 | object PigLatin { 2 | 3 | fun translate(phrase: String): String { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/prime-factors/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/prime-factors/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/src/main/kotlin/PrimeFactors.kt: -------------------------------------------------------------------------------- 1 | object PrimeFactorCalculator { 2 | 3 | fun primeFactors(int: Int): List { 4 | TODO("Implement this function to complete the task") 5 | } 6 | 7 | fun primeFactors(long: Long): List { 8 | TODO("Implement this function to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/protein-translation/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/protein-translation/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/src/main/kotlin/ProteinTranslation.kt: -------------------------------------------------------------------------------- 1 | fun translate(rna: String?): List { 2 | TODO("Implement this function to complete the task") 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/rail-fence-cipher/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/src/main/kotlin/RailFenceCipher.kt: -------------------------------------------------------------------------------- 1 | class RailFenceCipher { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | fun getEncryptedData(input: String): String { 6 | TODO("Implement this function to complete the task") 7 | } 8 | 9 | fun getDecryptedData(input: String): String { 10 | TODO("Implement this function to complete the task") 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.approaches/buildstring/snippet.txt: -------------------------------------------------------------------------------- 1 | object Raindrops { 2 | fun convert(num: Int) = buildString { 3 | if (num % 3 == 0) append("Pling") 4 | if (num % 5 == 0) append("Plang") 5 | if (num % 7 == 0) append("Plong") 6 | if (isEmpty()) append(num) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.approaches/fold-on-list/snippet.txt: -------------------------------------------------------------------------------- 1 | object Raindrops { 2 | fun convert(n: Int) = 3 | listOf(3 to "Pling", 5 to "Plang", 7 to "Plong") 4 | .fold("") { output, pair -> 5 | output + if (n % pair.first == 0) pair.second else "" 6 | } 7 | .ifEmpty { n.toString() } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Raindrops is a slightly more complex version of the FizzBuzz challenge, a classic interview question. 4 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.meta/src/reference/kotlin/Raindrops.kt: -------------------------------------------------------------------------------- 1 | object Raindrops { 2 | private val sounds = listOf(Pair(3, "Pling"), Pair(5, "Plang"), Pair(7, "Plong")) 3 | 4 | fun convert(n: Int): String { 5 | val result = sounds.filter { n % it.first == 0 }.joinToString("") { it.second } 6 | 7 | return result.ifEmpty { n.toString() } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/raindrops/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/raindrops/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/src/main/kotlin/Raindrops.kt: -------------------------------------------------------------------------------- 1 | object Raindrops { 2 | 3 | fun convert(n: Int): String { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/react/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/react/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/react/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/react/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/react/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/react/src/main/kotlin/React.kt: -------------------------------------------------------------------------------- 1 | class Reactor() { 2 | // Your compute cell's addCallback method must return an object 3 | // that implements the Subscription interface. 4 | interface Subscription { 5 | fun cancel() 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/.meta/src/reference/kotlin/Color.kt: -------------------------------------------------------------------------------- 1 | enum class Color { 2 | BLACK, BROWN, RED, ORANGE, YELLOW, GREEN, BLUE, VIOLET, GREY, WHITE 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/.meta/src/reference/kotlin/ResistorColorDuo.kt: -------------------------------------------------------------------------------- 1 | object ResistorColorDuo { 2 | fun value(vararg colors: Color): Int = 10 * colors[0].ordinal + colors[1].ordinal 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/.meta/version: -------------------------------------------------------------------------------- 1 | 2.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/resistor-color-duo/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/src/main/kotlin/Color.kt: -------------------------------------------------------------------------------- 1 | enum class Color { 2 | BLACK, BROWN, RED, ORANGE, YELLOW, GREEN, BLUE, VIOLET, GREY, WHITE 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/src/main/kotlin/ResistorColorDuo.kt: -------------------------------------------------------------------------------- 1 | object ResistorColorDuo { 2 | 3 | fun value(vararg colors: Color): Int { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/.meta/src/reference/kotlin/Color.kt: -------------------------------------------------------------------------------- 1 | enum class Color { 2 | BLACK, BROWN, RED, ORANGE, YELLOW, GREEN, BLUE, VIOLET, GREY, WHITE 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/.meta/src/reference/kotlin/Unit.kt: -------------------------------------------------------------------------------- 1 | enum class Unit { 2 | OHMS, KILOOHMS, MEGAOHMS, GIGAOHMS, TERAOHMS, PETAOHMS, EXAOHMS 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/resistor-color-trio/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/src/main/kotlin/Color.kt: -------------------------------------------------------------------------------- 1 | enum class Color { 2 | BLACK, BROWN, RED, ORANGE, YELLOW, GREEN, BLUE, VIOLET, GREY, WHITE 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/src/main/kotlin/ResistorColorTrio.kt: -------------------------------------------------------------------------------- 1 | object ResistorColorTrio { 2 | 3 | fun text(vararg input: Color): String { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/src/main/kotlin/Unit.kt: -------------------------------------------------------------------------------- 1 | enum class Unit { 2 | OHMS, KILOOHMS, MEGAOHMS, GIGAOHMS, TERAOHMS, PETAOHMS, EXAOHMS 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/.meta/src/reference/kotlin/ResistorColor.kt: -------------------------------------------------------------------------------- 1 | object ResistorColor { 2 | 3 | private val colors = listOf("black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white") 4 | 5 | fun colorCode(input: String): Int = colors.indexOf(input) 6 | 7 | fun colors() = colors 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/.meta/tests.toml: -------------------------------------------------------------------------------- 1 | [canonical-tests] 2 | 3 | # Black 4 | "49eb31c5-10a8-4180-9f7f-fea632ab87ef" = true 5 | 6 | # White 7 | "0a4df94b-92da-4579-a907-65040ce0b3fc" = true 8 | 9 | # Orange 10 | "5f81608d-f36f-4190-8084-f45116b6f380" = true 11 | 12 | # Colors 13 | "581d68fa-f968-4be2-9f9d-880f2fb73cf7" = true 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/resistor-color/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/resistor-color/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/src/main/kotlin/ResistorColor.kt: -------------------------------------------------------------------------------- 1 | object ResistorColor { 2 | 3 | fun colorCode(input: String): Int { 4 | TODO("Implement this to complete the task") 5 | } 6 | 7 | fun colors(): List { 8 | TODO("Implement this to complete the task") 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to reverse a given string. 4 | 5 | Some examples: 6 | 7 | - Turn `"stressed"` into `"desserts"`. 8 | - Turn `"strops"` into `"sports"`. 9 | - Turn `"racecar"` into `"racecar"`. 10 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.meta/src/reference/kotlin/ReverseString.kt: -------------------------------------------------------------------------------- 1 | fun reverse(input: String): String { 2 | val result = StringBuilder() 3 | for(i in input.indices) { 4 | result.append(input[input.length - 1 - i]) 5 | } 6 | return result.toString() 7 | } -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 -------------------------------------------------------------------------------- /exercises/practice/reverse-string/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/reverse-string/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/reverse-string/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/src/main/kotlin/ReverseString.kt: -------------------------------------------------------------------------------- 1 | fun reverse(input: String): String { 2 | TODO("Implement this function to complete the task") 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/.meta/src/reference/kotlin/RnaTranscription.kt: -------------------------------------------------------------------------------- 1 | fun transcribeToRna(dna: String): String = dna.map { nucleotide -> 2 | when (nucleotide) { 3 | 'A' -> 'U' 4 | 'G' -> 'C' 5 | 'C' -> 'G' 6 | 'T' -> 'A' 7 | else -> nucleotide 8 | } 9 | }.joinToString("") 10 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/.meta/version: -------------------------------------------------------------------------------- 1 | 1.3.0 2 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/rna-transcription/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/src/main/kotlin/RnaTranscription.kt: -------------------------------------------------------------------------------- 1 | fun transcribeToRna(dna: String): String = "" 2 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/robot-name/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/robot-name/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/src/main/kotlin/RobotName.kt: -------------------------------------------------------------------------------- 1 | class Robot { 2 | 3 | val name: String 4 | get() = TODO("Implement this getter to complete the task") 5 | 6 | fun reset() { 7 | TODO("Implement this function to complete the task") 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/.meta/src/reference/kotlin/GridPosition.kt: -------------------------------------------------------------------------------- 1 | data class GridPosition(val x: Int, val y: Int) 2 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/.meta/src/reference/kotlin/Orientation.kt: -------------------------------------------------------------------------------- 1 | enum class Orientation { 2 | 3 | NORTH, EAST, SOUTH, WEST 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/.meta/version: -------------------------------------------------------------------------------- 1 | 3.2.0 -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/robot-simulator/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/src/main/kotlin/GridPosition.kt: -------------------------------------------------------------------------------- 1 | data class GridPosition(val x: Int, val y: Int) 2 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/src/main/kotlin/Orientation.kt: -------------------------------------------------------------------------------- 1 | enum class Orientation { 2 | 3 | NORTH, EAST, SOUTH, WEST 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/src/main/kotlin/Robot.kt: -------------------------------------------------------------------------------- 1 | class Robot { 2 | 3 | // TODO: implement proper constructor, provide read access to `gridPosition` and `orientation` 4 | 5 | fun simulate(instructions: String) { 6 | TODO("Implement this function to complete the task") 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/.approaches/fold-repeat/snippet.txt: -------------------------------------------------------------------------------- 1 | .fold(Pair(StringBuilder(), n)) { (output, runnyNum), (value, numeral) -> 2 | when { 3 | runnyNum >= value -> 4 | output.append(numeral.repeat(runnyNum / value)) to 5 | runnyNum % value 6 | else -> output to runnyNum 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/roman-numerals/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/src/main/kotlin/RomanNumerals.kt: -------------------------------------------------------------------------------- 1 | object RomanNumerals { 2 | 3 | fun value(n: Int): String { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/rotational-cipher/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/src/main/kotlin/RotationalCipher.kt: -------------------------------------------------------------------------------- 1 | class RotationalCipher { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | fun encode(text: String): String { 6 | TODO("Implement this function to complete the task") 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/run-length-encoding/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/src/main/kotlin/RunLengthEncoding.kt: -------------------------------------------------------------------------------- 1 | object RunLengthEncoding { 2 | 3 | fun encode(input: String): String { 4 | TODO("Implement this to complete the task") 5 | } 6 | 7 | fun decode(input: String): String { 8 | TODO("Implement this to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/.meta/src/reference/kotlin/MatrixCoordinate.kt: -------------------------------------------------------------------------------- 1 | data class MatrixCoordinate(val row: Int, val col: Int) 2 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/.meta/version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/saddle-points/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/saddle-points/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/src/main/kotlin/Matrix.kt: -------------------------------------------------------------------------------- 1 | data class MatrixCoordinate(val row: Int, val col: Int) 2 | -------------------------------------------------------------------------------- /exercises/practice/say/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/say/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/say/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/say/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/say/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/say/src/main/kotlin/Say.kt: -------------------------------------------------------------------------------- 1 | class NumberSpeller { 2 | 3 | fun say(input: Long): String { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/scale-generator/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/scale-generator/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/src/main/kotlin/Scale.kt: -------------------------------------------------------------------------------- 1 | class Scale(private val tonic: String) { 2 | 3 | fun chromatic(): List { 4 | TODO("Implement this function to complete the task") 5 | } 6 | 7 | fun interval(intervals: String): List { 8 | TODO("Implement this function to complete the task") 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.approaches/map/snippet.txt: -------------------------------------------------------------------------------- 1 | private val compressedMap = 2 | mapOf( 3 | 1 to listOf('A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'), 4 | 2 to listOf('D', 'G'), 5 | 3 to listOf('B', 'C', 'M', 'P'), 6 | 4 to listOf('F', 'H', 'V', 'W', 'Y'), 7 | 5 to listOf('K'), 8 | 8 to listOf('J', 'X'), 9 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.approaches/when/snippet.txt: -------------------------------------------------------------------------------- 1 | private fun scoreLetter(c: Char) = 2 | when (c.uppercaseChar()) { 3 | 'A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T' -> 1 4 | 'D', 'G' -> 2 5 | 'B', 'C', 'M', 'P' -> 3 6 | 'F', 'H', 'V', 'W', 'Y' -> 4 7 | 'K' -> 5 8 | 'J', 'X' -> 8 9 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Scrabble][wikipedia] is a word game where players place letter tiles on a board to form words. 4 | Each letter has a value. 5 | A word's score is the sum of its letters' values. 6 | 7 | [wikipedia]: https://en.wikipedia.org/wiki/Scrabble 8 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/scrabble-score/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/src/main/kotlin/ScrabbleScore.kt: -------------------------------------------------------------------------------- 1 | object ScrabbleScore { 2 | 3 | fun scoreLetter(c: Char): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | 7 | fun scoreWord(word: String): Int { 8 | TODO("Implement this function to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/.meta/src/reference/kotlin/Signal.kt: -------------------------------------------------------------------------------- 1 | enum class Signal { 2 | 3 | WINK, DOUBLE_BLINK, CLOSE_YOUR_EYES, JUMP 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/secret-handshake/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/src/main/kotlin/HandshakeCalculator.kt: -------------------------------------------------------------------------------- 1 | object HandshakeCalculator { 2 | fun calculateHandshake(number: Int): List { 3 | TODO("Implement the function to complete the task") 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/src/main/kotlin/Signal.kt: -------------------------------------------------------------------------------- 1 | enum class Signal { 2 | 3 | WINK, DOUBLE_BLINK, CLOSE_YOUR_EYES, JUMP 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/series/.meta/version: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/series/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/series/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/series/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/series/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/series/src/main/kotlin/Series.kt: -------------------------------------------------------------------------------- 1 | object Series { 2 | 3 | fun slices(n: Int, s: String): List> { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/sieve/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/sieve/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/sieve/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/sieve/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/sieve/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/sieve/src/main/kotlin/Sieve.kt: -------------------------------------------------------------------------------- 1 | object Sieve { 2 | 3 | fun primesUpTo(upperBound: Int): List { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/.meta/version: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/simple-cipher/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/src/main/kotlin/SimpleCipher.kt: -------------------------------------------------------------------------------- 1 | data class Cipher(val todo: Nothing) { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | fun encode(s: String): String { 6 | TODO("Implement this function to complete the task") 7 | } 8 | 9 | fun decode(s: String): String { 10 | TODO("Implement this function to complete the task") 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/src/test/kotlin/SimpleCipherTest.kt: -------------------------------------------------------------------------------- 1 | import org.junit.runner.RunWith 2 | import org.junit.runners.Suite 3 | 4 | @RunWith(Suite::class) 5 | @Suite.SuiteClasses( 6 | RandomKeyCipherTest::class, 7 | IncorrectKeyCipherTest::class, 8 | SubstitutionCipherTest::class 9 | ) 10 | class SimpleCipherTest { 11 | } 12 | -------------------------------------------------------------------------------- /exercises/practice/space-age/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/space-age/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/space-age/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/space-age/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/space-age/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/spiral-matrix/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/src/main/kotlin/SpiralMatrix.kt: -------------------------------------------------------------------------------- 1 | object SpiralMatrix { 2 | 3 | fun ofSize(size: Int): Array { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/strain/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/strain/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/strain/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/strain/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/strain/src/main/kotlin/Strain.kt: -------------------------------------------------------------------------------- 1 | object Strain { 2 | 3 | fun keep(collection: List, predicate: (T) -> Boolean): List { 4 | TODO("Implement this function to complete the task") 5 | } 6 | 7 | fun discard(collection: List, predicate: (T) -> Boolean): List { 8 | TODO("Implement this function to complete the task") 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /exercises/practice/sublist/.meta/src/reference/kotlin/Relationship.kt: -------------------------------------------------------------------------------- 1 | enum class Relationship { 2 | 3 | EQUAL, SUBLIST, SUPERLIST, UNEQUAL 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/sublist/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/sublist/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/sublist/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/sublist/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/sublist/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/sublist/src/main/kotlin/Sublist.kt: -------------------------------------------------------------------------------- 1 | enum class Relationship { 2 | 3 | EQUAL, SUBLIST, SUPERLIST, UNEQUAL 4 | 5 | } 6 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You work for a company that makes an online, fantasy-survival game. 4 | 5 | When a player finishes a level, they are awarded energy points. 6 | The amount of energy awarded depends on which magical items the player found while exploring that level. 7 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.meta/src/reference/kotlin/SumOfMultiples.kt: -------------------------------------------------------------------------------- 1 | object SumOfMultiples { 2 | 3 | fun sum(factors: Set, limit: Int) = 4 | with(factors.filter { it != 0 }) { 5 | (1 until limit).filter { x -> any { y -> x.isMultipleOf(y) } }.sum() 6 | } 7 | } 8 | 9 | fun Int.isMultipleOf(y: Int) = this % y == 0 10 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.meta/version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/sum-of-multiples/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/src/main/kotlin/SumOfMultiples.kt: -------------------------------------------------------------------------------- 1 | object SumOfMultiples { 2 | 3 | fun sum(factors: Set, limit: Int): Int { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/transpose/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/transpose/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/transpose/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/transpose/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/transpose/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/transpose/src/main/kotlin/Transpose.kt: -------------------------------------------------------------------------------- 1 | object Transpose { 2 | 3 | fun transpose(input: List): List { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/triangle/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.1 2 | -------------------------------------------------------------------------------- /exercises/practice/triangle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/triangle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/triangle/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/triangle/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/triangle/src/main/kotlin/Triangle.kt: -------------------------------------------------------------------------------- 1 | class Triangle(val a: T, val b: T, val c: T) { 2 | 3 | // TODO: Implement proper constructor 4 | 5 | val isEquilateral: Boolean = TODO("Implement this getter to complete the task") 6 | val isIsosceles: Boolean = TODO("Implement this getter to complete the task") 7 | val isScalene: Boolean = TODO("Implement this getter to complete the task") 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/.meta/src/reference/kotlin/TwoFer.kt: -------------------------------------------------------------------------------- 1 | fun twofer(name: String = "you"): String { 2 | return "One for $name, one for me." 3 | } -------------------------------------------------------------------------------- /exercises/practice/two-fer/.meta/tests.toml: -------------------------------------------------------------------------------- 1 | [canonical-tests] 2 | 3 | # no name given 4 | "1cf3e15a-a3d7-4a87-aeb3-ba1b43bc8dce" = true 5 | 6 | # a name given 7 | "b4c6dbb8-b4fb-42c2-bafd-10785abe7709" = true 8 | 9 | # another name given 10 | "3549048d-1a6e-4653-9a79-b0bda163e8d5" = true 11 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/two-fer/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/two-fer/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/src/main/kotlin/TwoFer.kt: -------------------------------------------------------------------------------- 1 | fun twofer(name: String): String { 2 | TODO("Implement the function to complete the task") 3 | } 4 | -------------------------------------------------------------------------------- /exercises/practice/word-count/.approaches/findall-groupingby-eachcount/snippet.txt: -------------------------------------------------------------------------------- 1 | object WordCount { 2 | fun phrase(phrase: String): Map { 3 | return Regex("[a-z0-9]+(?:'[a-z]+)?") 4 | .findAll(phrase.lowercase()) 5 | .groupingBy { it.value } 6 | .eachCount() 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /exercises/practice/word-count/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You teach English as a foreign language to high school students. 4 | 5 | You've decided to base your entire curriculum on TV shows. 6 | You need to analyze which words are used, and how often they're repeated. 7 | 8 | This will let you choose the simplest shows to start with, and to gradually increase the difficulty as time passes. 9 | -------------------------------------------------------------------------------- /exercises/practice/word-count/.meta/version: -------------------------------------------------------------------------------- 1 | 1.4.0 2 | -------------------------------------------------------------------------------- /exercises/practice/word-count/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/word-count/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/word-count/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/word-count/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/word-count/src/main/kotlin/WordCount.kt: -------------------------------------------------------------------------------- 1 | object WordCount { 2 | 3 | fun phrase(phrase: String): Map { 4 | TODO("Implement this function to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/wordy/.meta/version: -------------------------------------------------------------------------------- 1 | 1.5.0 2 | -------------------------------------------------------------------------------- /exercises/practice/wordy/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/wordy/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/wordy/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/wordy/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/wordy/src/main/kotlin/Wordy.kt: -------------------------------------------------------------------------------- 1 | object Wordy { 2 | 3 | fun answer(input: String): Int { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/yacht/.meta/src/reference/kotlin/YachtCategory.kt: -------------------------------------------------------------------------------- 1 | enum class YachtCategory { 2 | YACHT, 3 | ONES, 4 | TWOS, 5 | THREES, 6 | FOURS, 7 | FIVES, 8 | SIXES, 9 | FULL_HOUSE, 10 | FOUR_OF_A_KIND, 11 | LITTLE_STRAIGHT, 12 | BIG_STRAIGHT, 13 | CHOICE 14 | } 15 | -------------------------------------------------------------------------------- /exercises/practice/yacht/.meta/version: -------------------------------------------------------------------------------- 1 | 1.2.0 2 | -------------------------------------------------------------------------------- /exercises/practice/yacht/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/yacht/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/yacht/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/yacht/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/yacht/src/main/kotlin/Yacht.kt: -------------------------------------------------------------------------------- 1 | object Yacht { 2 | 3 | fun solve(category: YachtCategory, vararg dices: Int): Int { 4 | TODO("Implement this to complete the task") 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /exercises/practice/yacht/src/main/kotlin/YachtCategory.kt: -------------------------------------------------------------------------------- 1 | enum class YachtCategory { 2 | YACHT, 3 | ONES, 4 | TWOS, 5 | THREES, 6 | FOURS, 7 | FIVES, 8 | SIXES, 9 | FULL_HOUSE, 10 | FOUR_OF_A_KIND, 11 | LITTLE_STRAIGHT, 12 | BIG_STRAIGHT, 13 | CHOICE 14 | } 15 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/.meta/tests.toml: -------------------------------------------------------------------------------- 1 | [canonical-tests] 2 | 3 | # resident who drinks water 4 | "16efb4e4-8ad7-4d5e-ba96-e5537b66fd42" = true 5 | 6 | # resident who owns zebra 7 | "084d5b8b-24e2-40e6-b008-c800da8cd257" = true 8 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/.meta/version: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/exercises/practice/zebra-puzzle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | resolutionStrategy { 7 | eachPlugin { 8 | when (requested.id.id) { 9 | "org.jetbrains.kotlin.jvm" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0") 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/src/main/kotlin/ZebraPuzzle.kt: -------------------------------------------------------------------------------- 1 | class ZebraPuzzle() { 2 | 3 | fun drinksWater(): String { 4 | TODO("Implement this function to complete the task") 5 | } 6 | 7 | fun ownsZebra(): String { 8 | TODO("Implement this function to complete the task") 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /exercises/shared/.docs/tests.md: -------------------------------------------------------------------------------- 1 | # Tests 2 | 3 | Execute the tests with: 4 | 5 | ```bash 6 | $ gradlew test 7 | ``` 8 | 9 | > Use `gradlew.bat` if you're on Windows 10 | 11 | ## Skipped tests 12 | 13 | In the test suites all tests but the first have been skipped. 14 | 15 | Once you get a test passing, you can enable the next one by removing the 16 | `@Ignore` annotation. 17 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/kotlin/ca2cfec0734227d8cc9cb1b25faaeea846c92e38/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | --------------------------------------------------------------------------------