From bbb945ddf7424e9ecf3b6498e03a7f9307d49e98 Mon Sep 17 00:00:00 2001 From: JKord Date: Sat, 10 Oct 2015 22:50:16 +0300 Subject: [PATCH 1/2] Home Work 1 --- .gitignore | 2 + LearnJava.iml | 13 +++ lib/enigma-console.jar | Bin 0 -> 59929 bytes src/jkord/lesson1/ConsoleApp.java | 125 +++++++++++++++++++++++ src/jkord/lesson1/Main.java | 47 +++++++++ src/jkord/lesson1/handler/Action.java | 6 ++ src/jkord/lesson1/handler/Command.java | 29 ++++++ src/jkord/lesson1/util/ExtraMath.java | 32 ++++++ src/jkord/lesson1/util/VerbalNumber.java | 76 ++++++++++++++ 9 files changed, 330 insertions(+) create mode 100644 .gitignore create mode 100644 LearnJava.iml create mode 100644 lib/enigma-console.jar create mode 100644 src/jkord/lesson1/ConsoleApp.java create mode 100644 src/jkord/lesson1/Main.java create mode 100644 src/jkord/lesson1/handler/Action.java create mode 100644 src/jkord/lesson1/handler/Command.java create mode 100644 src/jkord/lesson1/util/ExtraMath.java create mode 100644 src/jkord/lesson1/util/VerbalNumber.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9fb18b4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +out diff --git a/LearnJava.iml b/LearnJava.iml new file mode 100644 index 0000000..b13ff2f --- /dev/null +++ b/LearnJava.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/enigma-console.jar b/lib/enigma-console.jar new file mode 100644 index 0000000000000000000000000000000000000000..0bd155e9b181ba5892a5e6909407282179795d81 GIT binary patch literal 59929 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 literal 0 HcmV?d00001 diff --git a/src/jkord/lesson1/ConsoleApp.java b/src/jkord/lesson1/ConsoleApp.java new file mode 100644 index 0000000..15d19c4 --- /dev/null +++ b/src/jkord/lesson1/ConsoleApp.java @@ -0,0 +1,125 @@ +package jkord.lesson1; + +import enigma.console.Console; +import enigma.core.Enigma; +import java.util.*; + +import jkord.lesson1.handler.Command; + +public class ConsoleApp +{ + private Console sConsole; + private String title; + + private ArrayList commands; + private int maxStrIndexCommand; + + public ConsoleApp(String title) { + sConsole = Enigma.getConsole(title); + + this.title = title; + this.commands = new ArrayList<>(); + + //colorText = new TextAttributes(Color.BLUE, Color.WHITE); + //colorRestText = new TextAttributes(Color.WHITE, Color.BLACK); + } + + public void addSubApp(List items) { + commands.addAll(items); + commands.add(new Command("Exit (Esc)", () -> close())); + + maxStrIndexCommand = maxStrList(); + } + + public int maxStrList() { + int max = 0; + for (int i = 0; i < commands.size(); i++) + if (commands.get(max).getName().length() < commands.get(i).getName().length()) + max = i; + + return commands.get(max).getName().length(); + } + + public void print(String text) { + System.out.print(text); + } + public void printLn(String text) { + System.out.println(text); + } + public void enter() { + System.out.println(); + } + public int read() { + while (true) { + try { + return Integer.parseInt(sConsole.readLine()); + } catch (Exception e) { + System.out.println("Invalid input! Try again"); + } + } + } + + private void clearFirstStep() { + for (int i = 0; i < 20; i++) + enter(); + } + + private void clearSecondStep() { + for (int i = 0; i < 20; i++) + printLn("."); + } + + public void drawPart() { + print(" "); + for (int i = 0; i < maxStrIndexCommand + 4; i++) + print("-"); + enter(); + } + + public void drawLines() { + clearFirstStep(); + + for (int j = 0; j <= (maxStrIndexCommand + 4 - title.length()) / 2; j++) + print(" "); + print(title); + + enter(); + drawPart(); + + int i = 0, index = 1; + for (Command command : commands) + { + //if (i == selectIndex) + // sConsole.setTextAttributes(colorText); + + if (command.getName() != "-") { + print("| " + index +" "); + print(command.getName()); + + for (int j = 0; j < maxStrIndexCommand - command.getName().length(); j++) + print(" "); + printLn(" |"); + index++; + } else { + drawPart(); + } + + //sConsole.setTextAttributes(colorRestText); + i++; + } + + drawPart(); + } + + public void processing() { + while (true) { + drawLines(); + print("Choose: "); + commands.get(read() - 1).run(); + } + } + + public void close() { + System.exit(0); + } +} \ No newline at end of file diff --git a/src/jkord/lesson1/Main.java b/src/jkord/lesson1/Main.java new file mode 100644 index 0000000..c5224e1 --- /dev/null +++ b/src/jkord/lesson1/Main.java @@ -0,0 +1,47 @@ +package jkord.lesson1; + +import java.util.*; + +import jkord.lesson1.handler.Command; +import jkord.lesson1.util.*; + +public class Main +{ + static ConsoleApp app = new ConsoleApp("Lesson 1"); + + public void addCommands() + { + List commands = new ArrayList<>(); + + commands.add(new Command("Factorial", () -> factorialApp())); + commands.add(new Command("Fibonacci sequence", () -> sequenceFibonacci())); + commands.add(new Command("Numbers in words", () -> verbalNumber())); + + app.addSubApp(commands); + } + + private void factorialApp() { + app.printLn(" Factorial"); + app.printLn("Enter n: "); + app.printLn("Result: " + ExtraMath.factorial(app.read())); + } + + private void sequenceFibonacci() { + app.printLn(" Sequence Fibonacci"); + app.printLn("Enter n: "); + app.printLn("Result: " + Arrays.toString(ExtraMath.sequenceFibonacci(app.read()))); + } + + private void verbalNumber() { + app.printLn(" Numbers in words"); + app.printLn("Enter Number: "); + + app.printLn("Result: " + new VerbalNumber().toString(app.read())); + } + + public static void main(String[] args) + { + new Main().addCommands(); + app.processing(); + } +} \ No newline at end of file diff --git a/src/jkord/lesson1/handler/Action.java b/src/jkord/lesson1/handler/Action.java new file mode 100644 index 0000000..490fbe9 --- /dev/null +++ b/src/jkord/lesson1/handler/Action.java @@ -0,0 +1,6 @@ +package jkord.lesson1.handler; + +@FunctionalInterface +public interface Action { + public abstract void run(); +} diff --git a/src/jkord/lesson1/handler/Command.java b/src/jkord/lesson1/handler/Command.java new file mode 100644 index 0000000..e80600e --- /dev/null +++ b/src/jkord/lesson1/handler/Command.java @@ -0,0 +1,29 @@ +package jkord.lesson1.handler; + +public class Command +{ + private String name; + private Action action; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Command(String name) { + this.name = name; + } + + public Command(String name, Action action) { + this.name = name; + this.action = action; + } + + public void run() { + if (action != null) + action.run(); + } +} \ No newline at end of file diff --git a/src/jkord/lesson1/util/ExtraMath.java b/src/jkord/lesson1/util/ExtraMath.java new file mode 100644 index 0000000..fb423de --- /dev/null +++ b/src/jkord/lesson1/util/ExtraMath.java @@ -0,0 +1,32 @@ +package jkord.lesson1.util; + +import java.math.BigInteger; + +public class ExtraMath +{ + private static long factorial(int n, long acc) + { + return (n == 0)? acc : factorial(n - 1, acc * n); + } + + public static long factorial(int n) + { + return (n < 1)? 1 : factorial(n, 1); + } + + public static long[] sequenceFibonacci(int n) + { + if (n < 3) + return new long[] {1}; + + long sequence[] = new long[n]; + sequence[0] = 1; + sequence[1] = 1; + + for (int i = 2; i < n; i++) { + sequence[i] = sequence[i - 1] + sequence[i - 2]; + } + + return sequence; + } +} \ No newline at end of file diff --git a/src/jkord/lesson1/util/VerbalNumber.java b/src/jkord/lesson1/util/VerbalNumber.java new file mode 100644 index 0000000..8c18337 --- /dev/null +++ b/src/jkord/lesson1/util/VerbalNumber.java @@ -0,0 +1,76 @@ +package jkord.lesson1.util; + + +public class VerbalNumber +{ + final String[] str1 = {"zero","one","two","three","four","five","six","seven","eight","nine"}; + final String[] str11 = {"", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}; + final String[] str10 = {"", "ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; + final String[] unit = {"thousands", "million", "billion", "trillion"}; + + protected String getS1(int n) { + return str1[n]; + } + protected String getS11(int n) { + return str11[n]; + } + protected String getS10(int n) { + return str10[n]; + } + protected String getS100(int n) { + return str1[n] + " hundred"; + } + + protected String getUnit(long cnt) { + int cn = String.valueOf(cnt).length(); + if (cn < 4) + return ""; + + switch (cn) { + case 4: return unit[0]; + case 5: return unit[1]; + case 6: return unit[2]; + case 7: return unit[3]; + default: return "infinity"; + } + } + + protected String triadToString(int n) { + StringBuilder sb = new StringBuilder(); + + if (n % 1000 > 99) { + sb.append(getS100(n % 1000 / 100)); + sb.append(" "); + } + if (n % 100 > 10 && n % 100 < 20) { + sb.append(getS11(n % 10)); + sb.append(" "); + + return sb.toString(); + } + if (n % 100 > 9) { + sb.append(getS10(n % 100 / 10)); + sb.append(" "); + } + if (n % 10 > 0) { + sb.append(getS1(n % 10)); + sb.append(" "); + } + + return sb.toString(); + } + + public String toString(Number num) { + String str = ""; + if (num.longValue() == 0) + str = getS1(0); + + while (num.longValue() > 0) { + String triad = triadToString((int)(num.longValue() % 1000)); + str = triad + getUnit(num.longValue()) + " " + str; + num = num.longValue() / 1000; + } + + return str; + } +} From 458d651c7f308e43adfc44735d63d60d3a8fdcfe Mon Sep 17 00:00:00 2001 From: JKord Date: Sun, 11 Oct 2015 12:53:09 +0300 Subject: [PATCH 2/2] add check --- src/jkord/lesson1/ConsoleApp.java | 6 +++++- src/jkord/lesson1/util/VerbalNumber.java | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/jkord/lesson1/ConsoleApp.java b/src/jkord/lesson1/ConsoleApp.java index 15d19c4..d90b96e 100644 --- a/src/jkord/lesson1/ConsoleApp.java +++ b/src/jkord/lesson1/ConsoleApp.java @@ -115,7 +115,11 @@ public void processing() { while (true) { drawLines(); print("Choose: "); - commands.get(read() - 1).run(); + int index = read() - 1; + if (index > 0 && index < commands.size()) + commands.get(index).run(); + else + printLn("Command not found!"); } } diff --git a/src/jkord/lesson1/util/VerbalNumber.java b/src/jkord/lesson1/util/VerbalNumber.java index 8c18337..fabca45 100644 --- a/src/jkord/lesson1/util/VerbalNumber.java +++ b/src/jkord/lesson1/util/VerbalNumber.java @@ -7,6 +7,7 @@ public class VerbalNumber final String[] str11 = {"", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}; final String[] str10 = {"", "ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; final String[] unit = {"thousands", "million", "billion", "trillion"}; + final String pref = "negative"; protected String getS1(int n) { return str1[n]; @@ -65,6 +66,11 @@ public String toString(Number num) { if (num.longValue() == 0) str = getS1(0); + if (num.longValue() < 0) { + num = - num.longValue(); + str = pref; + } + while (num.longValue() > 0) { String triad = triadToString((int)(num.longValue() % 1000)); str = triad + getUnit(num.longValue()) + " " + str;