Преобразование массива ["null", "0", "1", "2", "2", "1", "0"] в ["1, '1.1', '1.1.1', 'a',«б», «1.1.2», «1.2»] - PullRequest
0 голосов
/ 21 сентября 2018

Я уже потратил все попытки решить эту проблему.:) и я прошу помощи.


для понимания:

"ноль" - номер абзаца (-> 1, 2, 3 и т. д.)

"номер"- родительская позиция.первый подпункт (-> 1.1, 2.4 и т. д.), если parent - «ноль», иначе, если parent - «число», второй подпункт (-> 1.1.1, 2.4.2 и т. д.) и еще, если parent - «число» и имееттоже родительское «число», тогда это третий подпункт (a, b, c вместо 1.1.1.1, 1.1.1.2 и т. д.).

т. е.

["null", «0», «1», «2», «2», «1», «0»] до [«1,« 1.1 »,« 1.1.1 »,« a »,« b »,« 1.1 ».2 ',' 1.2 ']

  • "null": первый элемент "null" -> 1
  • "0": второй элемент имеет родителя в позиции 0. (родительский сзначение «null» в старом массиве или «1» в новом массиве) -> первый подпункт -> 1.1
  • «1»: третий элемент имеет родителя в позиции 1. (родитель со значением «0» в старом массивеили "1.1" в новом массиве) -> второй подпункт -> 1.1.1
  • "2": четвертый элемент имеет родителя в позиции 2. (родитель со значением "1" в старом массиве или "1.1.1"в новом массиве) -> третий подпункт -> a вместо 1.1.1.1
  • " 2 ": у пятого элемента родительский элемент в позиции 2. (родительский элемент со значением" 1 "в старом массиве или" 1.1.1"в новом массиве) -> третий подпункт -> a уже был -> b
  • " 1 ": шестой элемент имеет родителя в позиции 1. (родительский элемент со значением" 0 "в старом массиве или" 1.1 "вновый массив) -> второй подпункт -> 1.1.1 уже был -> 1.1.2
  • "0": седьмой элемент имеет родителя в позиции 0. (родительский элемент со значением "null" в старом массиве или "1"в новом массиве) -> первый подпункт -> 1.1 уже был -> 1.2

1 Ответ

0 голосов
/ 23 сентября 2018

! ОБНОВЛЕНИЕ!

Не могу в это поверить, но я это сделал!Вот мой новый код, если он кому-то поможет.

assert testFunction(["null", "0", "0"]) == [1, '1.1', '1.2']
assert testFunction(["null", "0", "1", "2", "null", "4", "5", "6", "null", "8", "9"]) == [1, '1.1', '1.1.1', 'a', 2, '2.1', '2.1.1', 'a', 3, '3.1', '3.1.1']
assert testFunction(["null", "null", "null"]) == [1, 2, 3]
assert testFunction(["null", "null", "1"]) == [1, 2, '2.1']
assert testFunction(["null", "0", "1"]) == [1, '1.1', '1.1.1']
assert testFunction(["null", "0", "null"]) == [1, '1.1', 2]
assert testFunction(["null", "0", "0", "2", "2", "null"]) == [1, '1.1', '1.2', '1.2.1', '1.2.2', 2]
assert testFunction(["null", "0", "1", "2", "2", "2", "2"]) == [1, '1.1', '1.1.1', 'a', 'b', 'c', 'd']
assert testFunction(["null", "0", "1", "2", "2", "1", "0"]) == [1, '1.1', '1.1.1', 'a', 'b', '1.1.2', '1.2']
assert testFunction(["null", "0", "1", "2", "null", "4", "5", "6", "null", "8", "9"]) == [1, '1.1', '1.1.1', 'a', 2, '2.1', '2.1.1', 'a', 3, '3.1', '3.1.1']

def testFunction(array) {
    def count = 1
    def subcount = 1
    char subcountA = 'a'
    def newArray = []
    def value = []

    array.each {
        if (it.isInteger()) {
            value += it as Integer
        }
    }

    def max = value.max()
    if(!max) max = 0

    for(def j = 0 ; j <= max ; j++ ) {
        count = 1
        subcount = 1
        subcountA = 'a'

        for (def i = 0; i < array.size(); i++) {
            def curr_value = array[i]

            if (curr_value == "null") {
                newArray[i] = count
                count++
            }

            if(curr_value == j.toString()) {
                newArray[i] = newArray[j] + "." + subcount
                subcount++

                if(newArray[i].length() > 5) {
                    newArray[i] = subcountA
                    subcountA++
                }
            }
        }
    }

    print(array)
    print(" - ")
    println(newArray)
    return newArray
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...