Skip to content

Commit

Permalink
AlphabetEncoder
Browse files Browse the repository at this point in the history
  • Loading branch information
Jaybit0 committed Jan 29, 2025
1 parent 8b866c6 commit d5fe2cf
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.apache.sysds.hops.rewriter;

public class RewriterAlphabetEncoder {

public static int[] fromBaseNNumber(int l, int n) {
if (l == 0)
return new int[] { 0 };

int numDigits = (int)(Math.log(l) / Math.log(n)) + 1;
int[] digits = new int[numDigits];

for (int i = numDigits - 1; i >= 0; i--) {
digits[i] = l % n;
l = l / n;
}

return digits;
}

public static int toBaseNNumber(int[] digits, int n) {
if (digits.length == 0)
throw new IllegalArgumentException();

int multiplicator = 1;
int out = 0;

for (int i = digits.length - 1; i >= 0; i--) {
out += multiplicator * digits[i];
multiplicator *= n;
}

return out;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.apache.sysds.test.component.codegen.rewrite.functions;

import org.apache.sysds.hops.rewriter.RewriterAlphabetEncoder;
import org.junit.Test;

public class RewriterAlphabetTest {

@Test
public void testDecode1() {
int l = 27;
int n = 5;
int[] digits = RewriterAlphabetEncoder.fromBaseNNumber(l, n);
assert digits.length == 3 && digits[0] == 1 && digits[1] == 0 && digits[2] == 2;
}

@Test
public void testEncode1() {
int[] digits = new int[] { 1, 0, 2 };
int n = 5;
int l = RewriterAlphabetEncoder.toBaseNNumber(digits, n);
assert l == 27;
}

}

0 comments on commit d5fe2cf

Please # to comment.