Skip to content

Day two Kotlin Hacktoberfest #359

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 17 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .all-contributorsrc
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,17 @@
"doc",
"code"
]
},
{
"login": "d-l-mcbride",
"name": "d-l-mcbride",
"avatar_url": "https://avatars3.githubusercontent.com/u/46550732?v=4",
"profile": "https://github.com/d-l-mcbride",
"contributions": [
"doc",
"code"
]
}
]
],
"commitConvention": "none"
}
57 changes: 50 additions & 7 deletions CONTRIBUTORS.md

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions Day1/Kotlin/FizzBuzz.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun fizzBuzz (fizzList: List<Int>) {

var output: String

fizzList.forEach {
output = when {
it % 15 == 0 -> "FizzBuzz"
it % 5 == 0 -> "Buzz"
it % 3 == 0 -> "Fizz"
else -> "${it}"
}
println(output)
}
}

fizzBuzz((1..15).toList())
30 changes: 30 additions & 0 deletions Day1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,36 @@ int main()
}
```

## Kotlin Implementation

### [FizzBuzz.kts](./Kotlin/FizzBuzz.kts)

##### To run this script `kotlinc -script FizzBuzz.kts`
_*Prereq: Kotlin must be installed._
```
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun fizzBuzz (fizzList: List<Int>) {

var output: String

fizzList.forEach {
output = when {
it % 15 == 0 -> "FizzBuzz"
it % 5 == 0 -> "Buzz"
it % 3 == 0 -> "Fizz"
else -> "${it}"
}
println(output)
}
}

fizzBuzz((1..15).toList())
```

### Have Another solution?

The beauty of programming lies in the fact that there is never a single solution to any problem.
Expand Down
34 changes: 34 additions & 0 deletions Day2/Kotlin/ReverseAndPalinedrome.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun reverse(subject:String):String {
var reversed = StringBuilder()

for( j in (subject.length -1) downTo 0){
reversed.append(subject[j])
}
return reversed.toString()
}


fun palindrome(subject:String){
val reversed = reverse(subject)
if (reversed == subject) println("${subject} is a palindrome") else println("${subject} is not a palindrome")
}

val hello = "Hello"
val goodbye = "Goodbye"
val single = "S"

println("Reverse String Tests")
println("${hello} reversed is ${reverse(hello)}")
println("${goodbye} reversed is ${reverse(goodbye)}")
println ("${single} reversed is ${reverse(single)}")

println("\n\nPalindrome Tests")
palindrome("I")
palindrome("otto")
palindrome("tacocat")
palindrome("dog")
43 changes: 43 additions & 0 deletions Day2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -981,6 +981,49 @@ public class StringReverseAndPalin {
}
```

## Kotlin Implementation

### [ReverseAndPalindrome.kts](./Kotlin/ReverseAndPalindrome.kts)

##### To run this script `kotlinc -script ReverseAndPalindrome.kts`
_*Prereq: Kotlin must be installed._
```
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun reverse(subject:String):String {
var reversed = StringBuilder()

for( j in (subject.length -1) downTo 0){
reversed.append(subject[j])
}
return reversed.toString()
}


fun palindrome(subject:String){
val reversed = reverse(subject)
if (reversed == subject) println("${subject} is a palindrome") else println("${subject} is not a palindrome")
}

val hello = "Hello"
val goodbye = "Goodbye"
val single = "S"

println("Reverse String Tests")
println("${hello} reversed is ${reverse(hello)}")
println("${goodbye} reversed is ${reverse(goodbye)}")
println ("${single} reversed is ${reverse(single)}")

println("\n\nPalindrome Tests")
palindrome("I")
palindrome("otto")
palindrome("tacocat")
palindrome("dog")
```

### Have Another solution?

The beauty of programming lies in the fact that there is never a single solution to any problem.
Expand Down
32 changes: 32 additions & 0 deletions Day3/Kotlin/HammingDistance.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* @author: d-l-mcbride
* @date: 10/12/2020
**/

