Showing posts with label Dart. Show all posts
Showing posts with label Dart. Show all posts

Cara convert angka romawi ke angka desimal dengan bahasa pemrograman dart

Di tutorial kali ini saya ingin membagi sedikit ilmu bagaimana cara convert angka romawi ke angka desimal menggunakan bahasa pemrograman Dart,




Adapun code nya bisa dilihat dibawah ini:

void main() {
  print(convertRomawiToNumber("III"));
}

String convertRomawiToNumber(String? romawi) {
  Map<String, int> romawiToNumber = {
    "I": 1,
    "V": 5,
    "X": 10,
    "L": 50,
    "C": 100,
    "D": 500,
    "M": 1000
  };
  int total = 0;
  List<int> listRomawiToNumber = [];

  //cek invalid INPUT
  if (romawi == null || romawi.length < 1) {
    return "INVALID INPUT";
  }
  
  //cek invalid ROMAWI
  for (int i = 0; i < romawi.length; i++) {
    if (!(romawiToNumber.keys.toList().contains(romawi.split("")[i]))) {
      return "INVALID ROMAWI";
    }
  }

  //Convert ROMAWI TO NUMBER
  for (int i = 0; i < romawi.length; i++) {
    listRomawiToNumber.add(romawiToNumber[romawi.split("")[i]]!);
  }

  //SET DEFAULT TOTAL WITH LAST VALUE LIST RESULT ROMAWI TO NUMBER
  total += listRomawiToNumber[listRomawiToNumber.length - 1];
  
  //LOGIC CHECK ROMAWI
  for (int i = listRomawiToNumber.length - 1; i >= 0; i--) {
    if (i >= 1) {
      if (listRomawiToNumber[i] <= listRomawiToNumber[i - 1]) {
        total += listRomawiToNumber[i - 1];
      } else {
        total -= listRomawiToNumber[i - 1];
      }
    }
  }
  
  //RETURN TOTAL
  return total.toString();
}

Dari kode diatas jika dijalankan maka akan keluar hasil convert angka romawi III menjadi angka desimal 3