text:
Divide them all
A Math.SE user have a funny game explained as such:

Pick a random positive integer X.
Add +1, 0, -1 to make it divisible by 3Keep track of how much you've added and subtracted. That is your "score"..
Divide by 3 to create a new X.
Repeat steps 2 and 3 until you reach one.

I'm expecting the shortest code to give the correct score and the decomposition (as a list of the following values [+1;0;-1]) given an integer input.
Input => Expected score => Expected decomposition #explanation
12 => -1 => 0-1 #(12/3 => (4 - 1) / 3 = 1
                             ^^^
25 => 0 => -1+10  (25 - 1) / 3 => (8 + 1) / 3 => (3 + 0) / 3 => 1
                      ^^^            ^^^            ^^^

9320 => -1 => +1+1-10-1+1-1-1 #(9320 + 1) / 3 => (3107 + 1) / 3 => (1036 - 1) / 3 => (345 + 0) /3 => (115 - 1) / 3 => (38 + 1) / 3 => (13 - 1) / 3 => (4 - 1) / 3
                                     ^^^               ^^^               ^^^              ^^^             ^^^             ^^^             ^^^            ^^^

Related. (This challenge basically asks for the sum of digits of the balanced ternary representation.)

@MartinEnder it even sounds like a dup... I should enlarge my vocabulary in order to find them more easily. Thanks.

I personally don't think it's a dupe because the expected output isn't the bal-ternary representation so you still have to do a slightly different task. Very related though, I agree.

Does our code have to include the "pick a random positive integer" part or can we take the number as input?

@nimi I think that "given an integer input" overrides what's said in the quote from Math.SE.

Suggested test cases: 121: [ -1, -1, -1, -1 ] --> -4, 122: [ 1, 1, 1, 1, 1 ] --> 5

@HyperNeutrino, asking for the decomposition and its sum is a pretty minor variant on asking for the decomposition.

@PeterTaylor I may be misinterpreting the challenge, but asking for the decomposition and asking for the digits seem like completely different tasks to me...

@Arnauld you're right about 12, and the fact that the ouptut code must give both score & decomposition. I'll make my next questions proof-read

@HyperNeutrino, isn't the decomposition just the digits? Actually, on trying it, it seems to be the digits (except the leading +1) reversed. That's possibly accumulating enough trivial modifications (skip the first digit, reverse, also output the sum) to add up to something non-trivial, but it's still borderline.

@PeterTaylor I personally think that finding the decomposition on its own is much more competitive than finding the digits and then doing that whole reversal procedure, but it is a very similar challenge and doesn't really add too much new to the existing challenge

JavaScript (ES6), 46 bytes
Returns an array where:

the last term is the sum
all preceding terms are the decomposition

f=(n,s=0)=>n-1?[k=1-++n%3,...f(n/3|0,s+k)]:[s]

Try it online!

Unless I'm misreading the spec/test cases, it doesn't look like you need to include the total in the output.

@Shaggy I don't really know for sure. I've asked the OP.

Python 3, 53 bytes
Credit to Mr.Xcoder
f=lambda i,*s:i>1and f(-~i//3,*s,1--~i%3)or[s,sum(s)]

Try it online!
Python 2, 55 bytes
f=lambda i,s=[]:i>1and f(-~i/3,s+[1--~i%3])or[s,sum(s)]

Try it online!
Python 2, 58 bytes
i,s=input(),[]
while~-i:s+=1--~i%3,;i=-~i/3
print s,sum(s)

Try it online!
Returns list with decomposition and sum of it

53 bytes in Python 3 using recursion. The Python 2 equivalent recursive function should be about 55 bytes long. Keeping this as a Python 2 full program, while~-i saves a byte.

@Mr.Xcoder Thanks! Don't you want to post Python 3 solution as separate answer?

You're welcome! No, I'm good. Go ahead and use it however you want.

@Mr.Xcoder So there will be all solutions with credit to you :D


text:
Zero sum in python 2.7
Write a function in Python 2.7 that takes a list of integers as an argument. It should return True or False depending on whether there are any 2 integers in the argument list that sum to zero.
[4,-4,9,6,5]

True

[6,5,-3,2]

False

Welcome to PPCG! That's a nice challenge, but unfortunately, we don't like challenges that allow only one language. This challenge is also missing a winning criteria. I'd recommend you to look at few other of challenges there and use our sandbox next time.

I'm guessing this must be code golf as I can't see any other reasonable criteria. (I added the code golf tag, but if that is wrong feel free to specify the correct winning criteria  and remove it.)

@Arlene what should we return for [0]?

Closely related

@JonathanAllan Please stop editing programming questions to make them on-topic. Either OP edit the winning criteria in themselves or we close (and optionally someone else repost) it.

@user202729 I didn't think there was any harm, meta read and noted - it makes sense; thanks

I think the challenge is too easy

Python 2, 32 bytes
lambda a:any(-n in a for n in a)

Try it online!

R, 23 bytes
function(x)any(-x%in%x)

Try it online!
If full programs are allowed:
R, 21 bytes
any((x=scan())%in%-x)

Try it online!

Yes any language is fine. Sorry I am new to this. Thank you!

@Arlene Thank you and welcome to PPCG!

@Arlene Please edit your question to reflect the fact that all languages are allowed. Also if you are interested in the shortest solution, I suggest you tag your question [tag:code-golf]

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
The Farfallino Alphabet
The Task
Your task is to create a program or a function that, given a sentence, outputs it translated to the Farfallino language. 'Y' is treated as a consonant.
The usual rules for farfallino alphabet are based on the substitution of each vowel with a 3 letter sequence where the vowel itself is repeated with an interceding f.
house → hofoufusefe
lake → lafakefe
star → stafar
king → kifing
search → sefeafarch

More examples:
Hello World

Hefellofo Woforld

Code golfs are nice, yuppy!

Cofodefe gofolfs afarefe nificefe, yufuppy!

When you come across a double vowel syllable (the vowels must match, like door, boots, reed, etc.) you must omit the 2nd vowel.
This rule is mandatory
Cool game

WRONG: Cofoofol gafamefe
RIGHT: Cofofol gafamefe

More examples, again:
Aardvark → Afafardvafark
Artisan → Afartifisafan
ASCII → AfaSCIfifi
NASA → NAfaSAfa
Oobleck → Ofofobleck
I'M DEAD! → Ifi'M DEfeAfaD!
Abc → Afabc

Input
Your input must be an ASCII string.
>2 consecutive vowels are not special. You have to handle 2 consecutive vowels:
AAAH → AfafaAfaH
AAAAH → AfafaAfafaH

How to win
The shortest source code in bytes for each language wins.
1, 2, 3... go!

Reminds me of l'argot louchébem

Very similar.

Do we need to handle upper and lowercase letters?  And if so, what should we get for OoOoO?

Too bad the sandbox wasn't used first. This one could have been whipped into shape in advance. I don't think the challenge is interesting enough without the double vowel requirement. It's a basic regular expression/substitution without much room for ingenuity.

At least one answer converts the vowels to lowecase (e.g. Anabel -> afanafabefel). Is this allowed?

I've updated the explanation for more clarity about the input string. @EriktheOutgolfer No. The input string should not be altered.

So I can't take Anabel to AfAnafabefel?

Changing a challenge's spec to invalidate existing solutions is an automatic -1 from me. I'd -1 a second time, if I could, for not bothering to inform those that had posted those solutions.

This reminds me of Ubbi Dubbi

Couple of things: 1) Oobleck → Ofofoblefeck not Ofofobleck 2) AfaSCIfifi, AfafaAfaH, and AfafaAfafaH are internally inconsistent. They should be either AfaSCIfifi, AfafafaH, and AfafafafaH or AfaSCIfiIfi, AfaAfaAfaH, and
AfaAfaAfaAfaH

