about summary refs log tree commit diff
path: root/zanagrams/zanagrams.sh
blob: 52f82db7bcf10dac57883978a9785e93c2d7f7cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
letters="$1"
dots="$(printf "%s" "$letters" | tr '.[:alpha:]' '.')."
# TODO: Don't allow repeats unless they actually repeat

letters_used_once="$(printf "%s" "$letters" | sed 's/./\0\n/g' | sort | uniq -c | grep ' 1 '| grep -o '[a-z]$' | tr -d '\n')"
letters_used_twice="$(printf "%s" "$letters" | sed 's/./\0\n/g' | sort | uniq -c | grep ' 2 '| grep -o '[a-z]$' | tr -d '\n')"

lengthsort() {
    awk '{ print length, $0 }' | sort -n | awk '{$1=""; print $2}'
}

# cafe is in the dictionary with an accent
cat /etc/dictionaries-common/words | sed 's/é/e/g' | grep -i '^['"$letters"']*$' | grep -v "$dots" | grep .... | onceletters.py "$letters_used_once" | onceletters.py "$letters_used_twice" 2 | nearletters.py "$letters" | lengthsort