"그리드에서 2의 최대 합" 퀴즈를 풀어보세요.
다음 오류를 해결하는 방법을 알 수 없습니다.
뭔가 빠진 것 같은 느낌이 듭니다. 질문을 찾으면 업데이트하여 더 일반적이고 다른 사람들에게도 적용할 수 있습니다.
Line 32: value too great for base (error token is "08")
#!/bin/bash
setup () {
grid=(01 02 03 04 05 06 07 08 07 06 05
12 13 14 15 16 15 14 13 12 11 11
05 06 06 07 07 07 06 06 05 05 04)
n=${#grid[@]}
number_of_lines=$((n / 11))
length_of_line=$1
largest_sum=0
largest_pos=0
}
largest_2 () {
for ((row=0; row < number_of_lines; row++)) {
for ((column=0; column<length_of_line-1; column++)) {
larger_horizontal
if [[ $row -lt $number_of_lines-1 ]]; then
larger_vertical
fi
}
}
}
larger_vertical () {
sum=$((grid[column+row*11]*grid[column+(row+1*11)]))
if [[ $sum -gt $largest_sum ]]; then
largest_sum=$sum
largest_pos=$((column+row*11))
direction=vertical
result=$largest_pos
fi
}
larger_horizontal () {
sum=$((grid[column+(row*11)]*grid[column+1+(row*11)])) # <-- Line 32
if [[ $sum -gt $largest_sum ]]; then
largest_sum=$sum
largest_pos=$((column+(row*11)))
direction=horizontal
result=$largest_pos
fi
}
setup 11
largest_2
printf "\n1. Max: row=$((result / 11 +1)) column= $((result % 11 +1)) direction=$direction\n"
답변1
08
0으로 시작하므로 경우에 따라 8진수로 간주됩니다(숫자가 0에서 7 사이이므로 오류는 로 시작함 08
). 해결책: 선행 0을 출력해야 하는 경우 0을 필터링합니다 printf %02d
.