convertNumberToKurdishWords function

String convertNumberToKurdishWords(
  1. int number
)

Implementation

String convertNumberToKurdishWords(int number) {
  /// MODIFY CODE ONLY BELOW THIS LINE

  if (number == 0) return 'سفر';

  // Maps and arrays for faster access
  final kurdishUnits = [
    'سفر',
    'یەک',
    'دوو',
    'سێ',
    'چوار',
    'پێنج',
    'شەش',
    'حەوت',
    'هەشت',
    'نۆ'
  ];
  final kurdishTens = [
    'دە',
    'بیست',
    'سی',
    'چل',
    'پەنجا',
    'شەست',
    'حەفتا',
    'هەشتا',
    'نەوەد'
  ];
  final specialNumbers = {11: 'یانزە', 12: 'دووانزە'};

  final kurdishHundreds = [
    'سەد',
    'دوو سەد',
    'سێ سەد',
    'چوار سەد',
    'پێنج سەد',
    'شەش سەد',
    'حەوت سەد',
    'هەشت سەد',
    'نۆ سەد'
  ];
  final kurdishThousands = [
    'هەزار',
    'دوو هەزار',
    'سێ هەزار',
    'چوار هەزار',
    'پێنج هەزار',
    'شەش هەزار',
    'حەوت هەزار',
    'هەشت هەزار',
    'نۆ هەزار'
  ];

  String result = '';

  // Handle billions
  if (number >= 1000000000) {
    int billions = number ~/ 1000000000;
    result += '${convertNumberToKurdishWords(billions)} ملیارد';
    number %= 1000000000;
    if (number > 0) result += ' و ';
  }

  // Handle millions
  if (number >= 1000000) {
    int millions = number ~/ 1000000;
    result += '${convertNumberToKurdishWords(millions)} ملیۆن';
    number %= 1000000;
    if (number > 0) result += ' و ';
  }

  // Handle thousands
  if (number >= 1000) {
    int thousands = number ~/ 1000;
    if (thousands < 10) {
      result += kurdishThousands[thousands - 1];
    } else {
      result += '${convertNumberToKurdishWords(thousands)} هەزار';
    }
    number %= 1000;
    if (number > 0) result += ' و ';
  }

  // Handle hundreds
  if (number >= 100) {
    int hundreds = number ~/ 100;
    result += kurdishHundreds[hundreds - 1];
    number %= 100;
    if (number > 0) result += ' و ';
  }

  // Handle numbers between 10 and 19
  if (number >= 10 && number < 20) {
    if (specialNumbers.containsKey(number)) {
      result += specialNumbers[number]!;
    } else {
      result += '${kurdishUnits[number - 10]}زە';
    }
    return result;
  }

  // Handle tens
  if (number >= 20) {
    int tens = number ~/ 10;
    result += kurdishTens[tens - 1];
    number %= 10;
    if (number > 0) result += ' و ';
  }

  // Handle units
  if (number > 0) {
    result += kurdishUnits[number];
  }

  return result;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}