All the Xenodromes
Pyth, 8 bytes
f{IjTQU^
Filters the numbers in [0, n^n - 1] on having no duplicate elements in base n. The base conversion in Pyth will work with any base, but since this looks at a very quickly increasing list of numbers, it will eventually be unable to store the values in memory.
Try it online!
Explanation:
f{IjTQU^QQ - Auto-fill variables
U^QQ - [0, n^n-1]
f - keep only those that ...
{I - do not change when deduplicated
jTQ - are converted into base n
Jelly, 9 8 bytes
ð*ḶbQ€Qḅ
Thanks to @JonathanAllan for golfing off 1 byte!
Try it online! or verify all test cases.
How it works
ð*ḶbQ€Qḅ Main link. Argument: n
ð Make the chain dyadic, setting both left and right argument to n.
This prevents us from having to reference n explicitly in the chain.
* Compute nⁿ.
Ḷ Unlength; yield A := [0, ..., nⁿ - 1].
b Convert each k in A to base n.
Q€ Unique each; remove duplicate digits.
Q Unique; remove duplicate digit lists.
ḅ Convert each digit list from base n to integer.
Python 2, 87 bytes
n=input()
for x in range(n**n):
s={n};a=x
while{a%n}|s>s:s|={a%n};a/=n
print-~-a*`x`
Prints extra blank lines for non-xenodromes:
golf % python2.7 xenodromes.py <<<3
0
1
2
3
5
6
7
11
15
19
21