Your task is to generate an emoticon of three characters, the first character being one eye, the second the mouth, and the third another eye. Each eye is a random one of these characters:
$'*+-;O^`ox~, and the mouth is a random one of these:
Each eye and the mouth must be on the same general level. These eyes:
'*;^` and these mouths:
-coux are "upper-level", while these eyes:
$+-Oox~ and these mouths:
,._ are "lower-level". Any emoticon has a 50 % chance of using only upper-level eyes and mouth, and a 50 % chance of using only lower-level ones.
Additionally, the eyes should usually not be different. The chance of the eyes using the same symbol must be somewhere between 50 % and 67 %.
- The submission must be a function or a full program.
- The submission must either print the emoticon to the screen with optional trailing and/or preceding whitespace, or returning the emoticon as a string.
- The emoticon should have a 50 % chance of being upper-level and a 50 % chance of being lower-level.
- All eyes and mouths of the same level must have the same chance of occuring.
- The eyes should be the same 50-67 % of the time.
- Standard loopholes apply.
- This is a code-golf, so the shortest answer in bytes wins!
-_- // All symbols are lower-level: valid ~o.~ // Two eyes on the left side: invalid ^^ // No mouth - invalid ^_^ // The mouth is lower-level but the eyes are not: invalid ^-* // All symbols are upper-level: valid --- // Eyes are lower-level but mouth is upper-level: invalid