我已经进行了所有尝试来解决此问题。 :),我寻求帮助。
为了理解:
“空”-段落(-> 1、2、3等)
“数字”-父母的位置。如果父项为“ null”,则第一个子项(-> 1.1、2.4等),否则,如果父项为“ number”,则第二项(-> 1.1.1、2.4.2等),如果父项为“数字”,且具有也是一个父“数字”,那么这是第三项(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”]
答案 0 :(得分:0)
我不敢相信,但是我做到了! 如果有帮助,这是我的新代码。
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
}