aboutsummaryrefslogtreecommitdiff
path: root/Java/Beginer training/src/Training.java
blob: 7fb6ca6e8679256dbd53be83681a6f091bbd3b13 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.util.ArrayList;
import java.math.*;

public class Training {
    public static void main(String args[]){
        //PrintFibonacci(7);
        System.out.println(NumberName(6783508));
    }

    public static String NumberName(int num) {
        StringBuilder name = new StringBuilder(num < 0 ? "negative " : "");
        var number_parts = new ArrayList<Integer>();

        while (num != 0) {
            number_parts.add(Math.abs(num % 1000));
            num /= 1000;
        }

        for (int i = number_parts.size() - 1; i > -1; i--){
            int curr_num = number_parts.get(i);

            if ((curr_num + "").length() == 3) {
                name.append(SmallNumName(curr_num / 100)).append(" hundred ");

                curr_num %= 100;
                if (curr_num / 10 == 0) name.append("and ");
            }
            name.append(SmallNumName(curr_num));

            switch (i) {
                case 1: name.append(" thousand "); break;
                case 2: name.append(" million "); break;
                case 3: name.append(" milliard "); break;
            }
        }
        return name.toString();
    }

    private static String SmallNumName(int num) {
        int part = 1;
        switch (num) {
            case 0: return "";
            case 1: return "one";
            case 2: return "two";
            case 3: return "three";
            case 4: return "four";
            case 5: return "five";
            case 6: return "six";
            case 7: return "seven";
            case 8: return "eight";
            case 9: return "nine";

            case 10: return "ten";
            case 11: return "eleven";
            case 12: return "twelve";
            case 13: return "thirteen";
            case 15: return "fifteen";
            case 18: return "eighteen";
            case 14:                part = 4;
            case 16: if (part == 1) part = 6;
            case 17: if (part == 1) part = 7;
            case 19: if (part == 1) part = 9;
                     return SmallNumName(part) + "teen";
        }

        if (num > 20 && num < 100) {
            int f_digit = num / 10;
            StringBuilder name = new StringBuilder();

            switch (f_digit) {
                case 2: name.append("twenty "); break;
                case 3: name.append("thirty "); break;
                case 5: name.append("fifty "); break;
                case 8: name.append("eighty "); break;

                default: name.append(SmallNumName(f_digit)).append("ty "); break;
            }

            return name + SmallNumName(num % 10);
        }
        return "ERR";
    }

    public static void PrintFibonacci (int length) {
        int a = 1, b = 0;
        for (int i = 0; i < length; i++){
            System.out.printf("%d ", a);

            int temp = a;
            a += b;
            b = temp;
        }
    }
}