aboutsummaryrefslogtreecommitdiff
path: root/challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-19 23:19:05 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-19 23:19:05 +0100
commit34b4535feb8f28d524db90f36f17af1b81c99269 (patch)
tree5824f2e857d4de693b4a00468b590db5ddf7b418 /challenge-174/mohammad-anwar/java/theweeklychallenge/DisariumNumbers.java
parent588adb5e9664a5c8da2a0cab969f525ecb6e587c (diff)
downloadperlweeklychallenge-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.java63
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()]);
+ }
+}