Fast-forward to later exercises - Saddle Point in progress

This commit is contained in:
2017-07-20 20:26:53 -04:00
parent ad938edbce
commit 69ae16879c
468 changed files with 15060 additions and 0 deletions

View file

@ -0,0 +1,2 @@
#Wed Jul 19 11:23:15 EDT 2017
gradle.version=3.5

9
kotlin/atbash-cipher/.idea/compiler.xml generated Normal file
View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="atbash-cipher_main" target="1.8" />
<module name="atbash-cipher_test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

19
kotlin/atbash-cipher/.idea/gradle.xml generated Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/Gradle/gradle-3.5" />
<option name="gradleJvm" value="1.8" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="useAutoImport" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: junit:junit:4.12">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains:annotations:13.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/5a852a554eb4f9fb93efdffa352b7983ed595e32/kotlin-test-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/4b9a869f86569edea4a07d19b9749ac835fb7207/kotlin-test-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/a1865f59b6f72597452e5bdfefeb14d13bc31c7d/kotlin-test-junit-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/ed59de63c4565c708124caaa4e86562a780f9ba0/kotlin-test-junit-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

6
kotlin/atbash-cipher/.idea/misc.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

10
kotlin/atbash-cipher/.idea/modules.xml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/atbash-cipher.iml" filepath="$PROJECT_DIR$/atbash-cipher.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/atbash-cipher_main.iml" filepath="$PROJECT_DIR$/.idea/modules/atbash-cipher_main.iml" group="atbash-cipher" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/atbash-cipher_test.iml" filepath="$PROJECT_DIR$/.idea/modules/atbash-cipher_test.iml" group="atbash-cipher" />
</modules>
</component>
</project>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="atbash-cipher:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="atbash-cipher_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../out/production/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/main">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
</component>
</module>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="atbash-cipher:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="atbash-cipher_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/test">
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="atbash-cipher_main" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1" level="project" />
</component>
<component name="TestModuleProperties" production-module="atbash-cipher_main" />
</module>

746
kotlin/atbash-cipher/.idea/workspace.xml generated Normal file
View file

@ -0,0 +1,746 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="fa287d79-b1fb-4179-982e-bbed626c0d06" name="Default" comment="" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="AtbashTest.kt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/test/kotlin/AtbashTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1806">
<caret line="47" column="0" lean-forward="false" selection-start-line="47" selection-start-column="0" selection-end-line="47" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Atbash.kt" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/kotlin/Atbash.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="473">
<caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Kotlin Class" />
</list>
</option>
</component>
<component name="GradleLocalSettings">
<option name="myGradleHomes">
<map>
<entry key="$PROJECT_DIR$" value="C:\Gradle\gradle-3.5" />
</map>
</option>
<option name="myGradleVersions">
<map>
<entry key="$PROJECT_DIR$" value="3.5" />
</map>
</option>
<option name="availableProjects">
<map>
<entry>
<key>
<ExternalProjectPojo>
<option name="name" value="atbash-cipher" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</key>
<value>
<list>
<ExternalProjectPojo>
<option name="name" value="atbash-cipher" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="availableTasks">
<map>
<entry key="$PROJECT_DIR$">
<value>
<list>
<ExternalTaskPojo>
<option name="description" value="Displays the components produced by root project 'atbash-cipher'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="components" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects that depend on it." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildDependents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the sub-projects of root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="projects" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="classes" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the dependent components of components in root project 'atbash-cipher'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependentComponents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all buildscript dependencies declared in root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildEnvironment" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Gradle wrapper files." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="wrapper" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles test classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="testClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Javadoc API documentation for the main source code." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="javadoc" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles a jar archive containing the main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="jar" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the configuration model of root project 'atbash-cipher'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="model" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyMainKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes main resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the tasks runnable from root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="tasks" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Initializes a new Gradle build." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="init" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyTestKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs the unit tests." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="test" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles main Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'test'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the insight into a specific dependency in root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencyInsight" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs all checks." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="check" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles the outputs of this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="assemble" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Deletes the build directory." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="clean" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles test Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all dependencies declared in root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencies" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes test resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processTestResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays a help message." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="help" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'main'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="build" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects it depends on." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildNeeded" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the properties of root project 'atbash-cipher'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="properties" />
</ExternalTaskPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="modificationStamps">
<map>
<entry key="$PROJECT_DIR$" value="1500477779052" />
</map>
</option>
<option name="projectBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalProjectBuildClasspathPojo>
<option name="modulesBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalModuleBuildClasspathPojo>
<option name="entries">
<list>
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/e742de8adf25f631b39f74e2d6fd00cd9cdd609e/kotlin-gradle-plugin-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/5e3d99580c70b67a07cd70481943362e4b29d8d3/kotlin-gradle-plugin-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/f2d8698c46d1167ff24b06a840a87d91a02db891/commons-io-2.4-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/67313d715fbf0ea4fd0bdb69217fb77f807a8ce5/commons-lang-2.6-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/ce1edb914c94ebc388f086c6827e8bdeec71ac2/commons-lang-2.6.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/2c0ad82587d187f78c4063fa7867ed3c4dfa54ca/kotlin-android-extensions-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/56cfcc61bc91638ea52d13ce90b565f50be3d6f5/kotlin-android-extensions-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/e48aafb092d4c3ddd6927f38f9f17f7117e1ef47/kotlin-gradle-plugin-api-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/9083de2c98801f1fe058b6280234265269c1cad0/kotlin-gradle-plugin-api-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/b84662e33f8f44d33265e964f1329ce5644af35c/kotlin-compiler-embeddable-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/d975091bb224a04b3717505a55875608642cc8d3/kotlin-compiler-embeddable-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/764b45d92a761810b29580aeae2fac3d614f9bf/kotlin-compiler-runner-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/cad5c437ac58f7245673a6c4fd73a656dd259b26/kotlin-compiler-runner-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/2756d002e8d1d1aa0d5a49e7c895b87514083fab/kotlin-annotation-processing-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/9f7312cea58b39ce82368261cd227758df78eb32/kotlin-annotation-processing-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
</list>
</option>
<option name="path" value="$PROJECT_DIR$" />
</ExternalModuleBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="name" value="atbash-cipher" />
<option name="projectBuildClasspath">
<list>
<option value="C:/Gradle/gradle-3.5/lib/ant-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/ant-launcher-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-cli-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-docs-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-installation-beacon-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-jvm-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-launcher-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-logging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-messaging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-open-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-process-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-resources-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-runtime-api-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-script-kotlin-0.8.0.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-tooling-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-ui-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-version-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-wrapper-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/groovy-all-2.4.10.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-announce-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-antlr-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-cache-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-comparison-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-init-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-code-quality-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-composite-builds-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-dependency-management-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-diagnostics-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ear-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ivy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jacoco-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-javascript-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jetty-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-java-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-maven-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-osgi-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-development-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-use-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugins-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-publish-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-reporting-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-s3-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-sftp-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-signing-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-test-kit-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-tooling-api-builders-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-workers-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/ivy-2.2.0.jar" />
<option value="$PROJECT_DIR$/buildSrc/src/main/java" />
<option value="$PROJECT_DIR$/buildSrc/src/main/groovy" />
</list>
</option>
</ExternalProjectBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/test/kotlin/AtbashTest.kt" />
<option value="$PROJECT_DIR$/src/main/kotlin/Atbash.kt" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-16" />
<option name="y" value="-16" />
<option name="width" value="3856" />
<option name="height" value="2092" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="atbash-cipher" type="b2602c69:ProjectViewProjectNode" />
<item name="atbash-cipher" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="reference.settings.project.maven.runner" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../nth-prime" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="JUnit.AtbashTest">
<configuration name="AtbashTest$EncodeTest.test" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="atbash-cipher_test" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="AtbashTest$EncodeTest" />
<option name="METHOD_NAME" value="test" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration name="AtbashTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="atbash-cipher_test" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="AtbashTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Applet" factoryName="Applet">
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<module />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<envs />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="OUTPUT_DIRECTORY" />
<option name="ANNOTATION_TYPE" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
<envs />
<properties />
<listeners />
</configuration>
<configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
</configuration>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="JUnit.AtbashTest$EncodeTest.test" />
<item index="1" class="java.lang.String" itemvalue="JUnit.AtbashTest" />
</list>
<recent_temporary>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="JUnit.AtbashTest" />
<item index="1" class="java.lang.String" itemvalue="JUnit.AtbashTest$EncodeTest.test" />
</list>
</recent_temporary>
</component>
<component name="SbtLocalSettings">
<option name="lastUpdateTimestamp" value="1500477795308" />
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="fa287d79-b1fb-4179-982e-bbed626c0d06" name="Default" comment="" />
<created>1500477791006</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1500477791006</updated>
<workItem from="1500477795115" duration="1710000" />
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="AtbashTest - 2017.07.19 at 19h 31m 43s.xml">
<configuration name="AtbashTest" configurationId="JUnit" />
</history-entry>
<history-entry file="AtbashTest - 2017.07.19 at 19h 31m 56s.xml">
<configuration name="AtbashTest" configurationId="JUnit" />
</history-entry>
<history-entry file="AtbashTest - 2017.07.19 at 19h 32m 11s.xml">
<configuration name="AtbashTest" configurationId="JUnit" />
</history-entry>
<history-entry file="AtbashTest$EncodeTest_test - 2017.07.19 at 19h 28m 42s.xml">
<configuration name="AtbashTest$EncodeTest.test" configurationId="JUnit" />
</history-entry>
<history-entry file="AtbashTest$EncodeTest_test - 2017.07.19 at 19h 30m 22s.xml">
<configuration name="AtbashTest$EncodeTest.test" configurationId="JUnit" />
</history-entry>
<history-entry file="AtbashTest$EncodeTest_test - 2017.07.19 at 19h 31m 06s.xml">
<configuration name="AtbashTest$EncodeTest.test" configurationId="JUnit" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="1710000" />
</component>
<component name="ToolWindowManager">
<frame x="-16" y="-16" width="3872" height="2092" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="SBT" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32944444" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="sbt-shell-toolwindow" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/kotlin/AtbashTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1806">
<caret line="47" column="0" lean-forward="false" selection-start-line="47" selection-start-column="0" selection-end-line="47" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/kotlin/Atbash.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="473">
<caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View file

