Skip to content

Commit

Permalink
Merge pull request #4558 from Sal4md3r/solucion-eg-excel
Browse files Browse the repository at this point in the history
Reto #[32] - [Dart]
  • Loading branch information
Roswell468 authored Aug 11, 2023
2 parents 99b26a9 + 77181dc commit b5cbce5
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions Retos/Reto #32 - LA COLUMNA DE EXCEL [Media]/dart/Sal4md3r.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import 'dart:math';

void main() {
const letters = [
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z'
];

int excelColumn(String column) {
int result = 0;

// Si la columna es unica devuelve la letra en la posicion indicada
if (column.split('').length == 1 &&
letters.contains(column.toUpperCase())) {
return letters.indexOf(column.toUpperCase()) + 1;
}

// Si son varias letras divide el string para obtener los caracteres
List arrayResult = column.split('');

// Itera el arreglo para obtener la suma de las posiciones
for (int i = 0; i < arrayResult.length; i++) {
// Obtiene el indice de la letra dentro del arreglo de letras
int indx = letters.indexOf(arrayResult[i]);

// Obtiene el exponente de acuerdo a la posicion del elemento dentro del arreglo
// Formula: (26 ^ (array.length - [indice + 1 ]);
num indexExp = pow(26, arrayResult.length - (i + 1));

//Acumula el resultado del indice de la letra por el exponente correspondiente
//en la variable result
result += (indx + 1) * indexExp.toInt();
}

// Devuelve el resultado de la suma de las letras de acuerdo a su posicion para
// dar el valor de la columna
return result;
}

print(excelColumn('A'));
print(excelColumn('Z'));
print(excelColumn('AA'));
print(excelColumn('CA'));
}

0 comments on commit b5cbce5

Please sign in to comment.