숫자의 자릿수를 서로 곱하기

숫자의 자릿수를 서로 곱하기

숫자 목록이 있는데 각 숫자의 숫자를 서로 곱하고 싶습니다. 예를 들어 숫자 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

관련 정보