@ -0,0 +1,37 @@
# Atbash Cipher
Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
The Atbash cipher is a simple substitution cipher that relies on
transposing all the letters in the alphabet such that the resulting
alphabet is backwards. The first letter is replaced with the last
letter, the second with the second-last, and so on.
An Atbash cipher for the Latin alphabet would be as follows:
```plain
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: zyxwvutsrqponmlkjihgfedcba
```
It is a very weak cipher because it only has one possible key, and it is
a simple monoalphabetic substitution cipher. However, this may not have
been an issue in the cipher's time.
Ciphertext is written out in groups of fixed length, the traditional group size
being 5 letters, and punctuation is excluded. This is to make it harder to guess
things based on word boundaries.
## Examples
- Encoding `test` gives `gvhg`
- Decoding `gvhg` gives `test`
- Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
## Source
Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="atbash-cipher" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/out" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View file

@ -0,0 +1,28 @@
buildscript {
ext.kotlin_version = '1.1.1'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
test {
testLogging {
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
}
}

View file

@ -0,0 +1 @@
11001

Binary file not shown.

View file

@ -0,0 +1,54 @@
class Atbash {
companion object {
fun encode(inpString: String): String {
return inpString.filter { it.isLetterOrDigit() }.map { it.atbash() }.joinToString(separator = "").splitIntoFives()
}
fun decode(inpString: String): String {
return inpString.filter { it.isLetterOrDigit() }.map { it.atbash() }.joinToString(separator = "")
}
}
}
fun String.splitIntoFives():String {
var outString = ""
for (i in IntRange(0, this.length-1).step(5)) {
for (j in 0..4) {
outString += this.getOrElse(i + j, { ' ' })
}
outString += " "
}
return outString.trim()
}
fun Char.atbash(): Char{
return when (this.toLowerCase()){
'a' -> 'z'
'b' -> 'y'
'c' -> 'x'
'd' -> 'w'
'e' -> 'v'
'f' -> 'u'
'g' -> 't'
'h' -> 's'
'i' -> 'r'
'j' -> 'q'
'k' -> 'p'
'l' -> 'o'
'm' -> 'n'
'n' -> 'm'
'o' -> 'l'
'p' -> 'k'
'q' -> 'j'
'r' -> 'i'
's' -> 'h'
't' -> 'g'
'u' -> 'f'
'v' -> 'e'
'w' -> 'd'
'x' -> 'c'
'y' -> 'b'
'z' -> 'a'
else -> this.toLowerCase()
}
}

View file

@ -0,0 +1,53 @@
import org.junit.Test
import org.junit.Ignore
import org.junit.experimental.runners.Enclosed
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import kotlin.test.assertEquals
@RunWith(Enclosed::class)
class AtbashTest {
@RunWith(Parameterized::class)
class EncodeTest(val input: String, val expectedOutput: String) {
companion object {
@JvmStatic
@Parameterized.Parameters
fun data() = listOf(
arrayOf("no", "ml"),
arrayOf("yes", "bvh"),
arrayOf("OMG", "lnt"),
arrayOf("mindblowingly", "nrmwy oldrm tob"),
arrayOf("Testing, 1 2 3, testing.", "gvhgr mt123 gvhgr mt"),
arrayOf("Truth is fiction.", "gifgs rhurx grlm"),
arrayOf("The quick brown fox jumps over the lazy dog.", "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")
)
}
@Test
fun test() {
assertEquals(expectedOutput, Atbash.encode(input))
}
}
@RunWith(Parameterized::class)
class DecodeTest(val input: String, val expectedOutput: String) {
companion object {
@JvmStatic
@Parameterized.Parameters
fun data() = listOf(
arrayOf("vcvix rhn", "exercism"),
arrayOf("zmlyh gzxov rhlug vmzhg vkkrm thglm v", "anobstacleisoftenasteppingstone"),
arrayOf("gvhgr mt123 gvhgr mt", "testing123testing")
)
}
@Test
fun test() {
assertEquals(expectedOutput, Atbash.decode(input))
}
}
}

View file

@ -0,0 +1,2 @@
#Wed Jul 19 11:16:38 EDT 2017
gradle.version=3.5

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="collatz-conjecture_main" target="1.8" />
<module name="collatz-conjecture_test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/Gradle/gradle-3.5" />
<option name="gradleJvm" value="1.8" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="useAutoImport" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: junit:junit:4.12">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains:annotations:13.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/5a852a554eb4f9fb93efdffa352b7983ed595e32/kotlin-test-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/4b9a869f86569edea4a07d19b9749ac835fb7207/kotlin-test-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/a1865f59b6f72597452e5bdfefeb14d13bc31c7d/kotlin-test-junit-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/ed59de63c4565c708124caaa4e86562a780f9ba0/kotlin-test-junit-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/collatz-conjecture.iml" filepath="$PROJECT_DIR$/collatz-conjecture.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/collatz-conjecture_main.iml" filepath="$PROJECT_DIR$/.idea/modules/collatz-conjecture_main.iml" group="collatz-conjecture" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/collatz-conjecture_test.iml" filepath="$PROJECT_DIR$/.idea/modules/collatz-conjecture_test.iml" group="collatz-conjecture" />
</modules>
</component>
</project>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="collatz-conjecture:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="collatz-conjecture_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../out/production/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/main">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
</component>
</module>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="collatz-conjecture:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="collatz-conjecture_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/test">
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="collatz-conjecture_main" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1" level="project" />
</component>
<component name="TestModuleProperties" production-module="collatz-conjecture_main" />
</module>

View file

@ -0,0 +1,717 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="91e5a868-ecec-44f6-a5cd-41c8991a482c" name="Default" comment="" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="CollatzCalculatorTest.kt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/test/kotlin/CollatzCalculatorTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="363">
<caret line="36" column="8" lean-forward="false" selection-start-line="36" selection-start-column="8" selection-end-line="36" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CollatzCalculator.kt" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/kotlin/CollatzCalculator.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="3" column="28" lean-forward="false" selection-start-line="3" selection-start-column="28" selection-end-line="3" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Kotlin Class" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>@Ignore\n</find>
</findStrings>
</component>
<component name="GradleLocalSettings">
<option name="myGradleHomes">
<map>
<entry key="$PROJECT_DIR$" value="C:\Gradle\gradle-3.5" />
</map>
</option>
<option name="myGradleVersions">
<map>
<entry key="$PROJECT_DIR$" value="3.5" />
</map>
</option>
<option name="availableProjects">
<map>
<entry>
<key>
<ExternalProjectPojo>
<option name="name" value="collatz-conjecture" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</key>
<value>
<list>
<ExternalProjectPojo>
<option name="name" value="collatz-conjecture" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="availableTasks">
<map>
<entry key="$PROJECT_DIR$">
<value>
<list>
<ExternalTaskPojo>
<option name="description" value="Displays the components produced by root project 'collatz-conjecture'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="components" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects that depend on it." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildDependents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the sub-projects of root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="projects" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="classes" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the dependent components of components in root project 'collatz-conjecture'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependentComponents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all buildscript dependencies declared in root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildEnvironment" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Gradle wrapper files." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="wrapper" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles test classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="testClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Javadoc API documentation for the main source code." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="javadoc" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles a jar archive containing the main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="jar" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the configuration model of root project 'collatz-conjecture'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="model" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyMainKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes main resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the tasks runnable from root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="tasks" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Initializes a new Gradle build." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="init" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyTestKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs the unit tests." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="test" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles main Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'test'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the insight into a specific dependency in root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencyInsight" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs all checks." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="check" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles the outputs of this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="assemble" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Deletes the build directory." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="clean" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles test Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all dependencies declared in root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencies" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes test resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processTestResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays a help message." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="help" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'main'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="build" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects it depends on." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildNeeded" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the properties of root project 'collatz-conjecture'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="properties" />
</ExternalTaskPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="modificationStamps">
<map>
<entry key="$PROJECT_DIR$" value="1500477368174" />
</map>
</option>
<option name="projectBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalProjectBuildClasspathPojo>
<option name="modulesBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalModuleBuildClasspathPojo>
<option name="entries">
<list>
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/e742de8adf25f631b39f74e2d6fd00cd9cdd609e/kotlin-gradle-plugin-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/5e3d99580c70b67a07cd70481943362e4b29d8d3/kotlin-gradle-plugin-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/f2d8698c46d1167ff24b06a840a87d91a02db891/commons-io-2.4-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/67313d715fbf0ea4fd0bdb69217fb77f807a8ce5/commons-lang-2.6-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/ce1edb914c94ebc388f086c6827e8bdeec71ac2/commons-lang-2.6.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/2c0ad82587d187f78c4063fa7867ed3c4dfa54ca/kotlin-android-extensions-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/56cfcc61bc91638ea52d13ce90b565f50be3d6f5/kotlin-android-extensions-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/e48aafb092d4c3ddd6927f38f9f17f7117e1ef47/kotlin-gradle-plugin-api-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/9083de2c98801f1fe058b6280234265269c1cad0/kotlin-gradle-plugin-api-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/b84662e33f8f44d33265e964f1329ce5644af35c/kotlin-compiler-embeddable-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/d975091bb224a04b3717505a55875608642cc8d3/kotlin-compiler-embeddable-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/764b45d92a761810b29580aeae2fac3d614f9bf/kotlin-compiler-runner-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/cad5c437ac58f7245673a6c4fd73a656dd259b26/kotlin-compiler-runner-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/2756d002e8d1d1aa0d5a49e7c895b87514083fab/kotlin-annotation-processing-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/9f7312cea58b39ce82368261cd227758df78eb32/kotlin-annotation-processing-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
</list>
</option>
<option name="path" value="$PROJECT_DIR$" />
</ExternalModuleBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="name" value="collatz-conjecture" />
<option name="projectBuildClasspath">
<list>
<option value="C:/Gradle/gradle-3.5/lib/ant-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/ant-launcher-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-cli-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-docs-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-installation-beacon-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-jvm-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-launcher-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-logging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-messaging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-open-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-process-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-resources-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-runtime-api-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-script-kotlin-0.8.0.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-tooling-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-ui-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-version-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-wrapper-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/groovy-all-2.4.10.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-announce-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-antlr-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-cache-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-comparison-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-init-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-code-quality-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-composite-builds-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-dependency-management-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-diagnostics-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ear-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ivy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jacoco-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-javascript-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jetty-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-java-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-maven-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-osgi-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-development-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-use-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugins-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-publish-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-reporting-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-s3-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-sftp-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-signing-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-test-kit-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-tooling-api-builders-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-workers-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/ivy-2.2.0.jar" />
<option value="$PROJECT_DIR$/buildSrc/src/main/java" />
<option value="$PROJECT_DIR$/buildSrc/src/main/groovy" />
</list>
</option>
</ExternalProjectBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/test/kotlin/CollatzCalculatorTest.kt" />
<option value="$PROJECT_DIR$/src/main/kotlin/CollatzCalculator.kt" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-16" />
<option name="y" value="-16" />
<option name="width" value="3856" />
<option name="height" value="2092" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="collatz-conjecture" type="b2602c69:ProjectViewProjectNode" />
<item name="collatz-conjecture" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="reference.settings.project.maven.runner" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../atbash-cipher" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="JUnit.CollatzCalculatorTest">
<configuration name="CollatzCalculatorTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="collatz-conjecture_test" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="CollatzCalculatorTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Applet" factoryName="Applet">
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<module />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<envs />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="OUTPUT_DIRECTORY" />
<option name="ANNOTATION_TYPE" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
<envs />
<properties />
<listeners />
</configuration>
<configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
</configuration>
<recent_temporary>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="JUnit.CollatzCalculatorTest" />
</list>
</recent_temporary>
</component>
<component name="SbtLocalSettings">
<option name="lastUpdateTimestamp" value="1500477400580" />
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="91e5a868-ecec-44f6-a5cd-41c8991a482c" name="Default" comment="" />
<created>1500477383851</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1500477383851</updated>
<workItem from="1500477388321" duration="404000" />
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="CollatzCalculatorTest - 2017.07.19 at 11h 20m 22s.xml">
<configuration name="CollatzCalculatorTest" configurationId="JUnit" />
</history-entry>
<history-entry file="CollatzCalculatorTest - 2017.07.19 at 11h 20m 46s.xml">
<configuration name="CollatzCalculatorTest" configurationId="JUnit" />
</history-entry>
<history-entry file="CollatzCalculatorTest - 2017.07.19 at 11h 21m 00s.xml">
<configuration name="CollatzCalculatorTest" configurationId="JUnit" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="404000" />
</component>
<component name="ToolWindowManager">
<frame x="-16" y="-16" width="3872" height="2092" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="SBT" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="sbt-shell-toolwindow" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/kotlin/CollatzCalculatorTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="363">
<caret line="36" column="8" lean-forward="false" selection-start-line="36" selection-start-column="8" selection-end-line="36" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/kotlin/CollatzCalculator.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="3" column="28" lean-forward="false" selection-start-line="3" selection-start-column="28" selection-end-line="3" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

View file

@ -0,0 +1,36 @@
# Collatz Conjecture
The Collatz Conjecture or 3x+1 problem can be summarized as follows:
Take any positive integer n. If n is even, divide n by 2 to get n / 2. If n is
odd, multiply n by 3 and add 1 to get 3n + 1. Repeat the process indefinitely.
The conjecture states that no matter which number you start with, you will
always reach 1 eventually.
Given a number n, return the number of steps required to reach 1.
## Examples
Starting with n = 12, the steps would be as follows:
0. 12
1. 6
2. 3
3. 10
4. 5
5. 16
6. 8
7. 4
8. 2
9. 1
Resulting in 9 steps. So for input n = 12, the return value would be 9.
## Source
An unsolved problem in mathematics named after mathematician Lothar Collatz [https://en.wikipedia.org/wiki/3x_%2B_1_problem](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

View file

@ -0,0 +1,28 @@
buildscript {
ext.kotlin_version = '1.1.1'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
test {
testLogging {
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
}
}

View file

@ -0,0 +1 @@
11001

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="collatz-conjecture" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/out" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View file

@ -0,0 +1,17 @@
class CollatzCalculator {
companion object {
fun computeStepCount(inpInt: Int): Int{
require(inpInt > 0) {"Only natural numbers are allowed"}
var temp = inpInt
var steps: Int = 0
while (temp != 1){
if (temp %2 == 0) {
temp /= 2
}
else temp = temp*3 + 1
steps++
}
return steps
}
}
}

View file

@ -0,0 +1,52 @@
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
import kotlin.test.assertEquals
/*
* version: 1.1.0
*/
class CollatzCalculatorTest {
@Rule
@JvmField
var expectedException: ExpectedException = ExpectedException.none()
@Test
fun testZeroStepsRequiredWhenStartingFrom1() {
assertEquals(0, CollatzCalculator.computeStepCount(1))
}
@Test
fun testCorrectNumberOfStepsWhenAllStepsAreDivisions() {
assertEquals(4, CollatzCalculator.computeStepCount(16))
}
@Test
fun testCorrectNumberOfStepsWhenBothStepTypesAreNeeded() {
assertEquals(9, CollatzCalculator.computeStepCount(12))
}
@Test
fun testAVeryLargeInput() {
assertEquals(152, CollatzCalculator.computeStepCount(1000000))
}
@Test
fun testZeroIsConsideredInvalidInput() {
expectedException.expect(IllegalArgumentException::class.java)
expectedException.expectMessage("Only natural numbers are allowed")
CollatzCalculator.computeStepCount(0)
}
@Test
fun testNegativeIntegerIsConsideredInvalidInput() {
expectedException.expect(IllegalArgumentException::class.java)
expectedException.expectMessage("Only natural numbers are allowed")
CollatzCalculator.computeStepCount(-15)
}
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,2 @@
#Tue Jul 18 17:57:08 EDT 2017
gradle.version=3.5

View file

@ -0,0 +1 @@


9
kotlin/grains/.idea/compiler.xml generated Normal file
View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="grains_main" target="1.8" />
<module name="grains_test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

19
kotlin/grains/.idea/gradle.xml generated Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/Gradle/gradle-3.5" />
<option name="gradleJvm" value="1.8" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="useAutoImport" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: junit:junit:4.12">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains:annotations:13.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/5a852a554eb4f9fb93efdffa352b7983ed595e32/kotlin-test-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.1/4b9a869f86569edea4a07d19b9749ac835fb7207/kotlin-test-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View file

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/a1865f59b6f72597452e5bdfefeb14d13bc31c7d/kotlin-test-junit-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.1/ed59de63c4565c708124caaa4e86562a780f9ba0/kotlin-test-junit-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

6
kotlin/grains/.idea/misc.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

10
kotlin/grains/.idea/modules.xml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/grains.iml" filepath="$PROJECT_DIR$/grains.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/grains_main.iml" filepath="$PROJECT_DIR$/.idea/modules/grains_main.iml" group="grains" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/grains_test.iml" filepath="$PROJECT_DIR$/.idea/modules/grains_test.iml" group="grains" />
</modules>
</component>
</project>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="grains:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="grains_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../out/production/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/main">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
</component>
</module>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="grains:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="grains_main" />
<option name="jvmTarget" value="1.6" />
<option name="addCompilerBuiltIns" value="true" />
<option name="loadBuiltInsFromDependencies" value="true" />
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
<option name="pluginOptions">
<array />
</option>
<option name="pluginClasspaths">
<array />
</option>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../src/test">
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="grains_main" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.1.1" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-test:1.1.1" level="project" />
</component>
<component name="TestModuleProperties" production-module="grains_main" />
</module>

720
kotlin/grains/.idea/workspace.xml generated Normal file
View file

@ -0,0 +1,720 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="6f95deb7-4894-41b3-b89f-8f8ef100d91c" name="Default" comment="" />
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="BoardTest.kt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/test/kotlin/BoardTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="79" column="95" lean-forward="false" selection-start-line="79" selection-start-column="41" selection-end-line="79" selection-end-column="95" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Board.kt" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/kotlin/Board.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="688">
<caret line="16" column="1" lean-forward="true" selection-start-line="16" selection-start-column="1" selection-end-line="16" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Kotlin Object" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>@ignore</find>
</findStrings>
</component>
<component name="GradleLocalSettings">
<option name="myGradleHomes">
<map>
<entry key="$PROJECT_DIR$" value="C:\Gradle\gradle-3.5" />
</map>
</option>
<option name="myGradleVersions">
<map>
<entry key="$PROJECT_DIR$" value="3.5" />
</map>
</option>
<option name="availableProjects">
<map>
<entry>
<key>
<ExternalProjectPojo>
<option name="name" value="grains" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</key>
<value>
<list>
<ExternalProjectPojo>
<option name="name" value="grains" />
<option name="path" value="$PROJECT_DIR$" />
</ExternalProjectPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="availableTasks">
<map>
<entry key="$PROJECT_DIR$">
<value>
<list>
<ExternalTaskPojo>
<option name="description" value="Displays the components produced by root project 'grains'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="components" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects that depend on it." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildDependents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the sub-projects of root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="projects" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="classes" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the dependent components of components in root project 'grains'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependentComponents" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all buildscript dependencies declared in root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildEnvironment" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Gradle wrapper files." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="wrapper" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles test classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="testClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Generates Javadoc API documentation for the main source code." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="javadoc" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles a jar archive containing the main classes." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="jar" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the configuration model of root project 'grains'. [incubating]" />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="model" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyMainKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes main resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the tasks runnable from root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="tasks" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Initializes a new Gradle build." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="init" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="copyTestKotlinClasses" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs the unit tests." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="test" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles main Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'test'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the insight into a specific dependency in root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencyInsight" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Runs all checks." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="check" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles the outputs of this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="assemble" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Deletes the build directory." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="clean" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles test Java source." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileTestJava" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays all dependencies declared in root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="dependencies" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Processes test resources." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="processTestResources" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays a help message." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="help" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Compiles the source set 'main'.kotlin." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="compileKotlin" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="build" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Assembles and tests this project and all projects it depends on." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="buildNeeded" />
</ExternalTaskPojo>
<ExternalTaskPojo>
<option name="description" value="Displays the properties of root project 'grains'." />
<option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
<option name="name" value="properties" />
</ExternalTaskPojo>
</list>
</value>
</entry>
</map>
</option>
<option name="modificationStamps">
<map>
<entry key="$PROJECT_DIR$" value="1500414756221" />
</map>
</option>
<option name="projectBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalProjectBuildClasspathPojo>
<option name="modulesBuildClasspath">
<map>
<entry key="$PROJECT_DIR$">
<value>
<ExternalModuleBuildClasspathPojo>
<option name="entries">
<list>
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/e742de8adf25f631b39f74e2d6fd00cd9cdd609e/kotlin-gradle-plugin-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.1.1/5e3d99580c70b67a07cd70481943362e4b29d8d3/kotlin-gradle-plugin-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/f2d8698c46d1167ff24b06a840a87d91a02db891/commons-io-2.4-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/67313d715fbf0ea4fd0bdb69217fb77f807a8ce5/commons-lang-2.6-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/ce1edb914c94ebc388f086c6827e8bdeec71ac2/commons-lang-2.6.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/a287944d92875a1f3c2161e5cddaede7720913d1/kotlin-stdlib-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/2c0ad82587d187f78c4063fa7867ed3c4dfa54ca/kotlin-android-extensions-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.1.1/56cfcc61bc91638ea52d13ce90b565f50be3d6f5/kotlin-android-extensions-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/e48aafb092d4c3ddd6927f38f9f17f7117e1ef47/kotlin-gradle-plugin-api-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/1.1.1/9083de2c98801f1fe058b6280234265269c1cad0/kotlin-gradle-plugin-api-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/b84662e33f8f44d33265e964f1329ce5644af35c/kotlin-compiler-embeddable-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.1.1/d975091bb224a04b3717505a55875608642cc8d3/kotlin-compiler-embeddable-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/764b45d92a761810b29580aeae2fac3d614f9bf/kotlin-compiler-runner-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/1.1.1/cad5c437ac58f7245673a6c4fd73a656dd259b26/kotlin-compiler-runner-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/2756d002e8d1d1aa0d5a49e7c895b87514083fab/kotlin-annotation-processing-1.1.1-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-annotation-processing/1.1.1/9f7312cea58b39ce82368261cd227758df78eb32/kotlin-annotation-processing-1.1.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
</list>
</option>
<option name="path" value="$PROJECT_DIR$" />
</ExternalModuleBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="name" value="grains" />
<option name="projectBuildClasspath">
<list>
<option value="C:/Gradle/gradle-3.5/lib/ant-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/ant-launcher-1.9.6.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-base-services-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-cli-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-docs-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-installation-beacon-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-jvm-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-launcher-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-logging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-messaging-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-core-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-model-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-open-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-process-services-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-resources-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-runtime-api-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-script-kotlin-0.8.0.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-tooling-api-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-ui-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-version-info-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/gradle-wrapper-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/groovy-all-2.4.10.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-announce-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-antlr-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-cache-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-comparison-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-build-init-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-code-quality-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-composite-builds-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-dependency-management-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-diagnostics-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ear-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ide-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-ivy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jacoco-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-javascript-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-jetty-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-groovy-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-java-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-language-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-maven-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-osgi-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-platform-play-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-development-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugin-use-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-plugins-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-publish-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-reporting-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-http-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-s3-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-resources-sftp-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-scala-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-signing-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-test-kit-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-base-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-jvm-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-testing-native-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-tooling-api-builders-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/gradle-workers-3.5.jar" />
<option value="C:/Gradle/gradle-3.5/lib/plugins/ivy-2.2.0.jar" />
<option value="$PROJECT_DIR$/buildSrc/src/main/java" />
<option value="$PROJECT_DIR$/buildSrc/src/main/groovy" />
</list>
</option>
</ExternalProjectBuildClasspathPojo>
</value>
</entry>
</map>
</option>
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/test/kotlin/BoardTest.kt" />
<option value="$PROJECT_DIR$/src/main/kotlin/Board.kt" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-16" />
<option name="y" value="-16" />
<option name="width" value="3856" />
<option name="height" value="2092" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
</path>
<path>
<item name="grains" type="b2602c69:ProjectViewProjectNode" />
<item name="grains" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="kotlin" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="reference.settings.project.maven.runner" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../sieve" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="JUnit.BoardTest">
<configuration name="BoardTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="grains_test" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="BoardTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Applet" factoryName="Applet">
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<module />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<envs />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="OUTPUT_DIRECTORY" />
<option name="ANNOTATION_TYPE" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
<envs />
<properties />
<listeners />
</configuration>
<configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
</configuration>
<recent_temporary>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="JUnit.BoardTest" />
</list>
</recent_temporary>
</component>
<component name="SbtLocalSettings">
<option name="lastUpdateTimestamp" value="1500415030490" />
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="6f95deb7-4894-41b3-b89f-8f8ef100d91c" name="Default" comment="" />
<created>1500415016510</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1500415016510</updated>
<workItem from="1500415021876" duration="457000" />
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="BoardTest - 2017.07.18 at 18h 01m 40s.xml">
<configuration name="BoardTest" configurationId="JUnit" />
</history-entry>
<history-entry file="BoardTest - 2017.07.18 at 18h 01m 53s.xml">
<configuration name="BoardTest" configurationId="JUnit" />
</history-entry>
<history-entry file="BoardTest - 2017.07.18 at 18h 02m 21s.xml">
<configuration name="BoardTest" configurationId="JUnit" />
</history-entry>
<history-entry file="BoardTest - 2017.07.18 at 18h 02m 59s.xml">
<configuration name="BoardTest" configurationId="JUnit" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="457000" />
</component>
<component name="ToolWindowManager">
<frame x="-16" y="-16" width="3872" height="2092" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="SBT" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="sbt-shell-toolwindow" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/kotlin/BoardTest.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="79" column="95" lean-forward="false" selection-start-line="79" selection-start-column="41" selection-end-line="79" selection-end-column="95" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/kotlin/Board.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="688">
<caret line="16" column="1" lean-forward="true" selection-start-line="16" selection-start-column="1" selection-end-line="16" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

36
kotlin/grains/README.md Normal file
View file

@ -0,0 +1,36 @@
# Grains
Calculate the number of grains of wheat on a chessboard given that the number
on each square doubles.
There once was a wise servant who saved the life of a prince. The king
promised to pay whatever the servant could dream up. Knowing that the
king loved chess, the servant told the king he would like to have grains
of wheat. One grain on the first square of a chess board. Two grains on
the next. Four on the third, and so on.
There are 64 squares on a chessboard.
Write code that shows:
- how many grains were on each square, and
- the total number of grains
## For bonus points
Did you get the tests passing and the code clean? If you want to, these
are some additional things you could try:
- Optimize for speed.
- Optimize for readability.
Then please share your thoughts in a comment on the submission. Did this
experiment make the code better? Worse? Did you learn anything from it?
## Source
JavaRanch Cattle Drive, exercise 6 [http://www.javaranch.com/grains.jsp](http://www.javaranch.com/grains.jsp)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

View file

@ -0,0 +1,28 @@
buildscript {
ext.kotlin_version = '1.1.1'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
test {
testLogging {
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
}
}

View file

@ -0,0 +1 @@
11001

13
kotlin/grains/grains.iml Normal file
View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="grains" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/out" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

Binary file not shown.

Binary file not shown.

View file

View file

@ -0,0 +1,17 @@
import java.math.BigInteger
object Board {
fun getGrainCountForSquare(square: Int):BigInteger{
require(square < 65 && square > 0) {"Only integers between 1 and 64 (inclusive) are allowed"}
return BigInteger("2").pow(square - 1)
}
fun getTotalGrainCount(): BigInteger{
var returnVal: BigInteger = BigInteger.ZERO
for (i in 1..64){
returnVal += getGrainCountForSquare(i)
}
return returnVal
}
}

View file

@ -0,0 +1,91 @@
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
import java.math.BigInteger
import kotlin.test.assertEquals
/*
* version: 1.0.0
*/
class BoardTest {
@Rule
@JvmField
var expectedException: ExpectedException = ExpectedException.none()
@Test
fun testSquare1ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.ONE, Board.getGrainCountForSquare(1))
}
@Test
fun testSquare2ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.valueOf(2), Board.getGrainCountForSquare(2))
}
@Test
fun testSquare3ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.valueOf(4), Board.getGrainCountForSquare(3))
}
@Test
fun testSquare4ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.valueOf(8), Board.getGrainCountForSquare(4))
}
@Test
fun testSquare16ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.valueOf(32768), Board.getGrainCountForSquare(16))
}
@Test
fun testSquare32ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger.valueOf(2147483648), Board.getGrainCountForSquare(32))
}
@Test
fun testSquare64ContainsCorrectNumberOfGrains() {
assertEquals(BigInteger("9223372036854775808"), Board.getGrainCountForSquare(64))
}
@Test
fun testSquare0IsInvalid() {
expectedException.expect(IllegalArgumentException::class.java)
expectedException.expectMessage("Only integers between 1 and 64 (inclusive) are allowed")
Board.getGrainCountForSquare(0)
}
@Test
fun testNegativeSquareIsInvalid() {
expectedException.expect(IllegalArgumentException::class.java)
expectedException.expectMessage("Only integers between 1 and 64 (inclusive) are allowed")
Board.getGrainCountForSquare(-1)
}
@Test
fun testSquareGreaterThan64IsInvalid() {
expectedException.expect(IllegalArgumentException::class.java)
expectedException.expectMessage("Only integers between 1 and 64 (inclusive) are allowed")
Board.getGrainCountForSquare(65)
}
@Test
fun testBoardContainsCorrectNumberOfGrains() {
assertEquals(BigInteger("18446744073709551615"), Board.getTotalGrainCount())
}
}