fun hammingDistance(first: String, second: String ):Int {
if (first.length != second.length) return -1

var distance = 0

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var distance = 0
if (first.length != second.length) {
return -1
}
var distance = 0

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to check whether the strings are of equal length before you calculate the Hamming distance between them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aaditkamat I have made the changes that were suggested

Copy link
Contributor Author

@d-l-mcbride d-l-mcbride Nov 1, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aaditkamat or @MadhavBahl I know you are probably busy but could you verify my changes, since I was trying to get my pull request done for Hacktoberfest. Unfortunately this pull request is actually many day2-4 (forgot to make branches for each). Could you add the "hacktoberfest-accepted" label to this. Thank you for your help!

for(i in first.indices) {
if (first[i] != second[i]) distance++
}
return distance
}

val DOG = "dog"
val LOG = "log"
val LARRY = "larry"
val LASSI ="lassi"
val EMPTY = ""
val ALSO_EMPTY = ""
val ABCDE = "abcde"
val BADEC = "badec"
val DIFF_ONE ="ab"
val DIFF_TWO ="abcd"

println("Hamming Distance of ${DOG} and ${LOG} = ${hammingDistance(DOG,LOG)}")
println("Hamming Distance of ${LOG} and ${LOG} = ${hammingDistance(LOG,LOG)}")
println("Hamming Distance of ${LARRY} and ${LASSI} = ${hammingDistance(LARRY,LASSI)}")
println("Hamming Distance of ${ABCDE} and ${BADEC} = ${hammingDistance(ABCDE,BADEC)}")
println("Hamming Distance of two empty strings = ${hammingDistance(EMPTY,ALSO_EMPTY)}")
println("Hamming Distance of different length strings = ${hammingDistance(DIFF_ONE,DIFF_TWO)}")
45 changes: 45 additions & 0 deletions Day3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,8 @@ print("list of unmatched characters are:",k)
print("number of characters not matching are:",len(k))

```

```
/* @date 4/09/2020
* @author Shashwat Gupta (shashwatxdevelop)
*/
Expand Down Expand Up @@ -434,7 +436,50 @@ public class HammingDistance {
}

}
```

## Kotlin Implementation

### [HammingDistance.kts](./Kotlin/HammingDistance.kts)

##### To run this script `kotlinc -script HammingDistance.kts`
_*Prereq: Kotlin must be installed._

```
/**
* @author: d-l-mcbride
* @date: 10/12/2020
**/

fun hammingDistance(first: String, second: String ):Int {
if (first.length != second.length) return -1

var distance = 0
for(i in first.indices) {
if (first[i] != second[i]) distance++
}
return distance
}

val DOG = "dog"
val LOG = "log"
val LARRY = "larry"
val LASSI ="lassi"
val EMPTY = ""
val ALSO_EMPTY = ""
val ABCDE = "abcde"
val BADEC = "badec"
val DIFF_ONE ="ab"
val DIFF_TWO ="abcd"


