# 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
```