View file

@ -0,0 +1,50 @@
----
# Quick Start Guide
This guide picks-up where [Running the Tests (in Kotlin)](http://exercism.io/languages/kotlin/tests)
left off. If you haven't reviewed those instructions, do so now.
Need more information? A **step-by-step tutorial** is available in this directory at TUTORIAL.md or you can read
the [HTML version](https://github.com/exercism/kotlin/blob/master/exercises/hello-world/TUTORIAL.md).
The following instructions work equally well on Windows, Mac OS X and Linux.
## Solve "Hello World"
Try writing a solution that passes one test at a time, running Gradle each time:
```
$ gradle test
```
## Iterate through the tests
After your first test passes, remove the `@Ignore` from the next test, and iterate on your solution,
testing after each change.
## All the tests pass? Submit your solution!
With a working solution that we've reviewed, we're ready to submit it to
exercism.io.
```
$ exercism submit src/main/kotlin/HelloWorld.kt
```
## Next Steps
From here, there are a number of paths you can take.
1. Move on to the next exercise
2. Review (and comment on) others' submissions to this exercise
3. Submit another iteration
4. Contribute to Exercism
We sincerely hope you learn and enjoy being part of this community. If at any time you need assistance
do not hesitate to ask for help:
http://exercism.io/languages/kotlin/help
Cheers!

View file

@ -0,0 +1,23 @@
# Hello World
The classical introductory exercise. Just say "Hello, World!".
["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
the traditional first program for beginning programming in a new language
or environment.
The objectives are simple:
- Write a function that returns the string "Hello, World!".
- Run the test suite and make sure that it succeeds.
- Submit your solution and check it at the website.
If everything goes well, you will be ready to fetch your first real exercise.
## Source
This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

View file

@ -0,0 +1,692 @@
NOTE: You can also view the HTML version of this file here:
https://github.com/exercism/kotlin/blob/master/exercises/hello-world/TUTORIAL.md
* [Solving "Hello, World!"](#solving-hello-world)
* [Reading Gradle output](#reading-gradle-output)
* [Fixing the first failing test](#fixing-the-first-failing-test)
* [Enabling and fixing the second test](#enabling-and-fixing-the-second-test)
* [Enabling and fixing the third test](#enabling-and-fixing-the-third-test)
* [Enabling the last test](#enabling-the-last-test)
* [Refactoring](#refactoring)
* [Submitting your first iteration](#submitting-your-first-iteration)
* [Next Steps](#next-steps)
* [Review (and comment on) others' submissions to this exercise](#review-and-comment-on-others-submissions-to-this-exercise)
* [Extend an exercise](#extend-an-exercise)
* [Contribute to Exercism](#contribute-to-exercism)
----
# Solving "Hello, World!"
Welcome to the first exercise on the Kotlin track!
This is a step-by-step guide to solving this exercise.
Each exercise comes with a set of tests. The first pass through the
exercise is about getting all of the tests to pass, one at a time.
If you have not installed the Java Development Kit and Gradle, you must do
so now. For help with this, see: http://exercism.io/languages/kotlin/installing
----
This guide picks-up where [Running the Tests (in Kotlin)](http://exercism.io/languages/kotlin/tests)
left off. If you haven't reviewed those instructions, do so now.
The following instructions work equally well on Windows, Mac OS X and Linux.
## Reading Gradle output
Use Gradle to run the tests:
```
$ gradle test
```
This command does a lot and displays a bunch of stuff. Let's break it down...
```
:compileKotlin
w: /Users/jtigger/exercism/exercises/kotlin/hello-world/src/main/kotlin/HelloWorld.kt: (1, 11): Parameter 'name' is never used
:compileJava UP-TO-DATE
:copyMainKotlinClasses
:processResources UP-TO-DATE
:classes UP-TO-DATE
```
Each line that begins with a colon (like `:compileKotlin`) is Gradle telling
us that it's starting that task. The first five tasks are about compiling
the source code of our *solution*. We've done you a favor and included just
enough code for the solution that it compiles.
When a task is successful, it generally does not output anything. This is
why `:copyMainKotlinClasses` does not produce any additional output.
A task may succeed but warn of a potential problem. This is what we see from
`:compileKotlin`. The Kotlin compiler tells us that on line 1, 11 characters in
of the `HelloWorld.kt` file, there is a parameter called `name` that was
declared but never used. Usually, warnings _are_ helpful and should be heeded.
We'll address this warning soon enough, but we're okay for now.
The next five tasks are about compiling source code of the *tests*.
```
:compileTestKotlin
:compileTestJava UP-TO-DATE
:copyTestKotlinClasses
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
```
... with both sets of source code successfully compiled, Gradle turns to
running the task you asked it to: executing the tests against the solution.
```
:test
HelloWorldTest > helloSampleName SKIPPED
HelloWorldTest > helloBlankName SKIPPED
HelloWorldTest > helloNoName FAILED
org.junit.ComparisonFailure: expected:<[Hello, World!]> but was:<[]>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at HelloWorldTest.helloNoName(HelloWorldTest.kt:10)
HelloWorldTest > helloAnotherSampleName SKIPPED
4 tests completed, 1 failed, 3 skipped
:test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///Users/jtigger/exercism/exercises/kotlin/hello-world/build/reports/tests/index.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 7.473 secs
```
Seeing the word "fail" NINE TIMES might give you the impression you've done
something horribly wrong! You haven't. It's a whole lot of noise over
a single test not passing.
Let's focus in on the important bits:
```
HelloWorldTest > helloNoName FAILED
org.junit.ComparisonFailure: expected:<[Hello, World!]> but was:<[]>
```
...is read: "Within the test class named `HelloWorldTest`, the test method
`helloNoName` did not pass because the solution did not satisfy an
assertion. Apparently, we expected to see the string 'Hello, World!' but
a blank string was returned instead.
The last line of the stack trace tells us exactly where this unsatisfied
assertion lives:
```
at HelloWorldTest.helloNoName(HelloWorldTest.kt:10)
```
Looks like the scene of the crime is on line 10 in the test file.
Knowing these two facts,
1. the return value was not what was expected, and
2. the failure was on line 10 of the test,
we can turn this failure into success.
## Fixing the first failing test
In your favorite text editor, open `src/test/kotlin/HelloWorldTest.kt`
and go to line 10.
```kotlin
assertEquals("Hello, World!", hello(""));
```
The test is expecting that `hello()`, when given an empty string (`""`),
returns "Hello, World!". Instead, `hello()` is returning `""`.
Let's fix that.
Open `src/main/kotlin/HelloWorld.kt`.
```kotlin
fun hello(name: String = ""): String {
return ""
}
```
Let's change that to return the expected string:
```kotlin
fun hello(name: String = ""): String {
return "Hello, World!"
}
```
Save the file and run the tests again:
```
$ gradle test
:compileKotlin
w: /Users/jtigger/exercism/exercises/kotlin/hello-world/src/main/kotlin/HelloWorld.kt: (1, 11): Parameter 'name' is never used
:compileJava UP-TO-DATE
:copyMainKotlinClasses
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestKotlin
:compileTestJava UP-TO-DATE
:copyTestKotlinClasses UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
HelloWorldTest > helloSampleName SKIPPED
HelloWorldTest > helloBlankName SKIPPED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName SKIPPED
BUILD SUCCESSFUL
Total time: 7.318 secs
```
"BUILD SUCCESSFUL"! Woohoo! :) You can see that `helloNoName()` test is
now passing.
We still see the warning about `name` not being used; we'll get to that
next.
With one win under our belt, we can turn our focus to some other messages
that we've been ignoring: the lines ending in "`SKIPPED`".
Each test suite contains a series of tests, all of which have been marked
to be skipped/ignored except the first one. We did this to help you focus
on getting one test running at a time.
Let's tackle the next test...
## Enabling and fixing the second test
Right now, that second test is being skipped/ignored. Let's enable it.
(Re)open `src/test/kotlin/HelloWorldTest.kt` and find the second test:
```kotlin
@Test
@Ignore
fun helloSampleName() {
assertEquals("Hello, Alice!", hello("Alice"))
}
```
When the JUnit test runner sees that `@Ignore` annotation on the test
method, it knows to skip over that test. Remove that line:
```kotlin
@Test
fun helloSampleName() {
assertEquals("Hello, Alice!", hello("Alice"))
}
```
Now, when you run the tests, both tests run:
```
$ gradle test
:test
HelloWorldTest > helloSampleName FAILED
org.junit.ComparisonFailure: expected:<Hello, [Alice]!> but was:<Hello, [World]!>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at HelloWorldTest.helloSampleName(HelloWorldTest.kt:15)
HelloWorldTest > helloBlankName SKIPPED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName SKIPPED
4 tests completed, 1 failed, 2 skipped
```
The first test, `helloNoName()` continues to pass. We see that
`helloSampleName` -- the test we just un-`@Ignore`'d -- is now running and
failing. Yay, failing test! In fact, the "failure" message is just
describing the difference between what the program does now and what it
should do for us to call it "done."
Right now, we've hardcoded the greeting. Enabling this second test has
unleashed a new expectation: that our program incorporate a name given
into that greeting. When given the name "`Alice`", that's who should be
greeted instead of "`World`".
(Re)open `src/main/kotlin/HelloWorld.kt`.
```kotlin
fun hello(name: String = ""): String {
return "Hello, World!"
}
```
While `hello()` does accept a reference to a string named `name`, it is not
using it in the output. Let's change that:
```kotlin
fun hello(name: String = ""): String {
return "Hello, $name!"
}
```
_(Kotlin allows you to embed expressions within strings, a feature known as
string interpolation. For more about this feature, see
https://kotlinlang.org/docs/reference/basic-types.html#string-templates )_
... and rerun the tests ...
```
$ gradle test
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName SKIPPED
HelloWorldTest > helloNoName FAILED
org.junit.ComparisonFailure: expected:<Hello, [World]!> but was:<Hello, []!>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at HelloWorldTest.helloNoName(HelloWorldTest.kt:10)
HelloWorldTest > helloAnotherSampleName SKIPPED
4 tests completed, 1 failed, 2 skipped
```
Wait... didn't we just fix the test? Why is it failing? Take a closer look...
In fact, `helloSampleName()` *is* passing. It's just that at the same time,
we just inadvertently broke that first test: `helloNoName()`.
This is one tiny example of the benefit of maintaining a test suite: if we
use them to drive out our code, the second we break the program the tests
say so. Since we saw them passing just *before* our latest change,
whatever we *just* did most likely cause that regression.
Our latest change was making the greeting dependent on the name given. If
no name is given, our function defaults to an empty string. The intent is
that when `hello()` is called on no one in particular, our function greets
the whole world. Sound like a job for a default value!
`src/main/kotlin/HelloWorld.kt`:
```kotlin
fun hello(name: String = "World"): String {
return "Hello, $name!"
}
```
... and re-run the tests ...
```
$ gradle test
:compileKotlin
:compileJava UP-TO-DATE
:copyMainKotlinClasses
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestKotlin
:compileTestJava UP-TO-DATE
:copyTestKotlinClasses
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName SKIPPED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName SKIPPED
BUILD SUCCESSFUL
```
Excellent! Not only are both our tests passing, but that pesky warning
about not using `name` has faded into the distant past. We're now
(at least) three-fourth the way done. Just two more tests to go...
## Enabling and fixing the third test
(Re)open `src/test/kotlin/HelloWorldTest.kt` and find the penultimate test:
```kotlin
@Test
@Ignore
fun helloBlankName() {
assertEquals("Hello, World!", hello(" "))
}
```
In this test, we're trying to be tricky. It's one thing to omit a
parameter completely; it's a whole other situation when we provide a blank
string for a name. This test is telling us that we'd like to treat these
cases the same way.
... and remove it's `@Ignore` to enable it ...
```kotlin
@Test
fun helloBlankName() {
assertEquals("Hello, World!", hello(" "))
}
```
... and re-run the tests ...
```
$ gradle test
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName FAILED
org.junit.ComparisonFailure: expected:<Hello, [World]!> but was:<Hello, [ ]!>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at HelloWorldTest.helloBlankName(HelloWorldTest.kt:20)
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName SKIPPED
4 tests completed, 1 failed, 1 skipped
```
Since `" "` is an actual value, Kotlin does _not_ substitute in the
default value.
(Re)open `src/main/kotlin/HelloWorld.kt`.
```kotlin
fun hello(name: String = "World"): String {
return "Hello, $name!"
}
```
One way to handle this case is to check to see if `name` is blank. Let's
do that:
```kotlin
fun hello(name: String = "World"): String {
return "Hello, ${if (name.isBlank()) "World" else name}!"
}
```
As you can see, string templates can contain not just references to
variables, but entire expressions! This is appropriate in a case like this
where we want to apply a simple condition to a value.
... and rerun the tests ...
```
$ gradle test
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName PASSED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName SKIPPED
BUILD SUCCESSFUL
```
We're almost there (perhaps closer than you think)! Just _one_ more test
to pass before we have a solution we can have real confidence in.
## Enabling the last test
(Re)open `src/test/kotlin/HelloWorldTest.kt` and find the last test:
```kotlin
@Test
@Ignore
fun helloAnotherSampleName() {
assertEquals("Hello, Bob!", hello("Bob"))
}
```
... and pop-off that `@Ignore` ...
```kotlin
@Test
fun helloAnotherSampleName() {
assertEquals("Hello, Bob!", hello("Bob"))
}
```
... then rerun the tests ...
```
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName PASSED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName PASSED
BUILD SUCCESSFUL
```
Oh, hello! Turns out, the solution we put into place didn't just apply for
"`Alice`" but for "`Bob`" equally well. In this case, the test succeeded
with no additional code on our part.
Congratulations!
## Refactoring
Now that you've got all the tests passing, you might consider whether
the code is in the most readable/maintainable/efficient shape. What makes
for "good" design of software is a big topic. The pursuit of it underlies
much of what makes up the more valuable conversations on Exercism.
Kotlin is such a concise language and this exercise is so small, there is
not much room for us to make adjustments. Most would leave this code, as
is.
That said, we've taken such pains to illustrate two core parts of the
Test-Driven Development approach (i.e. "red", "green"), we'd be remiss if
we skipped the all important final part: "refactor".
More on TDD at http://www.jamesshore.com/Blog/Red-Green-Refactor.html.
The core responsibility of `hello()` is to produce a personalized greeting.
_How_ we determine whether or not a name is given (i.e. `name` is
effectively an empty string) is a lower-level detail.
```kotlin
fun hello(name: String = "World"): String {
return "Hello, ${if (name.isBlank()) "World" else name}!"
}
```
How would things read if we extracted that detail into a separate method?
```kotlin
fun hello(name: String = ""): String {
return "Hello, ${whom(name)}!"
}
private fun whom(name: String):String {
return if(name.isBlank()) "World" else name;
}
```
By extracting that logic into the `whom()` method, we've added a little
abstraction to our program — it's not as literal as it was before. Yet,
it allows us to defer _needing_ to understand _how_ the recipient of the
greeting is determined.
If we can assume that `whom()` just works, we don't have to
downshift in our head to those details. Instead, we can remain at the same
level of thinking: what's the greeting?
_(Yes, this is considerable more lines of code; again, not a move we'd likely
make typically. The takeaway is this: when you are "done" with an exercise
ask yourself, "can I adjust the shape of this code to better tell the
story of what's going on through its shape?")_
We made a bunch of changes, let's make sure we didn't break the program!
```
$ gradle test
:compileKotlin
:compileJava UP-TO-DATE
:copyMainKotlinClasses
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestKotlin
:compileTestJava UP-TO-DATE
:copyTestKotlinClasses UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
HelloWorldTest > helloSampleName PASSED
HelloWorldTest > helloBlankName PASSED
HelloWorldTest > helloNoName PASSED
HelloWorldTest > helloAnotherSampleName PASSED
BUILD SUCCESSFUL
```
This illustrates another benefit of writing tests: you can make significant
changes to the structure of the program and very quickly restore your
confidence that the program still works. These tests are a far cry from a
"proof" of correctness, but well-written tests do a much better job of
(very quickly) giving us evidence that it is. Without them, we manually
run the program with different inputs and/or inspecting the code
line-by-line — time-consuming and error prone.
# Submitting your first iteration
With a working solution that we've reviewed, we're ready to submit it to
exercism.io.
```
$ exercism submit src/main/kotlin/HelloWorld.kt
```
# Next Steps
From here, there are a number of paths you can take.
## Move on to the next exercise
There are many more exercises you can practice with. Grab the next one!
```
$ exercism fetch kotlin
```
## Review (and comment on) others' submissions to this exercise
The heart of Exercism is the conversations about coding
practices. It's definitely fun to practice, but engaging with others
both in their attempts and your own is how you get feedback. That feedback
can help point out what you're doing well and where you might need to
improve.
Some submissions will be nearly identical to yours; others will be
completely different. Seeing both kinds can be instructive and interesting.
Note that you can only view submissions of others for exercises you have
completed yourself. This enriches the experience of reading others' code
because you'll have your own experience of trying to solve the problem.
Here's an up-to-date list of submissions on the Kotlin track:
http://exercism.io/tracks/kotlin/exercises
## Submit another iteration
You are also encouraged to consider additional "requirements" on a given
exercise.
For example, you could add a test or two that requires that the greeting
use the capitalized form on the person's name, regardless of the case they
used.
In that situation, you'd:
1. add a new test setting up that new expectation,
2. implement that in the code (the same process we just went through
together, above).
3. review your code for readability and refactor as you see fit.
Exercism practitioners who "play" with each exercise — over trying to go as
fast as they can through the stream of exercises — report deep rewards.
## Contribute to Exercism
The entire of Exercism is Open Source and is the labor of love for more
than 100 maintainers and many more contributors.
A starting point to jumping in can be found here:
https://github.com/exercism/problem-specifications/blob/master/CONTRIBUTING.md
----
Regardless of what you decide to do next, we sincerely hope you learn
and enjoy being part of this community. If at any time you need assistance
do not hesitate to ask for help:
http://exercism.io/languages/kotlin/help
Cheers!

View file

@ -0,0 +1,28 @@
buildscript {
ext.kotlin_version = '1.1.1'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
test {
testLogging {
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
}
}

View file

@ -0,0 +1,7 @@
fun hello(name: String = ""): String {
val greeting = name.trim();
if (greeting == "") {
return "Hello, World!"
}
else return "Hello, " + greeting + "!"
}

View file

@ -0,0 +1,30 @@
import org.junit.Ignore
import org.junit.Test
import org.junit.Assert.assertEquals
class HelloWorldTest {
@Test
fun helloNoName() {
assertEquals("Hello, World!", hello())
}
@Test
@Ignore
fun helloSampleName() {
assertEquals("Hello, Alice!", hello("Alice"))
}
@Test
@Ignore
fun helloBlankName() {
assertEquals("Hello, World!", hello(" "))
}
@Test
@Ignore
fun helloAnotherSampleName() {
assertEquals("Hello, Bob!", hello("Bob"))
}
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,2 @@
#Mon Jul 17 15:52:28 EDT 2017
gradle.version=3.5

View file

@ -0,0 +1 @@


Some files were not shown because too many files have changed in this diff Show more