I went through and tested every answer. Right now, none of them pass the AAAH → AfafaAfaH test case you added at the end. Since your edits have invalidated every single answer and the spec is still not entirely clear (why is it AfafaAfaH and not AfAfaAfaH?), I am going to close this question.

This challenge is being discussed on meta

Japt, v2.0a0, 7 bytes
r\v_²íf

Try it

Explanation
r           :Replace
 \v         :/[AEIOU]/gi
   _        :Pass each match through a function
    ²       :  Duplicate
     íf     :  Interleave "f"

Note: This solution was posted before the "bonus" of handling double vowels was made a requirement and before the (apparent) requirement that when repeating an uppercase vowel the second occurrence should be lowercased. I don't much feel like wasting time on a challenge whose spec is constantly changing and invalidating the solutions that have already been posted, nor do I feel I should be expected to sacrifice 90 rep by deleting a solution that was valid at the time of posting.

Whoops, you answered before it was made mandatory. My bad.

Unfortunately, the double-vowel rule became mandatory, invalidating this answer.

JavaScript (ES6), 67 bytes

f=
s=>s.replace(/([aeiou])\1*/gi,s=>[s[0],...s.toLowerCase()].join`f`)
<input oninput=o.textContent=f(this.value)><pre id=o>

Includes the double vowel handling. Edit: Includes upper case too. Try Aardvark.

@3D1T0R Well, I was waiting for clarification from the OP, but I guess this will do for now.

It would be nice to have it edited into the post, but OP did say in a comment @ngn I'd say the first one si the correct one. The input entered shouldn't impact the program imho so keep it simple referring to ngn's comment @Cris how does "Abc" translate to Farfallino? "Afabc", "AfAbc", or "AFAbc"?. I'd take this as meaning that the way you now treat them is correct.

05AB1E, 27 bytes
'fžMDu+DŠδ.ø˜‡γεDÙlžMsåiÙ}?

Try it online!
Just a temporary fix for handling double vowels. I'll try to shorten this after my finals. Boo to rule changes!
05AB1E, 14 bytes
'fžMDu+DŠδ.ø˜‡

Try it online!
If we only need to handle lowercase input, then this is 11 bytes.
How it works

'f pushes the character literal f to the stack
žMDu+D yields aeiouAEIOU; in the 11-byte version, it pushes aeiou to the stack; the leading D duplicates it (that is, it pushes two copies of it to the stack).
Šδ.ø˜ surrounds f with each vowel in the second copy
‡ performs the transliteration of the input from the first copy of the vowels to the second copy, the one in which all vowels surround a single f

This is incorrect for "Cool Game".  It produces "Cofoofol gafamefe" instead of "Cofofol gafamefe".

I see that is due to spec changes. I hadn't noticed the changes before, I will fix this later when I get back home.

I wouldn't have mentioned it if I'd noticed the change at the time.  So it goes.

Jelly, 22 bytes
;”f;ƊeØc$¡€F;⁷ḟ⁹fØc¤¥Ɲ

Try it online!
Handles the extra (now required) feature.
Jelly, 11 bytes
;”f;ƊeØc$¡€

Try it online!
Doesn't handle the double vowel feature.
;”f;ƊeØc$¡€
          €  For each character in the input, do the following.
         ¡   If:
     e       the character is in...
      Øc     the list 'aeiouAEIOU'
        $    (connects e and Øc into a single monad)
             then:
;            append
 ”f          the letter f
   ;         and append the initial character.
    Ɗ        Group ;”f; into a single monad.

