diff --git a/src/main/java/org/fundacionjala/coding/ovidio/ToLeetSpeak.java b/src/main/java/org/fundacionjala/coding/ovidio/ToLeetSpeak.java new file mode 100644 index 0000000..340b331 --- /dev/null +++ b/src/main/java/org/fundacionjala/coding/ovidio/ToLeetSpeak.java @@ -0,0 +1,91 @@ +package org.fundacionjala.coding.ovidio; + +import java.util.HashMap; +import java.util.Map; + +/** + * Your task is to write function toLeetSpeak that converts a regular english sentence to Leetspeak. + * More about LeetSpeak You can read at wiki -> https://en.wikipedia.org/wiki/Leet + * Consider only uppercase letters (no lowercase letters, no numbers) and spaces. + * For example: + * toLeetSpeak("LEET") returns "1337" + * { + * A : '@', + * B : '8', + * C : '(', + * D : 'D', + * E : '3', + * F : 'F', + * G : '6', + * H : '#', + * I : '!', + * J : 'J', + * K : 'K', + * L : '1', + * M : 'M', + * N : 'N', + * O : '0', + * P : 'P', + * Q : 'Q', + * R : 'R', + * S : '$', + * T : '7', + * U : 'U', + * V : 'V', + * W : 'W', + * X : 'X', + * Y : 'Y', + * Z : '2' + */ +public class ToLeetSpeak { + + /** + * + */ + private static final Map ALPHABET = new HashMap() { + { + put(' ', ' '); + put('A', '@'); + put('B', '8'); + put('C', '('); + put('D', 'D'); + put('E', '3'); + put('F', 'F'); + put('G', '6'); + put('H', '#'); + put('I', '!'); + put('J', 'J'); + put('K', 'K'); + put('L', '1'); + put('M', 'M'); + put('N', 'N'); + put('O', '0'); + put('P', 'P'); + put('Q', 'Q'); + put('R', 'R'); + put('S', '$'); + put('T', '7'); + put('U', 'U'); + put('V', 'V'); + put('W', 'W'); + put('X', 'X'); + put('Y', 'Y'); + put('Z', '2'); + + } + }; + + /** + * Method for translation. + * + * @param speak Receive the sentence. + * @return String the translation of speak. + */ + String toLeetSpeak(final String speak) { + StringBuilder translation = new StringBuilder(); + for (Character a : speak.replaceAll("^[^A-Z]", "").toCharArray()) { + translation.append(ALPHABET.get(a) == null ? "" : ALPHABET.get(a)); + } + return translation.toString(); + } +} diff --git a/src/test/java/org/fundacionjala/coding/ovidio/ToLeetSpeakTest.java b/src/test/java/org/fundacionjala/coding/ovidio/ToLeetSpeakTest.java new file mode 100644 index 0000000..71e4bb0 --- /dev/null +++ b/src/test/java/org/fundacionjala/coding/ovidio/ToLeetSpeakTest.java @@ -0,0 +1,34 @@ +package org.fundacionjala.coding.ovidio; + +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Created by Simon on 22/08/2017. + */ +public class ToLeetSpeakTest { + private ToLeetSpeak toLeetSpeak; + + /** + * Execute before each test method. + */ + @Before + public void setUp() { + toLeetSpeak = new ToLeetSpeak(); + } + + /** + * Example Test. + */ + @Test + public void testSomething() { + assertEquals("1337", toLeetSpeak.toLeetSpeak("LEET")); + assertEquals("(0D3W@R$", toLeetSpeak.toLeetSpeak("CODEWARS")); + assertEquals("#3110 W0R1D", toLeetSpeak.toLeetSpeak("HELLO WORLD")); + assertEquals("10R3M !P$UM D010R $!7 @M37", toLeetSpeak.toLeetSpeak("LOREM IPSUM DOLOR SIT AMET")); + String result = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"; + assertEquals("7#3 QU!(K 8R0WN F0X JUMP$ 0V3R 7#3 1@2Y D06", toLeetSpeak.toLeetSpeak(result)); + } +}