Hex words: Difference between revisions
Content added Content deleted
Puppydrum64 (talk | contribs) m (omits) |
Catskill549 (talk | contribs) (added AWK) |
||
Line 183: | Line 183: | ||
abed: 44013 [ 3 ] |
abed: 44013 [ 3 ] |
||
Found 13 hex words with 4 or more distinct digits |
Found 13 hex words with 4 or more distinct digits |
||
</pre> |
|||
=={{header|AWK}}== |
|||
<lang AWK> |
|||
# syntax: GAWK -f HEX_WORDS.AWK unixdict.txt |
|||
{ nf += NF |
|||
if (length($1) >= 4) { |
|||
if ($0 ~ /^[a-fA-F]{4,}$/) { |
|||
base10 = hex2dec($1) |
|||
dr = digital_root(base10) |
|||
arr[dr " " $1] = base10 |
|||
} |
|||
} |
|||
} |
|||
ENDFILE { |
|||
printf("%s: %d records, %d fields\n\n",FILENAME,FNR,nf) |
|||
} |
|||
END { |
|||
PROCINFO["sorted_in"] = "@ind_str_asc" |
|||
for (i in arr) { |
|||
printf("%-8s %10d \n",i,arr[i]) |
|||
count1++ |
|||
} |
|||
printf("Found %d hex words\n\n",count1) |
|||
PROCINFO["sorted_in"] = "@val_num_desc" |
|||
for (i in arr) { |
|||
if (distinct(substr(i,3)) >= 4) { |
|||
printf("%-8s %10d \n",i,arr[i]) |
|||
count2++ |
|||
} |
|||
} |
|||
printf("Found %d hex words with 4 or more distinct\n\n",count2) |
|||
exit(0) |
|||
} |
|||
function digital_root(n, i,sum) { |
|||
while (1) { |
|||
sum = 0 |
|||
for (i=1; i<=length(n); i++) { |
|||
sum += substr(n,i,1) |
|||
} |
|||
if (sum < 10) { |
|||
break |
|||
} |
|||
n = sum |
|||
} |
|||
return(sum) |
|||
} |
|||
function distinct(str, arr,i) { |
|||
for (i=1; i<=length(str); i++) { |
|||
arr[substr(str,i,1)]++ |
|||
} |
|||
return(length(arr)) |
|||
} |
|||
function hex2dec(s, num) { |
|||
num = index("0123456789ABCDEF",toupper(substr(s,length(s)))) - 1 |
|||
sub(/.$/,"",s) |
|||
return num + (length(s) ? 16*hex2dec(s) : 0) |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
unixdict.txt: 25104 records, 25104 fields |
|||
1 ababa 703162 |
|||
1 abbe 43966 |
|||
1 dada 56026 |
|||
1 deaf 57007 |
|||
1 decade 14600926 |
|||
2 cede 52958 |
|||
2 feed 65261 |
|||
3 abed 44013 |
|||
3 added 712173 |
|||
3 bade 47838 |
|||
4 beebe 782014 |
|||
4 decca 912586 |
|||
5 dade 56030 |
|||
6 bead 48813 |
|||
6 deface 14613198 |
|||
7 babe 47806 |
|||
7 fade 64222 |
|||
8 dead 57005 |
|||
8 efface 15727310 |
|||
8 facade 16435934 |
|||
9 accede 11325150 |
|||
9 beef 48879 |
|||
9 cafe 51966 |
|||
9 dacca 896202 |
|||
9 deed 57069 |
|||
9 face 64206 |
|||
Found 26 hex words |
|||
8 facade 16435934 |
|||
8 efface 15727310 |
|||
6 deface 14613198 |
|||
1 decade 14600926 |
|||
9 accede 11325150 |
|||
4 decca 912586 |
|||
7 fade 64222 |
|||
9 face 64206 |
|||
1 deaf 57007 |
|||
9 cafe 51966 |
|||
6 bead 48813 |
|||
3 bade 47838 |
|||
3 abed 44013 |
|||
Found 13 hex words with 4 or more distinct |
|||
</pre> |
</pre> |
||