Az adatok számok formájában érkeznek. pl. 330. Ez az iránytű szerint ÉÉNY-nak felel meg. Ezeket a számokat szeretném szöveges formába átalakítani. Hogyan álljak neki ha a bashban keresem a megoldást?
- 1216 megtekintés
Hozzászólások
- A hozzászóláshoz be kell jelentkezni
Ááá. Ez így elég bonyi, rengeteg if then. Valami round, vagy abs-re gondolnék. Nincs valakinek készen egy ilyesmi sora?
- A hozzászóláshoz be kell jelentkezni
8db kisebb és nagyobb összehasonlítás.
Nem tudom, hogy átláthatóbban megoldható-e kevesebb sorból...
- A hozzászóláshoz be kell jelentkezni
Challenge accepted, mondjuk bashhez már későn van, de ilyet csak tud...
function deg2txt(deg){
var fokok = "É ÉÉK ÉK KÉK K KDK DK DDK D DDNY DNY NYDNY NY NYÉNY ÉNY ÉÉNY".split(" ");
var idx = Math.floor((deg % 360)/ 360.0 * fokok.length);
return fokok[idx];
}
window.alert(deg2txt(345));
- A hozzászóláshoz be kell jelentkezni
#!/bin/bash
[[ -z "${1##*[!0-9]*}" || ${1} -gt 359 ]] && echo "Invaild input" && exit 1
[[ ${1} -le 45 || ${1} -gt 315 ]] && echo "N" && exit 0
[[ ${1} -le 135 ]] && echo "E" && exit 0
[[ ${1} -le 225 ]] && echo "S" && exit 0
[[ ${1} -le 315 ]] && echo "W"
--
Debian Linux rulez... :D
RIP Ian Murdock
- A hozzászóláshoz be kell jelentkezni
Így oldottam meg, mivel ez matek. Bedobtam egy tömbbe, és kiszámoltatom. Lebegőpontos számítás helyett kerekítve lett, mind a bemenet mind a kimenet.
windD="$1"
compass=( É ÉÉK ÉK KÉK K KDK DK DDK D DDNY DNY NYDNY NY NYÉNY ÉNY ÉÉNY )
((roundedwindD="${windD} * 100 + 1125 "))
((index="${roundedwindD} / 2250 %16 "))
direction="${compass[${index}]}"
echo "direction=${direction}"
- A hozzászóláshoz be kell jelentkezni
Ez tipikusan nem kódolási, hanem elvi munka.
Remélem, kinövöd a pánik-fórum-megoldom. Sorozatot idővel.
- A hozzászóláshoz be kell jelentkezni