Retina, 34 30 bytes
i`[aeiou]
$0f$l
([aeiou])\1
$1

Try it online!
First time using Retina...
-2 bytes thanks to Kevin Cruijssen
-2 bytes thanks to PunPun1000

You can remove the two trailing new-lines to make it 32 bytes. Everything else would be the same as how I would post it if you hadn't already, so +1 from me.

@KevinCruijssen Thanks!

You can remove the parentheses in the first line and change the $1 to $0 in the second line (entire match instead of first group) for -2 bytes

You'll probably want to add a $l to fix the Abc case.

@PunPun1000 Thank you for the tip!

Python 2, 80 77 bytes
lambda s:''.join(map(lambda c,C:c+('f'+c*(c!=C))*(c in'aeiouAEIOU'),s,s[1:]))

Try it online!

Saved:

-3 bytes, thanks to ovs.

Java 8, 68 bytes
s->s.replaceAll("([aeiou])","$1f$1").replaceAll("([aeiou])\\1","$1")

Try it online.
Or 77 bytes if we have to handle uppercase vowels as well:
s->s.replaceAll("(?i)([aeiou])","$1f$1").replaceAll("([AEIOUaeiou])\\1","$1")

Try it online.
Explanation:
s->                             // Method with String as both parameter and return-type
  s.replaceAll("([aeiou])",     //  Replace every vowel with:
               "$1f$1")         //  the vowel, 'f', the vowel appended to each other
   .replaceAll("([aeiou])\\1",  //  Then replace every duplicated vowels
               "$1")            //  to a single one

Prolog (SWI), 177 163 155 bytes
A+B:-append(A,B).
S-[H|T]-R:-S-T-Q,([I,[H,H],K]+Q,K-[H]-L,[I,[H,102,H,102,H],L]+R;[I,[H],K]+Q,K-[H]-L,[I,[H,102,H],L]+R;R=Q).
R-_-R.
S-R:-S-`aeiouAEIOU`-R.

Try it online!

Red, 81 bytes
func[s][foreach c{aoeiu}[replace/all replace/all s c rejoin[c"f"c]rejoin[c c]c]s]

Lowercase vowels only - it's much shorter now without using parse.
Try it online!
Red, 132 bytes
func[s][v: charset["aoeiuAOEIU"]parse s[any[copy n v n(prin rejoin[n"f"n"f"n])|
copy n v(prin rejoin[n"f"n])| copy n skip(prin n)]]]

Try it online!

Python 2, 82 76 bytes
i=input()
for x in"aeiouAEIOU":i=i.replace(x,x+"f"+x).replace(x*2,x)
print i

Try it online!
Actually shorter to use 2 replaces rather than the split and join that was there previously.
If we are required to have "Abc" output "Afabc" instead of "AfAbc" then that costs another 8 bytes...
i=input()
for x in"aeiouAEIOU":i=i.replace(x,x+"f"+x.lower()).replace(x*2,x)
print i

Try it online!

C# (.NET Core), 102 bytes
102 bytes
s=>string.Concat(s.Select((c,i)=>c+("aeiouAEIOU".Contains(c)?"f"+(++i<s.Length&&s[i]==c?"":c+""):"")))

Try it online!
Linq version, looking for improvement :)
132 bytes
s=>{var r="";int l=s.Length,i=0;for(;i<l;){var c=s[i];r+=c+("aeiouAEIOU".Contains(s[i++])?"f"+(i<l&&s[i]==c?"":c+""):"");}return r;}

Try it online!
flat C# solution, looking for improvement :)

Excel, 218 bytes
Pretty blunt:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"a","afa"),"e","efe"),"i","ifi"),"o","ofo"),"u","ufu"),"aa","a"),"ee","e"),"ii","i"),"oo","o"),"uu","u")

Substitutes a, e, i, o & u with *f*.  Followed by removing all duplicate vowels in turn.

Perl 5, 40 characters
perl -pe 's/([aeiou])\1?/$1."f\L$1"x length$&/egi'

I've waited a long time to make use of perl's \L regex feature. A long time.

C (gcc), 118 bytes
f(char*s){char*u="aeiou",v[4]={0};for(;*v=v[2]=*s++;)printf("%s%s%s"+!strchr(u,*v|=(*v>64)*32)*4,v+2,"f",*s-*v?v:"");}

Try it online!

104 bytes

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Produce a List of Rotonyms 1
Rotonyms 1
ROT13 ("rotate by 13 places") is a simple letter substitution cipher that replaces a letter with the 13th letter after it, in the alphabet.  So, A becomes N, N becomes A, B <-> O, and so on to M <-> Z.
ROT13('abcdefghijklmnopqrstuvwxyz') == 'nopqrstuvwxyzabcdefghijklm'
A "Rotonym" is a word (pair) that ROT13s into another word (in the same language).
For example:
ROT13('Terra') == 'Green'
The Challenge
Write a program or function that accepts a dictionary/word list and prints or returns a complete list of rotonyms.

Order doesn't matter.
Comparisons should be case-insensitive.  Since the code can accept a dictionary, you can assume it will be passed a lower-case-only dictionary.
Result should be expressed as single words (not the pairs) and contain no duplicates.
This is code-golf.

Example
Given
ask
green
irk
me
terra
vex
you

Return
green
irk
terra
vex

A Real Test
Given
ab aba abba abe abjurer abo acieral acock adoxy advised adviser aefald affeer agena ah aha ahaunch aho ajowan albe alula alypin amesite amidic amidin amylin an ana anakes analogy anan anil ann anorexy ant apaid aparai ar arba arc areek argyle argyria arn arne aro arsheen arshin asaphic assegai atresic audian aum avar avertin avo avoid awesome ba babiism baler balita balk ban bana bar baraca bare batino bauson bawra baywood be beamage beamed bean becuna bedaub beg begrime bel bell ben ber bes beshlik beyond bhang bickern bimane bin birl bizonia bloat blunter bolero bonded bonnie boozer bor borasca boun boxhaul brava bromoil bronc bu bub bucksaw buggy built bullism bunga bunny bunt burion buttery byerite cabinda cadjan cadrans calas calends callus cameist cant capulet carpent cater caution cayuga censor cha chab chack chal chat chatta che chechen chee cheer cheery cheney chevon chian chirr cho chob cholo chopin city clerk clouted clover coach coder codworm coeval coff colic color conopid consul contra coraise corneum coster coueism cougnar couxia cowbind coz crag craggan crax crea creel crete crex crissal cross crowder cub cuba cuculus cullen cullion cur cuvy cymar czarian dabb dalles damson dand darger decapod decream deeping delible demi deworm dhanush dhoon didym diehard dill dineric disglut diss doghole donnish dorab doubled downy drop droshky dubb ducker dudish duit dungan durance ebony ehlite ejam eleven ella elohism eluder en enation endear endew enrut envy er erava erg erikite erne err ers evasive facient faden falisci fant faro fetish figment filite finless fipenny fitchet fiuman flabby flap flirter flyboat fogon foiler footle forgot fra fracas fraghan frank frater freir fu fub fubby fun fundic funt fur fury fusc gangdom ganglia gaonate garbel gast gaul gear geat gel gen gena genny gent genu gerenuk gers ghan ghat ghee gist gledy glee gnar gnat gnawing godpapa gordian gouda gra graddan granter grat greeny grr grummet grutch guacin guesten gul gun guna gunj gur gurl gurr ha hack haler hallage han haught haver he hein hen henotic her hern hetaery hexine hin hippus hiro hirudin hissing hoer hoghood homo hooklet horned howe hundi huspil hydrula hyppish ideally illeck imbed imburse immi impasse incog ing integer iowan iraq irk isobare isocrat istle ithacan ivan ivin ivoried jaunce jerry jitters juergen juha jun june junior jura kalends keacorn kemple kialee kinch kippeen kittul kohen koli komati koniga kulimit la laine lamb lapel laurate led leeward lexia liman linin linten lipan lisper loave lobcock loom luite maestri magiric mahra maimer mannose mano manuao map marcher marcid married mary maun maundy maxim medal meddler mentum merfold mew mho miamia midwise milchy molary molpe moslem mousse mudden mun muricid mysidae mysore myxa na naa nag nakhod namer nan nana navy ne nea neb neon nep nettler newtake nib nine ninon nizamut no nob nobby nodding nodiak non noon nor nourice nowhere nu nub nucleus numeral nun nunnery obe octose odso oenin off ogam ogor oh oho omasum omitter on ona onan one oner oniscus onyx oppidan or ora ore orf orlo orna orotund orphan ort ory osamine ourie outpay ova overget ovey palama paludic panical panisic pavia penk pent perjury perk pern perry phil pho phon phonics pickee picture pien pimpled piously pirl pit platty pledger pollack pomato ponerid poria postic poteye poulter pounce powdry prefer privy profile pross pruner psaltes psylla pub pun punatoo pung punicin puno puny pur purpura purr purre purrel pusscat pyrex pyropen pyropus quader qubba ra rabi rabitic rail rappage rarity re reaal rear rebend redcoat redweed ree rees ref regrasp reluct renin replate reseize residua ret retour retral rheic rhymer rife rifling ripping robing rohuna romanly romic rookish rumor rupial sairve saltant saltery salvo samekh scissel scraw scrubby seafolk seaware seldor sen serer serve setness seton setsman setting settlor sex sexto sh sha shag shave she shedded shel sher sho shool showish shrinal shrip shrove sievy sinus sinusal sirrah sis skither slait sley slicken slinker sloven smoker snag snap snath sneb sniping snithe soiling sort sourer spalax spent spex spidger spirt spiry spryly spyship squalor stilt strive strue styrian sucuriu suevi summary sumpter sundry swahili sylphy sync taccada talao tane tang tanghin tanglad tankert tarazed tarve taxon tealery teaser tecuna tee telical ten teng tercio terral terrify testily tha than thaw the thecate thee theft they thistle thob thole thone thorny thy thymoma timawa tiphead titrate toadess tomnoup tomosis toplike toryess tra trag trah train tran tref tremble triarch trilobe try tubbie tueiron tumored tuna tung tuning turfdom turr tweil tyrr ulcery un una unaloud unfrank unionid unkeyed unlit unmount unoften unpiety unscent unspike unurban unwhig unwon upperch uprid ur ura ure urea urocyon urva usurp uta utopian uva vacancy vacuist valkyr valois vapored vari vat vejoces vend verd vesbite vesicae vex victim vina vitals viva walloon warori warp waucht wearily weblike wedded weftage wha whample whar when whence whites whorish whun wilhelm wincey wog woodlet wouch wuzzer yakona yamp yaru yerava yezdi ym yn za zimme

Return
ab aba abba abe abjurer abo ah aha aho an ana anan anil ann ant ar arba arc arn aro avar avo ba balk ban bana bar bare be bean becuna beg bel ben ber bes bin birl bor brava bu bub cha chab chal chat che chechen chee cheer cheery cho clerk crag crax crea creel crex cub cuba cuvy dhoon en envy er erava erg erne err ers fant faro flap fra freir fu fub fubby fun funt fur fury gel gen gena gent genu gers ghan ghat ghee glee gnar gnat gra grat greeny grr gul gun guna gunj gur gurl gurr ha han he hein hen her hern hin ing iraq irk ivan ivin juha jun june jura la na naa nag nan nana navy ne nea neb neon nep nib nine no nob non noon nor nowhere nu nub nun obe oenin oh oho on ona onan one oner onyx or ora ore orf orna orphan ort ory ova ovey penk pent perk pern perry phil pho phon pub pun pung puno puny pur purpura purr purre purrel pyrex qubba ra rail re rear ree ref renin ret sen serve sh sha shag she shel sho shool snag sneb sync tane tang tee ten teng terral tha than thaw the thee they thy tra trag trah tran tref try tuna tung turr tyrr un una ur ura ure urea urva uva vat vend vex vina viva wha whar when whun yn

May we instead take an uppercase dictionary?

Yes.  My intention with point 2 was to remove case as a consideration, so, either way is fine.

I added a larger test set.  Take a shot at it!

Jelly, 7 bytes
Two bytes were saved by turning this into a function, as suggested by @EriktheOutgolfer.
A function expecting a list of strings in lowercase and returning a list of Jelly strings.
O_5ịØaf

Try it online!
How?
O_5ịØaf    - link taking a list of strings such as ['irk','me','vex']
O          - convert to ASCII codes         --> [[105,114,107], [109,101], [118,101,120]]
 _5        - subtract 5 ((-96 + 13) mod 26) --> [[100,109,102], [104, 96], [113, 96,115]]
    Øa     - yield the lowercase alphabet   --> 'abcdefghijklmnopqrstuvwxyz'
   ị       - pick new letters from there
             (modulo 26)                    --> ['vex','zr','irk']
      f    - filter out elements that are
             not in the original list       --> ['vex','irk']

This also works against the extended test I added!

Attache, 12 bytes
{Rot=>_∩_}

Try it online! (10 chars)
I thought I'd never see the day where Rot came in handy... :D
On Attache's showcase entry, I said that Rot is a residual command from its days of being a joke language. It's default behaviour is Rot13.
Explanation
{Rot=>_∩_}
{        }    anonymous lambda. argument: _
 Rot=>_       calculate all rot-13 shifts of each item in _
       ∩_     and keep only those that were in _ (by using an intersection)

Extended test case
Try it online!
Alternatives
14 bytes: {_&Has\Rot=>_}
14 bytes: {`in&_\Rot=>_}
(Both of these work by filtering using functions.)

