Hex words: Difference between revisions
Content added Content deleted
Catskill549 (talk | contribs) (added AWK) |
|||
Line 358: | Line 358: | ||
13 such words found which contain 4 or more different digits. |
13 such words found which contain 4 or more different digits. |
||
</pre> |
</pre> |
||
=={{header|jq}}== |
|||
{{works with|jq}} |
|||
'''Works with gojq, the Go implementation of jq''' |
|||
'''Preliminaries''' |
|||
<lang jq>def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] + .; |
|||
# . may be a decimal number or a string representing a decimal number |
|||
def digital_root: |
|||
# string-only version |
|||
def dr: |
|||
# state: [mdr, persist] |
|||
until( .[0] | length == 1; |
|||
[ (.[0] | explode | map(.-48) | add | tostring), .[1] + 1 ] |
|||
); |
|||
[tostring, 0] | dr | .[0] | tonumber; |
|||
# lowercase a-f |
|||
def isHexWord: |
|||
all(explode[]; 97 <= . and . <= 102); |
|||
# Input: a valid hex number (all lowercase) |
|||
def hex2i: |
|||
def toi: if . >= 87 then .-87 else . - 48 end; |
|||
reduce (explode | map(toi) | reverse[]) as $i ([1, 0]; # [power, sum] |
|||
.[1] += $i * .[0] |
|||
| .[0] *= 16 ) |
|||
| .[1]; </lang> |
|||
'''The Task''' |
|||
<lang jq>def task: |
|||
def format: "\(.[0]|lpad(8)) -> \(.[1]|lpad(9)) -> \(.[2])"; |
|||
INDEX(inputs | select(length>=4 and isHexWord); .) |
|||
| reduce keys_unsorted[] as $word ([]; |
|||
($word | hex2i) as $num |
|||
| ($num | digital_root) as $dr |
|||
| . + [[ $word, $num, $dr]]) |
|||
| sort_by( .[-1] ) |
|||
| . as $details |
|||
| (reduce .[] as $line ([]; |
|||
if $line[0] | explode | unique | length >= 4 |
|||
then . + [$line] else . end)) as $digits4 |
|||
| "\($details|length) hex words with 4 or more letters were found:", |
|||
($details[] | format), |
|||
"", |
|||
"\($digits4|length) such words contain 4 or more different digits:", |
|||
(($digits4|sort_by(.[1])|reverse[] ) | format) ; |
|||
task</lang> |
|||
{{out}} |
|||
'''Invocation''' |
|||
<pre> |
|||
< unixdict.txt jq -Rrn -f rc-hex-words.jq |
|||
</pre> |
|||
<pre> |
|||
26 hex words with 4 or more letters were found: |
|||
ababa -> 703162 -> 1 |
|||
abbe -> 43966 -> 1 |
|||
dada -> 56026 -> 1 |
|||
deaf -> 57007 -> 1 |
|||
decade -> 14600926 -> 1 |
|||
cede -> 52958 -> 2 |
|||
feed -> 65261 -> 2 |
|||
abed -> 44013 -> 3 |
|||
added -> 712173 -> 3 |
|||
bade -> 47838 -> 3 |
|||
beebe -> 782014 -> 4 |
|||
decca -> 912586 -> 4 |
|||
dade -> 56030 -> 5 |
|||
bead -> 48813 -> 6 |
|||
deface -> 14613198 -> 6 |
|||
babe -> 47806 -> 7 |
|||
fade -> 64222 -> 7 |
|||
dead -> 57005 -> 8 |
|||
efface -> 15727310 -> 8 |
|||
facade -> 16435934 -> 8 |
|||
accede -> 11325150 -> 9 |
|||
beef -> 48879 -> 9 |
|||
cafe -> 51966 -> 9 |
|||
dacca -> 896202 -> 9 |
|||
deed -> 57069 -> 9 |
|||
face -> 64206 -> 9 |
|||
13 such words contain 4 or more different digits: |
|||
facade -> 16435934 -> 8 |
|||
efface -> 15727310 -> 8 |
|||
deface -> 14613198 -> 6 |
|||
decade -> 14600926 -> 1 |
|||
accede -> 11325150 -> 9 |
|||
decca -> 912586 -> 4 |
|||
fade -> 64222 -> 7 |
|||
face -> 64206 -> 9 |
|||
deaf -> 57007 -> 1 |
|||
cafe -> 51966 -> 9 |
|||
bead -> 48813 -> 6 |
|||
bade -> 47838 -> 3 |
|||
abed -> 44013 -> 3 |
|||
</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |