From 2e26a9d667cb3442a6785599b7b5061a956db3f6 Mon Sep 17 00:00:00 2001 From: ackermanncedi Date: Mon, 25 Nov 2024 14:46:34 +0000 Subject: [PATCH] Finish challenge Happy Number --- cediackermann/challenges/happyNumber/BUILD | 11 ++++++++ .../challenges/happyNumber/Main.java | 8 ++++++ .../challenges/happyNumber/Solution.java | 27 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 cediackermann/challenges/happyNumber/BUILD create mode 100644 cediackermann/challenges/happyNumber/Main.java create mode 100644 cediackermann/challenges/happyNumber/Solution.java diff --git a/cediackermann/challenges/happyNumber/BUILD b/cediackermann/challenges/happyNumber/BUILD new file mode 100644 index 0000000..aee5eb9 --- /dev/null +++ b/cediackermann/challenges/happyNumber/BUILD @@ -0,0 +1,11 @@ +load("@rules_java//java:defs.bzl", "java_binary") + +package(default_visibility = ["//visibility:public"]) + +java_binary( + name = "happyNumber", + main_class = "cediackermann.challenges.happyNumber.Main", + srcs = glob(["*.java"]), + deps = [ + ], +) diff --git a/cediackermann/challenges/happyNumber/Main.java b/cediackermann/challenges/happyNumber/Main.java new file mode 100644 index 0000000..bbb80de --- /dev/null +++ b/cediackermann/challenges/happyNumber/Main.java @@ -0,0 +1,8 @@ +package cediackermann.challenges.happyNumber; + +public class Main { + public static void main(String[] args) { + Solution sol = new Solution(); + System.out.println(sol.isHappy(2)); + } +} diff --git a/cediackermann/challenges/happyNumber/Solution.java b/cediackermann/challenges/happyNumber/Solution.java new file mode 100644 index 0000000..a24bfe5 --- /dev/null +++ b/cediackermann/challenges/happyNumber/Solution.java @@ -0,0 +1,27 @@ +package cediackermann.challenges.happyNumber; + +import java.util.HashSet; +import java.util.Set; + +public class Solution { + public boolean isHappy(int n) { + Set seen = new HashSet<>(); + + while (n != 1 && !seen.contains(n)) { + seen.add(n); + n = getNextGen(n); + } + + return n == 1; + } + + private int getNextGen(int n) { + int nextGen = 0; + while (n > 0) { + int digit = n % 10; + nextGen += digit * digit; + n /= 10; + } + return nextGen; + } +} \ No newline at end of file