println("Hamming Distance of ${DOG} and ${LOG} = ${hammingDistance(DOG,LOG)}")
println("Hamming Distance of ${LOG} and ${LOG} = ${hammingDistance(LOG,LOG)}")
println("Hamming Distance of ${LARRY} and ${LASSI} = ${hammingDistance(LARRY,LASSI)}")
println("Hamming Distance of ${ABCDE} and ${BADEC} = ${hammingDistance(ABCDE,BADEC)}")
println("Hamming Distance of two empty strings = ${hammingDistance(EMPTY,ALSO_EMPTY)}")
println("Hamming Distance of different length strings = ${hammingDistance(DIFF_ONE,DIFF_TWO)}")
```

## Why Hamming Distance?

Expand Down
50 changes: 50 additions & 0 deletions day4/Kotlin/NumVowelsAndMaxChars.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun numberOfVowels(subject: String):Int{
val vowels = hashSetOf<Char>('a','e','i','o','u')
var count = 0
subject.forEach {
when(it.toLowerCase()) {
in vowels -> count++
}
}
return count
}

fun maxChars(subject: String):Char {
var maxChar = subject[0]
var maxCount = 0
var count:Int
for(i in 0 until subject.length -1) {
count = 0
for(j in i+1 until subject.length) {
if (subject[i] == subject[j]) count++
}
if( count > maxCount) {
maxCount = count
maxChar = subject[i]
}
}
return maxChar
}



val TWO_VOWELS = "hello"
val TWO_VOWELS_WITH_CAPS = "HELLO"
val NO_VOWELS = "qrzmtlnz"
println("${TWO_VOWELS} contains ${numberOfVowels(TWO_VOWELS)} vowels.")
println("${TWO_VOWELS_WITH_CAPS} contains ${numberOfVowels(TWO_VOWELS_WITH_CAPS)} vowels.")
println("${NO_VOWELS} contains ${numberOfVowels(NO_VOWELS)} vowels.")

val THREE_MID = "helllo"
val ONE_EACH = "abcd"
val FOUR_END = "byeeee"
val FOUR_BEG = "yyyyes"
println("The letter with the most occurences in ${THREE_MID} is ${maxChars(THREE_MID)}")
println("The letter with the most occurences in ${ONE_EACH} is ${maxChars(ONE_EACH)}")
println("The letter with the most occurences in ${FOUR_END} is ${maxChars(FOUR_END)}")
println("The letter with the most occurences in ${FOUR_BEG} is ${maxChars(FOUR_BEG)}")
61 changes: 60 additions & 1 deletion day4/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -887,10 +887,69 @@ print "Enter a string: "
str = gets
str.chomp!
puts "The most frequent character in #{str} is : #{most_frequent_character(str)}"
```
## Kotlin Implementation

### [NumVowelsAndMaxChars.kts](./Kotlin/NumVowelsAndMaxChars.kts)

##### To run this script `kotlinc -script NumVowelsAndMaxChars.kts`

```
/**
* @author: d-l-mcbride
* @date: 10/11/2020
**/

fun numberOfVowels(subject: String):Int{
val vowels = hashSetOf<Char>('a','e','i','o','u')
var count = 0
subject.forEach {
when(it.toLowerCase()) {
in vowels -> count++
}
}
return count
}

fun maxChars(subject: String):Char {
var maxChar = subject[0]
var maxCount = 0
var count:Int
for(i in 0 until subject.length -1) {
count = 0
for(j in i+1 until subject.length) {
if (subject[i] == subject[j]) count++
}
if( count > maxCount) {
maxCount = count
maxChar = subject[i]
}
}
return maxChar
}



val TWO_VOWELS = "hello"
val TWO_VOWELS_WITH_CAPS = "HELLO"
val NO_VOWELS = "qrzmtlnz"
println("${TWO_VOWELS} contains ${numberOfVowels(TWO_VOWELS)} vowels.")
println("${TWO_VOWELS_WITH_CAPS} contains ${numberOfVowels(TWO_VOWELS_WITH_CAPS)} vowels.")
println("${NO_VOWELS} contains ${numberOfVowels(NO_VOWELS)} vowels.")

val THREE_MID = "helllo"
val ONE_EACH = "abcd"
val FOUR_END = "byeeee"
val FOUR_BEG = "yyyyes"
println("The letter with the most occurences in ${THREE_MID} is ${maxChars(THREE_MID)}")
println("The letter with the most occurences in ${ONE_EACH} is ${maxChars(ONE_EACH)}")
println("The letter with the most occurences in ${FOUR_END} is ${maxChars(FOUR_END)}")
println("The letter with the most occurences in ${FOUR_BEG} is ${maxChars(FOUR_BEG)}")

```

### Have Another solution?

The beauty of programming lies in the fact that there is never a single solution to any problem.

In case you have an alternative way to solve this problem, do contribute to this repository (https://github.com/CodeToExpress/dailycodebase) :)
In case you have an alternative way to solve this problem, do contribute to this repository (https://github.com/CodeToExpress/dailycodebase) :)