Raiz Quadrada (Square Root) para Bash
Publicado por Sergio Spoladore 06/11/2006
[ Hits: 9.320 ]
Homepage: http://yetlinux.blogspot.com
Este raro script calcula a raiz quadrada de um número natural entre 0 e 2^63 - 1. Caso ultrapasse este valor, haverá erro de cálculo. Creio ter corrigido todos os bugs. Serve como exercício de programação.
Deixo que vocês o compreendam.
#!/bin/bash
verif (){
str1="$1"
[[ -z "$str1" ]] && {
echo "Use $0 <numero>";
echo "<numero> entre 0 e 9223372036854775807.";
echo "Caso ultrapasse, havera erro de calculo.";
exit 1;
}
str2=${str1//[0123456789]/}
[[ -n "$str2" ]] && {
echo "Use somente digitos de 0 a 9."
exit 1;
}
}
cortazero(){
a1=$1;
while [ "$a1" != "$b1" ]; do
b1=$a1;
a1=${a1##0};
done;
echo $a1;
}
sqrt(){
tmp1=$1;
[[ $((${#tmp1}%2)) -eq 1 ]] && tmp1='0'$tmp1;
j=0;
rq='0';
rt='';
while [ -n "${tmp1:$j:2}" ]; do
rt=$rt${tmp1:$j:2};
rt=`cortazero $rt`;
[[ -z "$rt" ]] && rt='0';
rq=`cortazero $rq`;
[[ -z "$rq" ]] && rq='0';
for ((i=1;i<=10;i++));do
[[ $rt -lt $(( (`cortazero $((2*$rq))`$i) *$i)) ]] && {
rt=$((rt-(`cortazero $((2*$rq))`$((i-1)))*$((i-1))));
rq=$rq$((i-1));
break;
}
done;
let j+=2;
done;
rq=`cortazero $rq`;
[[ -z "$rq" ]] && rq='0';
echo $rq;
}
verif $1;
sqrt $1;
Procurando um padrão num arquivo
Instalação do Microsoft Edge no Linux
package maker para o slackware
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
Contorno de BUG do "color picker" para COSMIC Desktop
Pós Instalação do POP! OS 24.04
Contorno para BUG de som no COSMIC Desktop
Pfsense inacessivel após um periodo de tempo [RESOLVIDO] (3)









