Teacup rim text: Difference between revisions

Content deleted Content added
Shuisman (talk | contribs)
Peak (talk | contribs)
Line 1,063:
asp -> spa -> pas
ips -> psi -> sip</pre>
 
=={{header|jq}}==
{{works with|jq}}
'''Works with gojq, the Go implementation of jq''' (*)
 
(*) To run the program below using gojq, change `keys_unsorted` to
`keys`; this slows it down a lot.
 
<lang jq># Output: an array of the words when read around the rim
def read_teacup:
. as $in
| [range(0; length) | $in[.:] + $in[:.] ];
 
# Boolean
def is_teacup_word($dict):
. as $in
| all( range(1; length); . as $i | $dict[ $in[$i:] + $in[:$i] ]) ;
 
# Output: a stream of the eligible teacup words
def teacup_words:
def same_letters:
explode
| .[0] as $first
| all( .[1:][]; . == $first);
 
# Only consider one word in a teacup cycle
def consider: explode | .[0] == min;
 
# Create the dictionary
reduce (inputs
| select(length>2 and (same_letters|not))) as $w ( {};
.[$w]=true )
| . as $dict
| keys[]
| select(consider and is_teacup_word($dict)) ;
 
# The task:
teacup_words
| read_teacup</lang>
{{out}}
Invocation example: jq -nRc -f teacup-rim.jq unixdict.txt
<pre>
["apt","pta","tap"]
["arc","rca","car"]
["ate","tea","eat"]
</pre>
 
 
=={{header|Julia}}==