Shuffle string of digits
K (ngn/k), 37 32 bytes
{$[|/x=r:x[,/|2 0N#<x]@<<x;0;r]}
Try it online!
{
}
function with argument x
$[
;
;
]
if-then-else
<x
"grade" - the sorting permutation for x
<<x
"rankings" - the inverse of the sorting permutation
2 0N#
split in two halves (or when length is odd - only approximately)
|
swap the halves
,/
concatenate
x[
]
use as indices in x
..@<<x
use <<x
as indices in the previous result (a@b
is alternative syntax for a[b]
)
r:
assign to r
- the potential result
x=r
boolean list of which elements of x
are equal to their counterparts in r
|/
or-reduction, i.e. "any?"
05AB1E, 7 bytes
Like the Pyth answer, outputs all possible shuffled strings or digits.
œʒø€Ëà_
Try it online!
Explanation
œ Permutations of the input
ʒ Filter such that:
ø Zipping with the original input
€Ë And comparing at corresponding indices
à_ are all unequal.
Pyth, 9 bytes
f.AnVQT.p
Try it online!
Outputs all possible strings that meet the criteria given in the question. This results in an empty list for the false
cases.