This appears to be missing "no" from the extended test.  It might be relevant that "no" is the ROT13 if "ab" which is the first element of the input.

@Umbrella Not sure what you mean. It seems to work just fine. See my edit for the extended test case.

I'm not sure either...  I opened your first link, pasted in the input and compared the output, came up short.  I can see your new link yields the complete result, though.

Python 2, 70 63 bytes
lambda l:l&{''.join(chr((ord(c)-6)%26+97)for c in w)for w in l}

Try it online!

MATL, 16 bytes
tot2Y2t13YSXEXm)

Try it online!
Explanation
The stack is shown upside down, that is, the most recent element is below.
t        % Implicit input: cell array of strings. Duplicate
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
o        % Convert to double. Gives a matrix, right-padding with 0
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
t        % Duplicate
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
2Y2      % Push predefined literal 'abc...xyz'
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        'abc...xyz'
t13YS    % Duplicate. Circularly shift by 13 positions
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        'abc...xyz'
         %        'nop...klm'
XE       % Replace entries in the 1st input that are in the 2nd input by
         % those of the 3rd input
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [97 115 107   0   0; ...; 121 111 117   0   0]
         %        [110 102 120   0   0; ...; 108  98 104   0   0]
Xm       % Ismember-rows: true for rows of 1st input that are in the 2nd
         % STACK: {'ask' 'green' 'irk' 'me' 'terra' 'vex' 'you'}
         %        [false; true; true; false; true; true; false]
)        % Index. Implicit display
         % STACK: {'green' 'irk' 'terra' 'vex'}

APL (Dyalog Unicode), 19 17 bytesSBCS
Anonymous tacit prefix function, taking a list of uppercase words. Assumes ⎕IO (Index Origin) to be 0, which is default on many systems.
⊢∩{⎕A[⍵⍳⍨13⌽⎕A]}¨

Try it online! (edit: now with big word list!)
⊢ the argument's
∩ intersection with
{…}¨ the result of the following function applied to each word (⍵ is the word):
 ⎕A[…] index the uppercase Alphabet with:
  ⍵⍳⍨ the indices of the word into
  13⌽ the rot-13 of
  ⎕A the uppercase Alphabet

