diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-07-19 23:19:05 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-07-19 23:19:05 +0100 |
| commit | 34b4535feb8f28d524db90f36f17af1b81c99269 (patch) | |
| tree | 5824f2e857d4de693b4a00468b590db5ddf7b418 /challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java | |
| parent | 588adb5e9664a5c8da2a0cab969f525ecb6e587c (diff) | |
| download | perlweeklychallenge-club-34b4535feb8f28d524db90f36f17af1b81c99269.tar.gz perlweeklychallenge-club-34b4535feb8f28d524db90f36f17af1b81c99269.tar.bz2 perlweeklychallenge-club-34b4535feb8f28d524db90f36f17af1b81c99269.zip | |
- Added solutions to the task "Disarium Numbers" of week 174.
Diffstat (limited to 'challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java')
| -rw-r--r-- | challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java b/challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java new file mode 100644 index 0000000000..2d85f2c650 --- /dev/null +++ b/challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java @@ -0,0 +1,63 @@ +package theweeklychallenge; + +/* + +Week 174: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-174 + +Task #1: Disarium Numbers + + Write a script to generate first 19 Disarium Numbers. + +Compile and Run: + + mohammad-anwar/java$ javac theweeklychallenge/DisariumNumbers.java + mohammad-anwar/java$ java theweeklychallenge.DisariumNumbers + +*/ + +import java.lang.Math; +import java.util.Arrays; +import java.util.ArrayList; +import junit.framework.TestCase; +import static junit.framework.Assert.*; + +public class DisariumNumbers extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run( + theweeklychallenge.DisariumNumbers.class); + } + + public void testDisariumNumbers() { + Integer[] got = disariumNumbers(19); + Integer[] exp = {0,1,2,3,4,5,6,7,8,9,89,135,175,518,598,1306,1676,2427,2646798}; + assertEquals(Arrays.toString(exp), Arrays.toString(got)); + } + + public static boolean isDisariumNumber(int n) { + char[] digits = String.valueOf(n).toCharArray(); + int i = 0; + int s = 0; + while (i < digits.length) { + s += (int) Math.pow(Character.getNumericValue(digits[i]), (i+1)); + i++; + } + + return s == n; + } + + public static Integer[] disariumNumbers(int n) { + int i = 0; + ArrayList<Integer> dn = new ArrayList<Integer>(); + while (dn.size() < n) { + if (isDisariumNumber(i)) { + dn.add(i); + } + i++; + } + + return dn.toArray(new Integer[dn.size()]); + } +} |
