RosettaCodeData/Task/Anagrams/UNIX-Shell/anagrams.sh

37 lines
972 B
Bash

http_get_body() {
local host=$1
local uri=$2
exec 5<> /dev/tcp/$host/80
printf >&5 "%s\r\n" "GET $uri HTTP/1.1" "Host: $host" "Connection: close" ""
mapfile -t -u5
local lines=( "${MAPFILE[@]//$'\r'}" )
local i=0 found=0
for (( ; found == 0; i++ )); do
[[ -z ${lines[i]} ]] && (( found++ ))
done
printf "%s\n" "${lines[@]:i}"
exec 5>&-
}
declare -A wordlist
while read -r word; do
uniq_letters=( $(for ((i=0; i<${#word}; i++)); do echo "${word:i:1}"; done | sort) )
wordlist["${uniq_letters[*]}"]+="$word "
done < <( http_get_body wiki.puzzlers.org /pub/wordlists/unixdict.txt )
maxlen=0
maxwords=()
for key in "${!wordlist[@]}"; do
words=( ${wordlist[$key]} )
if (( ${#words[@]} > maxlen )); then
maxlen=${#words[@]}
maxwords=( "${wordlist["$key"]}" )
elif (( ${#words[@]} == maxlen )); then
maxwords+=( "${wordlist[$key]}" )
fi
done
printf "%s\n" "${maxwords[@]}"