Как то так?
Это не очень красивый код, но он должен передавать намерение ...
[".15", "7..", "402", "..3"].permutations()*.join()*.replaceAll('\\.\\.*',',')*.split(',')*.collect{it.getChars().inject(0){a,b->a+ (new Integer(b as String))}}
Редактировать: изменил код, чтобы он работал для всего массива перестановок, а не только для одного элемента. Преобразование типов неуклюже, код @tim_yates намного чище.
Код работает следующим образом:
для каждого подмассива перестановки:
- Объединить массив в одну строку
- Заменить все последующие
.
одним ,
- Разделить строку на
,
- преобразовать все символы в этой строке в целые числа и сложить их, используя метод
inject
Теперь я не знаю, нужно ли вам это, поскольку я не знаю исходную проблему.