From 0d9a193075a5e81133e674a7112ab5eba47a8b65 Mon Sep 17 00:00:00 2001
From: sowgro <tpoke.ferrari@gmail.com>
Date: Fri, 21 Mar 2025 11:00:08 -0400
Subject: Initial commit

---
 src/main/java/org/example/Main.java | 75 +++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100644 src/main/java/org/example/Main.java

(limited to 'src/main/java/org/example/Main.java')

diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java
new file mode 100644
index 0000000..f5a9fb7
--- /dev/null
+++ b/src/main/java/org/example/Main.java
@@ -0,0 +1,75 @@
+package org.example;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class Main {
+
+    static Random RNG = new Random();
+
+    public static final String ANSI_RESET = "\u001B[0m";
+    public static final String ANSI_BLACK = "\u001B[30m";
+    public static final String ANSI_RED = "\u001B[31m";
+    public static final String ANSI_GREEN = "\u001B[32m";
+    public static final String ANSI_YELLOW = "\u001B[33m";
+    public static final String ANSI_BLUE = "\u001B[34m";
+    public static final String ANSI_PURPLE = "\u001B[35m";
+    public static final String ANSI_CYAN = "\u001B[36m";
+    public static final String ANSI_WHITE = "\u001B[37m";
+    public static final String ANSI_ORANGE = "\033[38:5:208m";
+    public static final String ANSI_BROWN = "\033[38:5:52m";
+
+    public static void main(String[] args) {
+        tree(25);
+    }
+
+    public static Map.Entry<Character, String> ornament() {
+        var l = new ArrayList<>(List.of(
+                Map.entry('O', ANSI_RED),
+                Map.entry('^', ANSI_YELLOW),
+                Map.entry('&', ANSI_ORANGE),
+                Map.entry('@', ANSI_BLUE),
+                Map.entry('!', ANSI_WHITE),
+                Map.entry('~', ANSI_PURPLE),
+                Map.entry('$', ANSI_CYAN)
+        ));
+        for (int i = 0; i < 21; i++) {
+            l.add(Map.entry('*', ANSI_GREEN));
+        }
+        return l.get(RNG.nextInt(0, l.size()));
+    }
+
+    public static void tree(int size) {
+        for (int i = 0; i < size; i++) {
+            printSpace(size - i);
+            printOrnament(i * 2 + 1);
+            System.out.println();
+        }
+        for (int i = 0; i < (size/3); i++) {
+            printSpace(size - size/6);
+            printStump(size/3);
+            System.out.println();
+        }
+    }
+
+    public static void printOrnament(int count) {
+        for (int i = 0; i < count; i++) {
+            var o = ornament();
+            System.out.print(o.getValue() + o.getKey() + ANSI_RESET);
+        }
+    }
+
+    public static void printSpace(int count) {
+        for (int i = 0; i < count; i++) {
+            System.out.print(" ");
+        }
+    }
+
+    public static void printStump(int count) {
+        for (int i = 0; i < count; i++) {
+            System.out.print(ANSI_BROWN + '#' + ANSI_RESET);
+        }
+    }
+}
\ No newline at end of file
-- 
cgit v1.2.3