Python 2, 40 bytes
lambda l:l&{w.encode('rot13')for w in l}

Try it online!

Python is strange

@ovs OMG. Though, this might be helpful in character-restricted challenges

What magic is this?

JavaScript (Node.js), 59 bytes
Saved 1 byte thanks to @ovs
Takes input as an array of strings in lowercase. Returns an array of strings.
a=>a.filter(s=>a.some(S=>Buffer(S).map(c=>(c-6)%26+97)==s))

Try it online!
Commented
a =>                  // given the input array a[]
  a.filter(s =>       // for each string s in a[]:
    a.some(S =>       //   for each string S in a[]:
      Buffer(S)       //     create a buffer from S (deprecated method)
      .map(c =>       //     for each byte c in the buffer:
        (c - 6) % 26  //       apply rot13 transformation ((-97 + 13) mod 26 = -6)
        + 97          //       and convert it back to [a-z]
      ) == s          //     implicit coercion to string; compare with s
    )                 //   end of some()
  )                   // end of filter()

(c-84)%26 can be (c-6)%26.

@ovs Ugh. Indeed it can. Thanks!

@Arnauld I haven't used Buffer before.  Can you explain how this works?

@Umbrella I've added a commented version. Note that Buffer does not exist on browsers. It's a Node thing. The deprecated method I'm using is this one.

Retina 0.8.2, 42 bytes
.+
$&¶$&!
T`l`n-zl`.+!
O`
!`\b(.+)(?=¶\1!)

Try it online! Explanation:
.+
$&¶$&!

Duplicate all of the words, suffixing a ! to the duplicate.
T`l`n-zl`.+!

ROT13 all of the duplicates.
O`

Sort the words.
!`\b(.+)(?=¶\1!)

Find the duplicates.

Perl 6,  57  35 bytes
.say for ($/=lines.Set).keys.grep:{$/{TR/a..z/n..za..m/}}

Try it
{@^a.grep:{@a∋TR/a..z/n..za..m/}}

Try it
Expanded:
{  # bare block lambda with placeholder parameter @a

  @^a                # declare and use placeholder parameter
  .grep:             # find all the values in it that match the following
  {
    @a
    ∋                 # Set contains operator
    TR/a..z/n..za..m/ # do the rotation on the grepped value
  }
}

Ruby, 45 35 bytes
-10(!) thanks to G B
->a{a&a.map{|x|x.tr"a-z","n-za-m"}}

Try it online!

35: Try it online!

Python 2, 101 94 bytes
lambda d:[w for w in d if{''.join(chr((ord(c)+i)%26+97)for c in w)for i in range(26)}&(d-{w})]

Try it online!
Takes a set of words (lowercase), and returns a list of rotonyms.

Perl 5 -a, 40 bytes
y/a-z/n-za-m/;for$i(@F){/\b$i\b/&&say$i}

Try it online!
Input is as a space separated list of words.

Python 3, 68 60 bytes
lambda d:d&{encode(w,"rot13")for w in d};from codecs import*

Although we could put the import on the previous line without penalty, it just seems more amusing this way.  The function now only accepts the dictionary as a set, which makes a huge performance improvement for very large dictionaries.

C (gcc), 137 bytes
char*a,*b,x[99];f(_)char*_;{strcpy(x,_);for(a=strtok(x," ");a=strtok(0," ");strstr(_,a)&&printf("%s ",a))for(b=a;*b;++b)*b=(*b-6)%26+97;}

Try it online!
Description:
char*a,*b,x[99];                        // Variables
f(_)char*_;{                            // f(space separated string)
    strcpy(x,_);                        // copy input to x
    for(a=strtok(x," ");                // loop from first word
        a=strtok(0," ");                // to last word
        strstr(_,a)&&printf("%s ",a))   // at each step printing if found in original string
                                        // this occurs after the next loop which
                                        // rot13's the loop argument 'a'
        for(b=a;*b;++b)                 // for each character in a
            *b=(*b-6)%26+97;}           // set it to its rot13 variant (x-6)%26+97 for ascii

05AB1E, 13 12 10 bytes
εAA2äRJ‡}Ã

-2 bytes thanks to @Emigna.
Try it online.
Explanation:
            # example input: ["ask","green","irk","terra"]
ε       }   # For-each over the input-list:
 A          #  Take the lowercase alphabet twice
  A2äRJ     #  Split the alphabet in halve, reverse both parts, and joined it back together
            #   → nopqrstuvwxyzabcdefghijklm
       ‡    #  Transliteral; changing the characters in the input-words, from
            #  the letters in the alphabet, to the letters in the ROT-13 alphabet
            #   → ['nfx','terra','vex','green']
         Ã  # Remove all items from the input-list, that are not in the list above
            #  → ['green','terra']

Old 12-byte version:
Ç6-₂%εAsèJ}Ã

-1 byte thanks to @Emigna changing мм to Ã (couldn't find this builtin myself in the available commands).
Try it online.
Explanation:
               # example input: ["ask","green","irk","terra"]
Ç              # Convert all input-characters to their unicode values
               #  → [[97,115,107],[103,114,101,101,110],[105,114,107],[116,101,114,114,97]]
  6-₂%         # Subtract 6, and take modulo-26
               #  → [[13,5,23],[19,4,17,17,0],[21,4,23],[6,17,4,4,13]]
      ε    }   # For-each:
       Asè     #  Take the letters from the lowercase alphabet at the calculated indices
               #   → [['n','f','x'],['t','e','r','r','a'],['v','e','x'],['g','r','e','e','n']]
          J    #  Join all letters together again
               #   → ['nfx','terra','vex','green']
            Ã  # Remove all items from the input-list, that are not in the list above
               #  → ['green','terra']

εAA2äRJ‡}Ã should work.

@Emigna Ah nice approach with ‡ and A2äRJ. Didn't even knew about ‡.. I think I'll have to look at every command and make some basic test programs for myself to better understand their usages and what is available.. ;)

Java (JDK 10), 97 bytes
l->l.stream().filter(s->l.contains(new String(s.chars().map(m->m%26+65).toArray(),0,s.length())))

Try it online!

Pyth, 11 bytes
@ms@LGm-Ck6

Try it online
Expects input as an array of lowercase words. Explanation:
@ms@LGm-Ck6dQQ   Q=input(), final 3 tokens are implicit

 m          Q    For each word d in input, map over...
      m    d       For each letter k in d, map over...
        Ck           Convert to ASCII code point
       -  6          Subtract 6
   @LG             Modular index each over the lowercase alphabet (G)
  s                Join each array of chars into a string
@            Q   Filter the input on presence in the resulting set

Julia 0.6, 49 bytes
W->filter(w->String(([w...].-'S')%26.+'`')∈W,W)

