# Is this a half-sort?

## J, 20 18 15 14 bytes

-1 thanks to Jonah.

Goes the other way around: sorts the string ('node' -> 'deno'), rotates it back ('deno' -> 'node') and checks if this equals the input. Fits better J trains.

-:<[email protected]:@#|./:~


Try it online!

### How it works

-:<[email protected]:@#|./:~
/:~  sort input
<[email protected]:@#       length of input, halved and floored
|.     rotate sorted input by that amount
-:              input equal to that?


## Python 3, 45 42 bytes

-3 bytes thanks to @dingledooper

lambda s:sorted(s)==s+[s.pop(0)for c in s]


Try it online!

Takes input as a list of characters. Returns True if the list is half-sorted, False otherwise.

How

[s.pop(0)for c in s] gets the first half of the list. After this is evaluated, s only has the later half left.

Thus s+[s.pop(0)for c in s] is the list with the 2 halves swapped. Note that this works because Python evaluates anything inside square brackets first.

I then check if the swapped list is sorted, aka compare it with sorted(s).

## Pyth, 8 bytes

qSzs_c2z


Try it online!

Luckily, Pyth offers most of what we need out of the box, so we just need to call the operations necessary.

 Sz       # Sort the input
c2z  # Chop the input into two equal pieces (first longer if needed)
_     # Reverse the chopped elements
s      # Join them back together
q         # Check for equality