diff --git a/kotlin/bob/.gradle/3.5/file-changes/last-build.bin b/kotlin/bob/.gradle/3.5/file-changes/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/kotlin/bob/.gradle/3.5/file-changes/last-build.bin differ
diff --git a/kotlin/bob/.gradle/3.5/taskHistory/taskHistory.lock b/kotlin/bob/.gradle/3.5/taskHistory/taskHistory.lock
new file mode 100644
index 0000000..d663544
Binary files /dev/null and b/kotlin/bob/.gradle/3.5/taskHistory/taskHistory.lock differ
diff --git a/kotlin/bob/.gradle/buildOutputCleanup/built.bin b/kotlin/bob/.gradle/buildOutputCleanup/built.bin
new file mode 100644
index 0000000..e69de29
diff --git a/kotlin/bob/.gradle/buildOutputCleanup/cache.properties b/kotlin/bob/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..41324be
--- /dev/null
+++ b/kotlin/bob/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Mon Jun 05 09:11:09 EDT 2017
+gradle.version=3.5
diff --git a/kotlin/bob/.gradle/buildOutputCleanup/cache.properties.lock b/kotlin/bob/.gradle/buildOutputCleanup/cache.properties.lock
new file mode 100644
index 0000000..40fdece
--- /dev/null
+++ b/kotlin/bob/.gradle/buildOutputCleanup/cache.properties.lock
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/compiler.xml b/kotlin/bob/.idea/compiler.xml
new file mode 100644
index 0000000..bc5d724
--- /dev/null
+++ b/kotlin/bob/.idea/compiler.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/gradle.xml b/kotlin/bob/.idea/gradle.xml
new file mode 100644
index 0000000..346dc7e
--- /dev/null
+++ b/kotlin/bob/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__junit_junit_4_12.xml b/kotlin/bob/.idea/libraries/Gradle__junit_junit_4_12.xml
new file mode 100644
index 0000000..04c10dd
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__junit_junit_4_12.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml b/kotlin/bob/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..8262f72
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml
new file mode 100644
index 0000000..4f32fde
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_1.xml b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_1.xml
new file mode 100644
index 0000000..7b6f562
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_1_1.xml b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_1_1.xml
new file mode 100644
index 0000000..1720158
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_1_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit_1_1_1.xml b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit_1_1_1.xml
new file mode 100644
index 0000000..21c5d19
--- /dev/null
+++ b/kotlin/bob/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit_1_1_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/misc.xml b/kotlin/bob/.idea/misc.xml
new file mode 100644
index 0000000..3e1805e
--- /dev/null
+++ b/kotlin/bob/.idea/misc.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/modules.xml b/kotlin/bob/.idea/modules.xml
new file mode 100644
index 0000000..6cb0457
--- /dev/null
+++ b/kotlin/bob/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/modules/bob_main.iml b/kotlin/bob/.idea/modules/bob_main.iml
new file mode 100644
index 0000000..453d295
--- /dev/null
+++ b/kotlin/bob/.idea/modules/bob_main.iml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/modules/bob_test.iml b/kotlin/bob/.idea/modules/bob_test.iml
new file mode 100644
index 0000000..29e7518
--- /dev/null
+++ b/kotlin/bob/.idea/modules/bob_test.iml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/.idea/workspace.xml b/kotlin/bob/.idea/workspace.xml
new file mode 100644
index 0000000..a4380f3
--- /dev/null
+++ b/kotlin/bob/.idea/workspace.xml
@@ -0,0 +1,1029 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @Ignore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1496668259211
+
+
+ 1496668259211
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/README.md b/kotlin/bob/README.md
new file mode 100644
index 0000000..3da2d30
--- /dev/null
+++ b/kotlin/bob/README.md
@@ -0,0 +1,20 @@
+# Bob
+
+Bob is a lackadaisical teenager. In conversation, his responses are very limited.
+
+Bob answers 'Sure.' if you ask him a question.
+
+He answers 'Whoa, chill out!' if you yell at him.
+
+He says 'Fine. Be that way!' if you address him without actually saying
+anything.
+
+He answers 'Whatever.' to anything else.
+
+## Source
+
+Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
+
+## Submitting Incomplete Solutions
+It's possible to submit an incomplete solution so you can see how others have completed the exercise.
+
diff --git a/kotlin/bob/bob.iml b/kotlin/bob/bob.iml
new file mode 100644
index 0000000..cc2459c
--- /dev/null
+++ b/kotlin/bob/bob.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kotlin/bob/build.gradle b/kotlin/bob/build.gradle
new file mode 100644
index 0000000..16c36c0
--- /dev/null
+++ b/kotlin/bob/build.gradle
@@ -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"]
+ }
+}
diff --git a/kotlin/bob/build/classes/main/Bob.class b/kotlin/bob/build/classes/main/Bob.class
new file mode 100644
index 0000000..6d6d94a
Binary files /dev/null and b/kotlin/bob/build/classes/main/Bob.class differ
diff --git a/kotlin/bob/build/classes/main/BobKt.class b/kotlin/bob/build/classes/main/BobKt.class
new file mode 100644
index 0000000..9975263
Binary files /dev/null and b/kotlin/bob/build/classes/main/BobKt.class differ
diff --git a/kotlin/bob/build/classes/main/META-INF/bob_main.kotlin_module b/kotlin/bob/build/classes/main/META-INF/bob_main.kotlin_module
new file mode 100644
index 0000000..1dd8fc6
Binary files /dev/null and b/kotlin/bob/build/classes/main/META-INF/bob_main.kotlin_module differ
diff --git a/kotlin/bob/build/classes/test/BobTest.class b/kotlin/bob/build/classes/test/BobTest.class
new file mode 100644
index 0000000..dcf5360
Binary files /dev/null and b/kotlin/bob/build/classes/test/BobTest.class differ
diff --git a/kotlin/bob/build/kotlin-build/caches/version.txt b/kotlin/bob/build/kotlin-build/caches/version.txt
new file mode 100644
index 0000000..01aabac
--- /dev/null
+++ b/kotlin/bob/build/kotlin-build/caches/version.txt
@@ -0,0 +1 @@
+11001
\ No newline at end of file
diff --git a/kotlin/bob/src/main/kotlin/.keep b/kotlin/bob/src/main/kotlin/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/kotlin/bob/src/main/kotlin/Bob.kt b/kotlin/bob/src/main/kotlin/Bob.kt
new file mode 100644
index 0000000..350a71d
--- /dev/null
+++ b/kotlin/bob/src/main/kotlin/Bob.kt
@@ -0,0 +1,20 @@
+fun String.isOnlyNumbers(): Boolean {
+ return this.all { it.isDigit() || !it.isLetter() }
+}
+
+object Bob {
+ fun hey(inpString: String): String{
+ if (inpString.trim().length == 0){
+ return "Fine. Be that way!"
+ }
+ else if ((inpString.toUpperCase() == inpString) && !inpString.isOnlyNumbers()){
+ return "Whoa, chill out!"
+ }
+ else if (inpString.endsWith("?")){
+ return "Sure."
+ }
+ else{
+ return "Whatever."
+ }
+ }
+}
\ No newline at end of file
diff --git a/kotlin/bob/src/test/kotlin/BobTest.kt b/kotlin/bob/src/test/kotlin/BobTest.kt
new file mode 100644
index 0000000..7bf714f
--- /dev/null
+++ b/kotlin/bob/src/test/kotlin/BobTest.kt
@@ -0,0 +1,114 @@
+import org.junit.Test
+import org.junit.Ignore
+import kotlin.test.assertEquals
+
+class BobTest {
+
+
+ @Test
+ fun saySomething() {
+ assertEquals("Whatever.", Bob.hey("Tom-ay-to, tom-aaaah-to."))
+ }
+
+
+ @Test
+ fun shouting() {
+ assertEquals("Whoa, chill out!", Bob.hey("WATCH OUT!"))
+ }
+
+
+ @Test
+ fun askingAQuestion() {
+ assertEquals("Sure.", Bob.hey("Does this cryogenic chamber make me look fat?"))
+ }
+
+
+ @Test
+ fun askingANumericQuestion() {
+ assertEquals("Sure.", Bob.hey("You are, what, like 15?"))
+ }
+
+
+ @Test
+ fun talkingForcefully() {
+ assertEquals("Whatever.", Bob.hey("Let's go make out behind the gym!"))
+ }
+
+
+ @Test
+ fun usingAcronymsInRegularSpeech() {
+ assertEquals("Whatever.", Bob.hey("It's OK if you don't want to go to the DMV."))
+ }
+
+
+ @Test
+ fun forcefulQuestions() {
+ assertEquals("Whoa, chill out!", Bob.hey("WHAT THE HELL WERE YOU THINKING?"))
+ }
+
+
+ @Test
+ fun shoutingNumbers() {
+ assertEquals("Whoa, chill out!", Bob.hey("1, 2, 3 GO!"))
+ }
+
+
+ @Test
+ fun onlyNumbers() {
+ assertEquals("Whatever.", Bob.hey("1, 2, 3"))
+ }
+
+
+ @Test
+ fun questionWithOnlyNumbers() {
+ assertEquals("Sure.", Bob.hey("4?"))
+ }
+
+
+ @Test
+ fun shoutingWithSpecialCharacters() {
+ assertEquals("Whoa, chill out!", Bob.hey("ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!"))
+ }
+
+
+ @Test
+ fun shoutingWithUmlauts() {
+ assertEquals("Whoa, chill out!", Bob.hey("\u00dcML\u00c4\u00dcTS!"))
+ }
+
+
+ @Test
+ fun calmlySpeakingWithUmlauts() {
+ assertEquals("Whatever.", Bob.hey("\u00dcML\u00e4\u00dcTS!"))
+ }
+
+
+ @Test
+ fun shoutingWithNoExclamationMark() {
+ assertEquals("Whoa, chill out!", Bob.hey("I HATE YOU"))
+ }
+
+
+ @Test
+ fun statementContainingQuestionMark() {
+ assertEquals("Whatever.", Bob.hey("Ending with ? means a question."))
+ }
+
+
+ @Test
+ fun prattlingOn() {
+ assertEquals("Sure.", Bob.hey("Wait! Hang on. Are you going to be OK?"))
+ }
+
+
+ @Test
+ fun silence() {
+ assertEquals("Fine. Be that way!", Bob.hey(""))
+ }
+
+
+ @Test
+ fun prolongedSilence() {
+ assertEquals("Fine. Be that way!", Bob.hey(" "))
+ }
+}
diff --git a/kotlin/hamming/.idea/workspace.xml b/kotlin/hamming/.idea/workspace.xml
index 279fef7..9bca0b0 100644
--- a/kotlin/hamming/.idea/workspace.xml
+++ b/kotlin/hamming/.idea/workspace.xml
@@ -484,7 +484,7 @@
-
+
@@ -941,7 +941,7 @@
-
+
diff --git a/kotlin/isogram/.idea/workspace.xml b/kotlin/isogram/.idea/workspace.xml
index 8d48b78..28ef3dd 100644
--- a/kotlin/isogram/.idea/workspace.xml
+++ b/kotlin/isogram/.idea/workspace.xml
@@ -21,10 +21,13 @@
-
-
-
-
+
+
+
+
+
+
+
@@ -32,8 +35,8 @@
-
-
+
+
@@ -411,6 +414,9 @@
+
+
+
@@ -439,9 +445,6 @@
-
-
-
@@ -879,35 +882,35 @@
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
@@ -923,6 +926,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -948,7 +978,16 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -965,8 +1004,8 @@
-
-
+
+