Try it online!
Takes a Set of words and returns a Set of rotonyms.
[w...] takes a string w and "explodes" it into an array of Chars, which enables us to do arithmetic on it. The String call does the reverse, making a string from an array of Chars after the arithmetic operations are done. We have to subtract 'S' and not 83, because Char-Char is an Int on which % works, whereas Char-Int is a Char which would lead to an error. Similarly, adding '`' changes the result of the mod from Int back to a Char, which is necessary for the String call to work.

JavaScript, 93 bytes
Takes input as an array of lowercase words, filters the array by the result of a lookup for the rot13 result.
d=>d.filter(t=>d.indexOf(t.replace(/[a-z]/ig,c=>((parseInt(c,36)+3)%26+10).toString(36)))>-1)

PHP, 60 bytes
Given an array of words, echos only those having a rotonym match
foreach($l as$w)if(in_array($j=str_rot13($w),$l))echo"$w\n";
Try it online!

It is recommended to wait at least a couple of hours -- or preferably a couple of days -- before answering your own question, especially in languages that have not been used so far.

That makes sense.  I'll remember moving forward.  Thanks!  For now, I'll hide it in a spoiler tag.


text:
Produce a List of Rotonyms 2
Rotonyms 2
A "Rotonym" is a word that ROT13s into another word (in the same language).
For this challenge, we'll use an alternate definition: a "Rotonym" is a word that circular shifts/rotates into another word (in the same language).
For example:
'stable' < 'tables' < 'ablest'
'abort' > 'tabor'
'tada' >> 'data'

The Challenge
Write a program or function that accepts a dictionary/word list and prints or returns a complete list of rotonyms.

Order doesn't matter.
Comparisons should be case-insensitive, so you can assume the input will be passed as a lower-case-only dictionary.
Result should be expressed as single words (not the pairs) and contain no duplicates, so you can assume the input has no duplicates.
This is code-golf.

Example
Given
ablest
abort
green
irk
stable
tables
tabor
tata
terra
vex
you

Return
ablest
abort
stable
tables
tabor

A Real Test
Given
a aa aal aalii aam aani aardvark aardwolf aaron aaronic aaronical aaronite aaronitic aaru ab aba ababdeh ababua abac abaca abacate abacay abacinate abacination abaciscus abacist aback abactinal abactinally abaction abactor abaculus abacus abadite abaff abaft abaisance abaiser abaissed abalienate abalienation abalone abama abampere abandon abandonable abandoned abandonedly abandonee abandoner abandonment abanic abantes abaptiston abarambo abaris abarthrosis abarticular abarticulation abas abase abased abasedly abasedness abasement abaser abasgi abash abashed abashedly abashedness abashless abashlessly abashment abasia abasic abask abassin abastardize abatable abate abatement abater abatis abatised abaton abator abattoir abatua abature abave abaxial abaxile abaze abb abba abbacomes abbacy abbadide abbas abbasi abbassi abbasside abbatial abbatical abbess abbey abbeystede abbie abbot abbotcy abbotnullius abbotship abbreviate abbreviately abbreviation abbreviator abbreviatory abbreviature abby abcoulomb abdal abdat abderian abderite abdest abdicable abdicant abdicate abdication abdicative abdicator abdiel abditive abditory abdomen abdominal abdominales abdominalian abdominally abdominoanterior abdominocardiac abdominocentesis abdominocystic abdominogenital abdominohysterectomy abdominohysterotomy abdominoposterior abdominoscope abdominoscopy abdominothoracic abdominous abdominovaginal abdominovesical abduce abducens abducent abduct abduction abductor abe abeam abear abearance abecedarian abecedarium abecedary abed abeigh abel abele abelia abelian abelicea abelite abelmoschus abelmosk abelonian abeltree abencerrages abenteric abepithymia aberdeen aberdevine aberdonian aberia aberrance aberrancy aberrant aberrate aberration aberrational aberrator aberrometer aberroscope aberuncator abet abetment ablest abort abut ach ache acher achete achill achor acor acre acyl ad adad adat add addlings adet ala ama baa bafta balonea batea beta caba cha chilla cora crea da dad dada data each lacy orach rache saddling stable tables tabor tabu tade teache zoquean zoraptera zorgite zoril zorilla zorillinae zorillo zoroastrian zoroastrianism zoroastrism zorotypus zorrillo zorro zosma zoster zostera zosteraceae zosteriform zosteropinae zosterops zouave zounds zowie zoysia zubeneschamali zuccarino zucchetto zucchini zudda zugtierlast zugtierlaster zuisin zuleika zulhijjah zulinde zulkadah zulu zuludom zuluize zumatic zumbooruk zuni zunian zunyite zupanate zutugil zuurveldt zuza zwanziger zwieback zwinglian zwinglianism zwinglianist zwitter zwitterion zwitterionic zyga zygadenine zygadenus zygaena zygaenid zygaenidae zygal zygantra zygantrum zygapophyseal zygapophysis zygion zygite zygnema zygnemaceae zygnemales zygnemataceae zygnemataceous zygnematales zygobranch zygobranchia zygobranchiata zygobranchiate zygocactus zygodactyl zygodactylae zygodactyli zygodactylic zygodactylism zygodactylous zygodont zygolabialis zygoma zygomata zygomatic zygomaticoauricular zygomaticoauricularis zygomaticofacial zygomaticofrontal zygomaticomaxillary zygomaticoorbital zygomaticosphenoid zygomaticotemporal zygomaticum zygomaticus zygomaxillare zygomaxillary zygomorphic zygomorphism zygomorphous zygomycete zygomycetes zygomycetous zygon zygoneure zygophore zygophoric zygophyceae zygophyceous zygophyllaceae zygophyllaceous zygophyllum zygophyte zygopleural zygoptera zygopteraceae zygopteran zygopterid zygopterides zygopteris zygopteron zygopterous zygosaccharomyces zygose zygosis zygosperm zygosphenal zygosphene zygosphere zygosporange zygosporangium zygospore zygosporic zygosporophore zygostyle zygotactic zygotaxis zygote zygotene zygotic zygotoblast zygotoid zygotomere zygous zygozoospore zymase zyme zymic zymin zymite zymogen zymogene zymogenesis zymogenic zymogenous zymoid zymologic zymological zymologist zymology zymolyis zymolysis zymolytic zymome zymometer zymomin zymophore zymophoric zymophosphate zymophyte zymoplastic zymoscope zymosimeter zymosis zymosterol zymosthenic zymotechnic zymotechnical zymotechnics zymotechny zymotic zymotically zymotize zymotoxic zymurgy zyrenian zyrian zyryan zythem zythia zythum zyzomys zyzzogeton

