숫자 목록이 있는데 각 숫자의 숫자를 서로 곱하고 싶습니다. 예를 들어 숫자 1234의 경우 1 X 2 X 3 X 4 = 24입니다.
예를 들어 다음 입력
7675342567
098765342567
1234567890
0987654
234567
8765678
98
0999
09876543
345678
876543
87654
다음 결과가 필요합니다.
7408800
0
0
0
5040
564480
72
0
0
20160
20160
6720
어떻게 진행해야 하나요?
답변1
다음을 수행할 수 있습니다.
<file sed 's/./&*/g;s/*$//' | bc
7408800
0
0
0
5040
564480
72
0
0
20160
20160
6720
GNU를 사용하면 sed
다음과 같이 단순화할 수 있습니다.
<file sed 's/./*&/2g' | bc
답변2
엄밀히 말하면 bash 내에서과다9조가 넘고 변화하고 있습니다(9,223,372,036,854,775,807).
while IFS= read -r
do
res=1
for((i=0;i<${#REPLY};i++))
do
res=$((res * ${REPLY:i:1}))
done
echo "$res"
done < input > output