Skip to content
Closed
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ package com.mouredev.weeklychallenge2022
*/

fun main() {
challengeFizzBuzz()
}

fun challengeFizzBuzz() {
for (index in 1..100) {
val divisibleByThree = index % 3 == 0
val divisibleByFive = index % 5 == 0
Expand Down
24 changes: 17 additions & 7 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge1.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.mouredev.weeklychallenge2022

import java.text.Normalizer

/*
* Reto #1
* ¿ES UN ANAGRAMA?
Expand All @@ -13,20 +15,28 @@ package com.mouredev.weeklychallenge2022
* Dos palabras exactamente iguales no son anagrama.
*
* Información adicional:
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la acomunidad.
* - Usa el canal de nuestro discord (https://mouredev.com/discord) "🗓reto-semanal" para preguntas, dudas o prestar ayuda la acomunidad.
* - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada.
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/

fun main() {
println(isAnagram("amor", "roma"))
println(isAnagram("RAIL! SAFETY!", "fairy tales"))
}

private fun isAnagram(wordOne: String, wordTwo: String): Boolean {
if (wordOne.lowercase() == wordTwo.lowercase()) {
return false
}
return wordOne.lowercase().toCharArray().sortedArray().contentEquals(wordTwo.lowercase().toCharArray().sortedArray())
fun isAnagram(word1: String, word2: String): Boolean {
val sequence1 = frequencyChar(word1)
val sequence2 = frequencyChar(word2)
return sequence1 == sequence2
}

fun frequencyChar(string: String) : Map<Char, List<Char>> =
string.uppercase().clearAccent().filter { it.isLetter() }.groupBy { it }

fun String.clearAccent(): String {
//source: https://stackoverflow.com/questions/3322152/is-there-a-way-to-get-rid-of-accents-and-convert-a-whole-string-to-regular-lette/3322174#3322174
val stringNormalizer = Normalizer.normalize(this, Normalizer.Form.NFD)
return stringNormalizer.replace("[^\\p{ASCII}]".toRegex(), "")
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,20 @@ package com.mouredev.weeklychallenge2022
* - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación.
* - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación.
*
*/
*/

fun main () {
val phrase = "Ana lleva al oso la avellana."
println("la frase -> $phrase es un palindromo? R:/ ${isPalindrome(phrase)}")
}

fun isPalindrome(text: String) : Boolean {
return text.normalize().toList() == text.normalize().toList().asReversed()
}

fun String.clearPunctuationMarks() = this.replace("\\p{Punct}".toRegex(),"")

fun String.normalize() = this.replace(" ", "")
.clearAccent()
.clearPunctuationMarks()
.lowercase()
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.mouredev.weeklychallenge2022


import junit.framework.TestCase.assertEquals
import org.junit.Test



class Challenge1KtTest {
@Test
fun `"Trama" es un anagrama de "Marta"`() {
assertEquals(isAnagram("Trama", "Marta"), true)
}

@Test
fun `"Licúa" es una anagrama de "Lucía"`() {
assertEquals(isAnagram("Licúa", "Lucía"), true)
}

@Test
fun `"Ácido" es un anagrama de "acido"`() {
assertEquals(isAnagram("Ácido", "acido"), true)
}

@Test
fun `"Planeta" no es un anagrama de "tierra"`() {
assertEquals(isAnagram("PLaneta", "tierra"), false)
}

@Test
fun `"Nómade" es una anagrama de "Moneda"`() {
assertEquals(isAnagram("Nómade", "Moneda"), true)
}

@Test
fun `"El huevo de chocolate" es un anagrama de "hecho de vate locuelo"`() {
assertEquals(isAnagram("El huevo de chocolate", "hecho de vate locuelo"), true)
}
}