Return
aal aam aba abac abaft abalone abate abet ablest abort abut ach ache acher achete achill achor acor acre acyl ad adad adat add addlings adet ala ama baa bafta balonea batea beta caba cha chilla cora crea da dad dada data each lacy orach rache saddling stable tables tabor tabu tade teache

can we assume input words are unique?

Yes, I think I pre-ran my input through a unique filter when I ran the system dictionary.

I noticed some answers worked for the example, but not for a full dictionary.  I added a larger test set that is a subset of the dictionary large enough to contain words that fail for some answers that pass the trivial example.

@Umbrella you should comment on any invalid answers to alert the user, so that they can fix/delete their answer

abdominovaginal, you got some odd words there.

HA!  I can't speak to that, I just used /usr/share/dict/words on my Mac, solved it, mixed the solution with a generous head and tail to create a smaller input, and went with that.

APL (Dyalog Unicode), 25 23 22 17 16 bytesSBCS
Borrows ideas from ngn's ngn/k solution. And then -6 thanks to him. Also -1 by returning an enclosed list as like H.PWiz.
Anonymous tacit prefix function.
⊂∩¨1,.↓(∪≢,/,⍨)¨

Try it online!
(…)¨ apply the following tacit function to each word:
 ,⍨ concatenate the word to itself
 ≢,/ all word-length sub-strings (i.e. all rotations)
∪ unique elements of those rotations (to prevent words like tata for appearing twice)
1,.↓ the concatenation of the drop-firsts (the original words) of each list
⊂∩¨ intersection of the the content of that and the entire original word list

Old solution
-2 thanks to ngn.
Anonymous prefix lambda.
{⍵/⍨2≤+/⍵∊⍨↑(∪≢,/,⍨)¨⍵}

Try it online!
{…} function where ⍵ is the word list:
 (…)¨ apply the following tacit function to each word:
  ,⍨ concatenate the word to itself
  ≢,/ all word-length sub-strings (i.e. all rotations)
  ∪ unique elements of those rotations (to prevent words like tata for appearing twice)
 ↑ mix the list of lists into a single matrix (pads with all-space strings)
 ⍵∊⍨ indicate which elements of the matrix are members of the original list
 +/ sum the rows (counts occurrences of each of the original words)
 2≤ indicate which have duplicates (i.e. occur other than when rotated back to original)
 ⍵/⍨ use that to filter the original list

{∪⌽∘⍵¨⍳≢⍵} -> (∪≢,/,⍨); your use of ∊ is clever

@ngn Thanks. I learned the trick from Morten.

those trains make my brain hurt... it's simpler as a dfn: {⍵∩⊃,/1↓¨(∪≢,/,⍨)¨⍵}

@ngn That's what I have although made into a train and without the trick for rotations

sorry, one last change of mind: ⊢∩∘⊃1,.↓(∪≢,/,⍨)¨

@ngn Whoa ,.↓

from H.PWiz's answer: ⊢∩∘⊃ -> ⊂∩¨ (result becomes enclosed)

Jelly, 8 bytes
ṙ1$ƬfḊɗƇ

Try it online!
Alternate version, 7 bytes
ṙƬ1fḊʋƇ

Dyadic Ƭ used to do something weird, so this didn't work when the challenge was posted.
Try it online!
How it works
ṙƬ1fḊʋƇ  Main link. Argument: A (array of strings)

     ʋ   Vier; combine the 4 preceding links into a dyadic chain.
      Ƈ  Comb; for each string s in A, call the chain with left argument s and
         right argument A. Keep s iff the chain returned a truthy value.
 Ƭ           'Til; keep calling the link to the left, until the results are no
             longer unique. Return the array of unique results.
ṙ 1          Rotate the previous result (initially s) one unit to the left.
   f         Filter; keep only rotations that belong to A.
             s is a rotonym iff there are at least two rotations of s in A.
    Ḋ        Deque; remove the first string (s) of the result.
             The resulting array is non-empty / truthy iff s is a rotonym.

Oh new quick characters? Hm gotta learn when to use those now... (same things but 1-byters now so I can use them more than back when they were 2-byters)

It's equivalent to ṙ1$ÐĿfḊɗÐf.

APL (Dyalog), 20 bytes
Requires ⎕io←0
⊂∩¨(,/(1↓∘∪⍳∘≢⌽¨⊂)¨)

Try it online!
(1↓∘∪⍳∘≢⌽¨⊂)¨ gets the unique rotations (excluding the string itself) of each string in the dictionary
≢ takes the length of a vector
⍳∘≢ creates the range from 0 up to the length
⌽ rotates a vector some number of times, e.g 2⌽'abort' -> 'ortab'
⍳∘≢⌽¨⊂ will then give all the rotations of a vector
∪ removes the duplicates
1↓ removes the first element (the original string)
,/ flattens all the rotations into one list
⊂∩¨ takes the intersection of the dictionary with the rotations

your result comes out enclosed, but I guess that should be okay, and @Adám can steal your ⊂∩¨ trick (or vice versa) for a further -1

Brachylog, 26 bytes
g;?z{tWl⟧₆∋I;W↺₍R;W≠&h∋R}ˢ

Try it online!
g;?z                          % Zip the whole input with each word in it respectively
    {                   }ˢ    % Apply this predicate to each pair in the zip
                              %   and select the successful values
     tW                       % Let the current word be W
       l⟧₆∋I                  % There exists a number I from 1 to length(W)-1
            ;W↺₍R             % And R is the result of circularly shifting the
                              %   current word I times
                 ;W≠          % And R is not the current word itself (needed for words like "tata")
                    &h∋R      % And R is one of the input dictionary words
                              % (R is implicitly the output of the predicate, and
                              %  successful R values are collected and output by the ˢ)

Python 2, 73 69 67 bytes
lambda d:[w for w in d if{w[i:]+w[:i]for i in range(len(w))}-{w}&d]

Try it online!
Takes a set of words (lowercase), and returns a list of rotonyms.

Saved

-2 bytes, thanks to ovs

67 bytes

