From e173839c44257d0187bb2ec087124db6e2ecde99 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Wed, 31 Jul 2019 15:46:56 +0300 Subject: Optimised Number names code --- .../out/production/Number_Names/Program.class | Bin 4939 -> 5161 bytes Java/Number_Names/src/Program.java | 89 ++++++++------------- Python/.idea/workspace.xml | 23 +++--- Python/Beginner training/Tasks.py | 29 ++++++- 4 files changed, 73 insertions(+), 68 deletions(-) diff --git a/Java/Number_Names/out/production/Number_Names/Program.class b/Java/Number_Names/out/production/Number_Names/Program.class index 20d05f5..90c27c9 100644 Binary files a/Java/Number_Names/out/production/Number_Names/Program.class and b/Java/Number_Names/out/production/Number_Names/Program.class differ diff --git a/Java/Number_Names/src/Program.java b/Java/Number_Names/src/Program.java index ed9ef79..6dabf73 100644 --- a/Java/Number_Names/src/Program.java +++ b/Java/Number_Names/src/Program.java @@ -47,63 +47,44 @@ public class Program { } name.append(SmallNumberName((int)curr_num)); + boolean to_determine = true; switch (i) { - case 1: - if (number_parts.get(1) != 0) { - name.append(" thousand"); - - if (number_parts.get(0) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - - case 2: - if (number_parts.get(2) != 0) { - name.append(" million"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - - case 3: - if (number_parts.get(3) != 0) { - name.append(" milliard"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - case 4: - if (number_parts.get(4) != 0) { - name.append(" billion"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - case 5: - if (number_parts.get(5) != 0) { - name.append(" billiard"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0 || number_parts.get(4) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; case 6: - if (number_parts.get(6) != 0) { + if (number_parts.get(6) != 0) { //to_determine is always true when it reaches here name.append(" trillion"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0 || number_parts.get(4) != 0 || number_parts.get(5) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; + to_determine = false; + } + case 5: + if (number_parts.get(5) != 0 && to_determine) { + name.append(" billiard"); + to_determine = false; + } + case 4: + if (number_parts.get(4) != 0 && to_determine) { + name.append(" billion"); + to_determine = false; + } + case 3: + if (number_parts.get(3) != 0 && to_determine) { + name.append(" milliard"); + to_determine = false; + } + case 2: + if (number_parts.get(2) != 0 && to_determine) { + name.append(" million"); + to_determine = false; + } + case 1: + if (number_parts.get(1) != 0 && to_determine) { + name.append(" thousand"); + to_determine = false; + } + + if (number_parts.subList(0, i).stream().anyMatch(n -> n != 0) && !to_determine) { + if (number_parts.get(0) / 100 == 0) name.append(" and "); + else name.append(", "); + } + break; } } return name.toString(); diff --git a/Python/.idea/workspace.xml b/Python/.idea/workspace.xml index ec04b64..7b14add 100644 --- a/Python/.idea/workspace.xml +++ b/Python/.idea/workspace.xml @@ -2,10 +2,8 @@ - - - + @@ -53,7 +52,7 @@ - + @@ -174,9 +173,9 @@ -