paulp 11 лет назад
Родитель
Сommit
daf69f4db8

+ 1
- 0
config.json Просмотреть файл

@@ -27,6 +27,7 @@
27 27
     "atbash-cipher",
28 28
     "accumulate",
29 29
     "crypto-square"
30
+    "trinary"
30 31
   ],
31 32
   "deprecated": [
32 33
   ],

+ 11
- 0
trinary/build.gradle Просмотреть файл

@@ -0,0 +1,11 @@
1
+apply plugin: "java"
2
+apply plugin: "eclipse"
3
+apply plugin: "idea"
4
+
5
+repositories {
6
+  mavenCentral()
7
+}
8
+
9
+dependencies {
10
+  testCompile "junit:junit:4.10"
11
+}

+ 23
- 0
trinary/example.java Просмотреть файл

@@ -0,0 +1,23 @@
1
+public class Trinary {
2
+
3
+    private static final int RADIX = 3;
4
+
5
+    public static int toDecimal(String trinary) {
6
+
7
+        if (!validTrinary(trinary)) {
8
+            return 0;
9
+        }
10
+        int result = 0;
11
+        int power = 1;
12
+        for (int i = trinary.toCharArray().length - 1; i >= 0; i--) {
13
+            int digit = Character.digit(trinary.charAt(i), RADIX);
14
+            result += digit * power;
15
+            power *= RADIX;
16
+        }
17
+        return result;
18
+    }
19
+
20
+    private static boolean validTrinary(String trinary) {
21
+        return trinary.matches("[012]+");
22
+    }
23
+}

+ 0
- 0
trinary/src/main/java/.keep Просмотреть файл


+ 2
- 0
trinary/src/main/java/Trinary.java Просмотреть файл

@@ -0,0 +1,2 @@
1
+public class Trinary {
2
+}

+ 25
- 0
trinary/src/test/java/TrinaryTest.java Просмотреть файл

@@ -0,0 +1,25 @@
1
+import static org.junit.Assert.assertEquals;
2
+
3
+import org.junit.Test;
4
+
5
+public class TrinaryTest {
6
+    @Test
7
+    public void testNonTrinaryCharacterIsZero() {
8
+        assertEquals(0, Trinary.toDecimal("-"));
9
+    }
10
+
11
+    @Test
12
+    public void testNonTrinaryNumberIsZero() {
13
+        assertEquals(0, Trinary.toDecimal("3"));
14
+    }
15
+
16
+    @Test
17
+    public void testTrinaryWithNonTrinaryIsZero() {
18
+        assertEquals(0, Trinary.toDecimal("102-12"));
19
+    }
20
+
21
+    @Test
22
+    public void testTrinary() {
23
+        assertEquals(302, Trinary.toDecimal("102012"));
24
+    }
25
+}