K (ngn/k), 23 bytes
{x^x^,/1_'(,/|0 1_)\'x}

Try it online!
{ } is a function with argument x
0 1_ cuts a string at indices 0 and 1, e.g. "abcd" -> (,"a";"bcd")
| reverses the two slices: ("bcd";,"a")
,/ joins them: "bcda"
(,/|0 1_)\ returns all rotations of a string
(,/|0 1_)\'x are the rotations of each string in x
1_' drops the first "rotation" of each, i.e. each trivial identity rotation
,/ join
x^y is the list x without elements of the list y
x^x^y is the intersection of x and y

Clever. I was able to use the intersection part to save another byte.

JavaScript (Node.js), 105 99 bytes
f=l=>l.filter(w=>[...Array(k=w.length)].map((x,i)=>(w+w).substr(i,k)).some(r=>l.includes(r)&&r!=w))

Ungolfed:
f = list =>
  list.filter( word =>
    // create a list of all rotonyms for the current word
    [ ...Array( len = word.length ) ]
      .map( (x,i) =>
         ( word+word ).substr(i, len)
      )
    // check if any of the rotonyms is in the initial dictionary/wordlist
     .some( rotonym =>
        list.includes( rotonym )
    // and is not the word itself
        && rotonym != word
     )

Try it online!

Welcome to PPCG! I'm not versed in JavaScript, but be sure to check out the JavaScript Tips thread to see if there's anything that applies here.

Thanks for the hint. I read the answers both for JS and ES6 but it seems I applied all relevant tips for this already. At least the ones that were obvious to me.

05AB1E, 14 bytes
εDvDÀ})ÙåO<Ā}Ï

Try it online!
Explanation
ε           }    # apply to each word in the input
 Dv  }           # for each letter in the word
   DÀ            # copy the previous word and rotate it left
      )Ù         # wrap the rotations in a list and remove duplicates
        å        # check each rotation for presence in the input
         O       # sum presences
          <Ā     # decrement the sum and truthify it (check if 1 or greater)
             Ï   # filter, keep words in input that are true in the resulting list

PynTree, 44 bytes
§y:f#x0€[x/|Ḟz&⁻xzėzḞw+#x`wLx#x`0wRLxy]y#\x1

Try it online!
This turned out to reveal a major flaw in the way PynTree constructs list comprehensions because it uses functions to assign variables so that assignment can go in expressions, but then the conditions end up not having the value of the variable until after it has been evaluated and the main block has been evaluated. This appears to be easily fixable but I did not notice this earlier and so this answer is hideously long.
Actually even if I fixed that I think it still might be terribly long.

Perl 6, 65 bytes
{@^a.grep:{@a∋any(($/=[.comb]).rotate,*.rotate...^*eq$/).join}}

Try it
Expanded:
{  # bare block lambda with placeholder parameter @a

  @^a     # declare and use placeholder parameter
  .grep:  # find the values that match
  {

    @a
    ∋            # Set contains operator

    any(         # create a junction of the following

      # generate a sequence
      (
        $/ =     # store into $/ (no declaration needed for this variable)
        [        # turn into an array instead of a one-time sequence
          .comb  # the input split into characters
        ]
      ).rotate,  # start the sequence on the first rotation

      *.rotate   # use this to generate the rest of the values in the sequence

      ...^       # keep generating values until: (and throw out last value)

      * eq $/    # one of them matches the cached array of the input

    ).join       # for each array in the junction join the strings (no spaces)
  }
}

Python 2, 66 55 70 bytes
lambda d:{w for w in d for v in d if v not in w not in v in w*2in v*3}

Try it online!
11 bytes thx to Dennis to use chained x in y in z approach.
Takes a set of words d; returns a set of Rotonyms.

The check is too weak; {ab, abab} would pass it.

@xnor: Dang those edge conditions! A quick fix...

PowerShell Core, 131 bytes
($t=$args|%{@{r=0..($l=($k=$_).Length-1)|%{-join$k[-$_..($l-$_)]}
w=$_}})|%{$u=$_
$t|?{$u.w-ne$_.w-and$u.w-in$_.r}|%{$_.w}}|sort|gu

Try it online!
For each word in the list, create generate a list of all its rotations
Then look for a matching rotation with a different original word
If it exists, keep the word.
Then sort and deduplicate them.
Sorting is required in PowerShell as Get-Unique only works on sorted lists.

Fails on "abc cba", which has no rotonyms.  same sorted letter set is not a sufficient condition for rotonym.

Good call, thanks @Jonah !

Retina 0.8.2, 71 62 bytes
^(\w)(\w*)
$2$1!¶$&
%+)s`^(.+)(!.*¶\1)$
$2
O`
!`\b(.+)(?=¶\1!)

Try it online! Explanation:
%+)

Repeat for each word.
^(\w)(\w*)
$2$1!¶$&

Prepend the next rotation of the word with a trailing !.
s`^(.+)(!.*¶\1)$
$2

But if that's the original word, then delete it again.
O`

Sort the words.
!`\b(.+)(?=¶\1!)

Find the duplicates.

C# (.NET Core), 100 94 bytes
x=>x.Where(y=>y.Select((z,i)=>x.Where(c=>c!=y).Contains(y.Remove(0,i)+y.Remove(i))).Any(b=>b))

Try it online!

Japt, 17 bytes
Extremely slow, but works. TIO times out, but I confirmed it works by manually lowering the number of iterations in the language source.
f@_XéZ ÀX©UøXéZ}a
f@                // Filter the input array by
  _            }a // generating up to 1e8 rotations of each string
   XéZ ÀX         // and checking if the rotation is different than the original,
         ©UøXéZ   // yet still exists in the input array.

Try it online!

Why so many iterations?  I initially did iterations for string length, but through testing realized ten left rotations per word was enough to find all cases in the MacOS dict file.

@Umbrella Because it's short to write. The question is code golf, not fastest code.

I see.  I'm unfamiliar with Japt, so it wasn't apparent to me that iterating less would take more characters.

Javascript, 129 Chars
f=a=>{n={};r=w=>w.slice(1,w.length)+w[0];a.map(w=>{m=r(w);while(m!=w){if(-~a.indexOf(m))n[m]=1;m=r(m);}});return Object.keys(n);}

Ungolfed
f=a=>{
    n={};
    r=w=>w.slice(1,w.length)+w[0];
    a.map(w=>{
        m=r(w);
        while(m!=w){
            if(-~a.indexOf(m))n[m]=1;
            m=r(m);
        }
    });
    return Object.keys(n);
}

Try it online!

Java (JDK 10), 144 bytes
l->{for(var s:l){var r=s;for(int i=s.length();i-->1;){r=r.substring(1)+r.charAt(0);if(!r.equals(s)&l.contains(r)){System.out.println(s);i=0;}}}}

Try it online!

JavaScript (Node.js), 66 bytes
s=>s.filter(t=>s.some(u=>(t+t).match(u)&&t!=u&t.length==u.length))

Try it online!
boring answer

This does not work correctly.  Test it against the larger test set I added.

Japt -f, 9 bytes
¬£éYÃøWkU

Try it
¬£éYÃøWkU     :Implicit filter of each string U in input array W
¬             :Split
 £            :Map each element at 0-based index Y
  éY          :  Rotate U right Y times
    Ã         :End map
     ø        :Does that contain any element of
      WkU     :  W with U removed

Ruby, 81 59 bytes
Port of l4m2's JavaScript solution
->s{s.select{|t|s.any?{|u|(t+t)[u]&&t!=u&&t.size==u.size}}}

Attempt This Online!