Shortest regex for binary number with even number of 0s or odd number of 1s

finite-automata, regex, regular-language

Solution

Odd-1s part: `0*1(0|10*1)*`

Even-0s part, depends:

- Empty string is correct: `(1|01*0)*`

- No-0s is even-0s: `(1|01*0)+`

- Must have at least two 0s: `1*(01*01*)+` (as in OP)

old answer: correct under case 1 and 2

(1*(01*0)*)+ | 0*1(0*(10*1)*)*

Kudos to @OGHaza for helpful comments.

Problem

Write an expression that contains an even number of 0s or an odd number of 1s I got it down to: ``` 1*(01*01*)* + 0*10*(10*10*)* ``` where the first part represents an even number of 0s and the second part an odd number of 1s However, there's supposed to be a simplified solution that I'm not seeing. Any tips?

Original source

Related problems