What's new

Help Hello mga master sa linux (bash programming)

Ryu_

Journeyman
Joined
Dec 6, 2021
Posts
33
Reaction
11
Points
27
Need help po sa pag figure ng algorithm na to using bash, bago lang ako sa language na to

Supposed:

array=[82, 170, 43, 140, 24, 16, 190]
start=50

Gusto ko sana kunin yung result nito:


Sa start(50) magsisimula ang operation, kukuhanin yung difference from one element at yung kasunod nya. Then sum ng lahat

(start-82)+(82-170)+(170-43)+(43-140)+(140-24)+(24-16)+(16-190)

Pero sa bawat pagkuha ng difference dapat laging una yung larger number para hindi negative yung makuha, so ganito po yung arrangement:

(82-start)+(170-82)+(170-43)+(140-43)+(140-24)+(24-16)+(160-16)

I hope matulungan ninyo ko mga boss :)
 
Last edited:
eto bos:

Bash:
#!/usr/bin/env bash

MYARRAY=(82 170 43 140 24 16 190)
ARRAYSIZE="${#MYARRAY[@]}"
START=50
OUTPUT=0

for ((i=0; i<${ARRAYSIZE}; i++)) {
    [[ i -eq 0 && ${MYARRAY[i]} -gt $START ]] && (( OUTPUT=${MYARRAY[i]} - $START )) || (( OUTPUT=$START - ${MYARRAY[i]} ))
    x=$((i+1))
    if [[ x -lt ${ARRAYSIZE} ]]; then
        [[ ${MYARRAY[i]} -gt ${MYARRAY[x]} ]] && (( OUTPUT+=${MYARRAY[i]} - ${MYARRAY[x]} )) || (( OUTPUT+=${MYARRAY[x]} - ${MYARRAY[i]} ))
    fi
}

echo "OUTPUT: ${OUTPUT}"
 
eto bos:

Bash:
#!/usr/bin/env bash

MYARRAY=(82 170 43 140 24 16 190)
ARRAYSIZE="${#MYARRAY[@]}"
START=50
OUTPUT=0

for ((i=0; i<${ARRAYSIZE}; i++)) {
    [[ i -eq 0 && ${MYARRAY[i]} -gt $START ]] && (( OUTPUT=${MYARRAY[i]} - $START )) || (( OUTPUT=$START - ${MYARRAY[i]} ))
    x=$((i+1))
    if [[ x -lt ${ARRAYSIZE} ]]; then
        [[ ${MYARRAY[i]} -gt ${MYARRAY[x]} ]] && (( OUTPUT+=${MYARRAY[i]} - ${MYARRAY[x]} )) || (( OUTPUT+=${MYARRAY[x]} - ${MYARRAY[i]} ))
    fi
}

echo "OUTPUT: ${OUTPUT}"
na figure ko na pero haba ng code ko hahaha pero salamat pa rin, may bago ako natutunan sayo boss
 
Last edited:
Back
Top