Reverse the gender of a string: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎{{header|REXX}}: added some first-names to the list of gender-specific words.)
m (→‎{{header|Wren}}: Minor tidy)
 
(45 intermediate revisions by 17 users not shown)
Line 1: Line 1:
{{draft task|String manipulation}}
{{draft task|String manipulation}}
The task is to create a function that reverses the gender of the text of a string. The function should take one arguments being a string to undergo the sex change. The returned string should contain this initial string, with all references to gender switched.


The task is to create a function that reverses the gender of the text of a string.
<lang pseudocode>print rev_gender("She was a soul stripper. She took my heart!")

He was a soul stripper. He took my heart!</lang>
The function should take one arguments being a string to undergo the gender change.

The returned string should contain this initial string, with all references to be gender switched.

<syntaxhighlight lang="pseudocode">print rev_gender("She was a soul stripper. She took my heart!")
He was a soul stripper. He took my heart!</syntaxhighlight>


{{Template:Strings}}
<br><br>

=={{header|11l}}==
{{trans|Kotlin}}

<syntaxhighlight lang="11l">F reverse_gender(=s)
V words = [‘She’, ‘she’, ‘Her’, ‘her’, ‘hers’, ‘He’, ‘he’, ‘His’, ‘his’, ‘him’]
V repls = [‘He_’, ‘he_’, ‘His_’, ‘his_’, ‘his_’, ‘She_’, ‘she_’, ‘Her_’, ‘her_’, ‘her_’]

L(word, repl) zip(words, repls)
s = s.replace(re:(‘\b’word‘\b’), repl)

R s.replace(‘_’, ‘’)

print(reverse_gender(‘She was a soul stripper. She took his heart!’))
print(reverse_gender(‘He was a soul stripper. He took her heart!’))
print(reverse_gender(‘She wants what's hers, he wants her and she wants him!’))
print(reverse_gender(‘Her dog belongs to him but his dog is hers!’))</syntaxhighlight>

{{out}}
<pre>
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!
</pre>

=={{header|Action!}}==
<syntaxhighlight lang="action!">DEFINE PTR="CARD"
DEFINE COUNT="10"
PTR ARRAY words(COUNT)
PTR ARRAY repls(COUNT)

PROC Init()
words(0)="She" repls(5)=words(0)
words(1)="she" repls(6)=words(1)
words(2)="Her" repls(7)=words(2)
words(3)="her" repls(8)=words(3)
words(4)="hers" repls(9)=words(4)
words(5)="He" repls(0)=words(5)
words(6)="he" repls(1)=words(6)
words(7)="His" repls(2)=words(7)
words(8)="his" repls(3)=words(8)
words(9)="him" repls(4)=words(9)
RETURN

PROC Append(CHAR ARRAY text,suffix)
BYTE POINTER srcPtr,dstPtr
BYTE len

len=suffix(0)
IF text(0)+len>255 THEN
len=255-text(0)
FI
IF len THEN
srcPtr=suffix+1
dstPtr=text+text(0)+1
MoveBlock(dstPtr,srcPtr,len)
text(0)==+suffix(0)
FI
RETURN

BYTE FUNC IsAlpha(CHAR c)
IF c>='A AND c<='Z OR c>='a AND c<='z THEN
RETURN (1)
FI
RETURN (0)

BYTE FUNC NextItem(CHAR ARRAY text BYTE start,word CHAR ARRAY res)
BYTE i

i=start
WHILE i<=text(0) AND IsAlpha(text(i))=word
DO i==+1 OD
SCopyS(res,text,start,i-1)
RETURN (i)

BYTE FUNC WordIndex(CHAR ARRAY text)
BYTE i

FOR i=0 TO COUNT-1
DO
IF SCompare(text,words(i))=0 THEN
RETURN (i)
FI
OD
RETURN (255)

PROC ReverseGender(CHAR ARRAY in,out)
CHAR ARRAY s(256)
BYTE start,word,index

out(0)=0
start=1 word=1
WHILE start<=in(0)
DO
start=NextItem(in,start,word,s)
index=WordIndex(s)
word=1-word
IF index=255 THEN
Append(out,s)
ELSE
Append(out,repls(index))
FI
OD
RETURN

PROC Test(CHAR ARRAY in)
CHAR ARRAY res(256)

ReverseGender(in,res)
PrintF("Input: ""%S""%E%E",in)
PrintF("Output: ""%S""%E%E%E",res)
RETURN

PROC Main()
Init()
Test("She was a soul stripper. She took his heart!")
Test("She wants what's hers, he wants her and she wants him!")
Test("She, she, Her, her, hers, He, he, His, his, him")
RETURN</syntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Reverse_the_gender_of_a_string.png Screenshot from Atari 8-bit computer]
<pre>
Input: "She was a soul stripper. She took his heart!"

Output: "He was a soul stripper. He took her heart!"


Input: "She wants what's hers, he wants her and she wants him!"

Output: "He wants what's him, she wants his and he wants hers!"


Input: "She, she, Her, her, hers, He, he, His, his, him"

Output: "He, he, His, his, him, She, she, Her, her, hers"
</pre>

=={{header|Arturo}}==

{{trans|Kotlin}}

<syntaxhighlight lang="rebol">reverseGender: function [str][
ret: new str
entries: ["She" "she" "Her" "her" "hers" "He" "he" "His" "his" "him"]
repls: ["He_" "he_" "His_" "his_" "his_" "She_" "she_" "Her_" "her_" "her_"]
loop.with:'i entries 'entry ->
replace 'ret to :regex ~{\b|entry|\b} repls\[i]
return replace ret "_" ""
]
print reverseGender "She was a soul stripper. She took his heart!"
print reverseGender "He was a soul stripper. He took her heart!"
print reverseGender "She wants what's hers, he wants her and she wants him!"
print reverseGender "Her dog belongs to him but his dog is hers!"</syntaxhighlight>

{{out}}

<pre>He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!</pre>


=={{header|FreeBASIC}}==
=={{header|FreeBASIC}}==
Line 9: Line 182:


To avoid swapping words which have already been swapped, thereby nullifying the original swap, I've appended an underscore to each replacement word and then removed all the underscores when all swaps have been made. This assumes, of course, that the text didn't include any underscores to start with.
To avoid swapping words which have already been swapped, thereby nullifying the original swap, I've appended an underscore to each replacement word and then removed all the underscores when all swaps have been made. This assumes, of course, that the text didn't include any underscores to start with.
<lang freebasic>' FB 1.05.0 Win64
<syntaxhighlight lang="freebasic">' FB 1.05.0 Win64


Function isWordChar(s As String) As Boolean
Function isWordChar(s As String) As Boolean
Line 55: Line 228:
Print
Print
Print "Press any key to quit"
Print "Press any key to quit"
Sleep</lang>
Sleep</syntaxhighlight>


{{out}}
{{out}}
Line 64: Line 237:
His dog belongs to her but her dog is his!
His dog belongs to her but her dog is his!
</pre>
</pre>

=={{header|Go}}==
<syntaxhighlight lang="go">package main

import (
"fmt"
"strings"
)

func reverseGender(s string) string {
if strings.Contains(s, "She") {
return strings.Replace(s, "She", "He", -1)
} else if strings.Contains(s, "He") {
return strings.Replace(s, "He", "She", -1)
}
return s
}

func main() {
s := "She was a soul stripper. She took my heart!"
t := reverseGender(s)
fmt.Println(t)
fmt.Println(reverseGender(t))
}</syntaxhighlight>

{{out}}
<pre>
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!
</pre>

=={{header|Haskell}}==

We can optimise the time and space complexity of this computation by careful selection of the source and target languages (not specified in the task description, although the example appears to be drawn from some kind of Anglo-Saxon dialect, which seems a bit sub-optimal for these purposes).

Sino-Tibetan dialects generally work well here. If we choose any standard transcription of Modern Standard Chinese (such as Pinyin or IPA) or more or less any written sample of pre 19c literary Chinese, we can reduce the entire computation down to a very pleasing intersection of fully optimized space and time performance with reasonably clear and succinct code:

{{works with|汉语拼音}}
{{works with|文言文}}
<syntaxhighlight lang="haskell">id</syntaxhighlight>


=={{header|J}}==
=={{header|J}}==
Line 77: Line 290:
So, for now, we limit ourselves to the simple case specified in the task example, and do not even do all that great of a job there, either:
So, for now, we limit ourselves to the simple case specified in the task example, and do not even do all that great of a job there, either:


<lang J>cheaptrick=: rplc&(;:'She He He She')</lang>
<syntaxhighlight lang="j">cheaptrick=: rplc&(;:'She He He She')</syntaxhighlight>


And, the task example:
And, the task example:


<lang J> cheaptrick 'She was a soul stripper. She took my heart!'
<syntaxhighlight lang="j"> cheaptrick 'She was a soul stripper. She took my heart!'
He was a soul stripper. He took my heart!
He was a soul stripper. He took my heart!
cheaptrick cheaptrick 'She was a soul stripper. She took my heart!'
cheaptrick cheaptrick 'She was a soul stripper. She took my heart!'
She was a soul stripper. She took my heart!</lang>
She was a soul stripper. She took my heart!</syntaxhighlight>


=={{header|Java}}==
=={{header|Java}}==
{{trans|J}}
{{trans|J}}
<lang java>public class ReallyLameTranslationOfJ {
<syntaxhighlight lang="java">public class ReallyLameTranslationOfJ {


public static void main(String[] args) {
public static void main(String[] args) {
Line 103: Line 316:
return s;
return s;
}
}
}</lang>
}</syntaxhighlight>


<pre>He was a soul stripper. He took my heart!
<pre>He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!</pre>
She was a soul stripper. She took my heart!</pre>

=={{header|jq}}==
''Adapted from [[#Wren|Wren]]''
{{works with|jq}}
'''Also works with both jaq and gojq, the Rust and Go implementations of jq'''

In this entry, we use the Unicode character classes for "open", "close",
and "other" punctuation, but show the test for a small set of specific
punctuation characters.

<syntaxhighlight lang="jq">
def swaps: {
"She": "He", "she": "he", "Her": "His", "her": "his", "hers": "his", "He": "She",
"he": "she", "His": "Her", "his": "her", "him": "her"
};

def isPunctuation:
type == "string" and
length == 1 and
# test("[!\"#%&'()*,-./:;?@\\[\\]\\\\_{}¡§«¶·»¿]")
# open, close, other
test("\\p{Ps}|\\p{Pe}|\\p{Po}|")
;
def reverseGender:
reduce splits(" *") as $word ([];
swaps[$word] as $s
| if $s then . + [$s]
elif ($word[-1:] | isPunctuation)
then swaps[$word[:-1]] as $s
| if $s then . + [$s + $word[-1:]]
else . + [$word]
end
else . + [$word]
end)
| join(" ");

def sentences: [
"She was a soul stripper. She took his heart!",
"He was a soul stripper. He took her heart!",
"She wants what's hers, he wants her and she wants him!",
"Her dog belongs to him but his dog is hers!"
];

sentences[]
| reverseGender
</syntaxhighlight>
{{Output}}
As for [[#Wren|Wren]].

=={{header|Julia}}==
{{trans|Kotlin}}
<syntaxhighlight lang="julia">module ReverseGender

const MARKER = "\0"

const words = "^" .* ["She", "she", "Her", "her", "hers", "He", "he", "His", "his", "him"] .* "\$" .|> Regex
const repls = ["He", "he", "His", "his" ,"his", "She", "she", "Her", "her", "her"] .* MARKER

function reverse(s::AbstractString)
for (w, r) in zip(words, repls)
s = replace(s, w => r)
end
return replace(s, MARKER => "")
end

end # module ReverseGender

@show ReverseGender.reverse("She was a soul stripper. She took his heart!")
@show ReverseGender.reverse("He was a soul stripper. He took her heart!")
@show ReverseGender.reverse("She wants what's hers, he wants her and she wants him!")
@show ReverseGender.reverse("Her dog belongs to him but his dog is hers!")</syntaxhighlight>


=={{header|Kotlin}}==
=={{header|Kotlin}}==
This program uses a similar approach to the FreeBASIC entry:
This program uses a similar approach to the FreeBASIC entry:
<lang scala>// version 1.0.6
<syntaxhighlight lang="scala">// version 1.0.6


fun reverseGender(s: String): String {
fun reverseGender(s: String): String {
Line 128: Line 413:
println(reverseGender("She wants what's hers, he wants her and she wants him!"))
println(reverseGender("She wants what's hers, he wants her and she wants him!"))
println(reverseGender("Her dog belongs to him but his dog is hers!"))
println(reverseGender("Her dog belongs to him but his dog is hers!"))
}</lang>
}</syntaxhighlight>


{{out}}
{{out}}
Line 136: Line 421:
He wants what's his, she wants his and he wants her!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!
His dog belongs to her but her dog is his!
</pre>

=={{header|Lua}}==
Sufficient for the task as worded, but without attempting to go beyond (because several indeterminate cases exist). It does at least demonstrate an idiomatic way of doing multiple simultaneous substring substitutions.
<syntaxhighlight lang="lua">function sufficient(s)
local xref = { She="He", He="She" }
return (s:gsub("(%w+)", function(s) return xref[s] or s end))
end
s = "She was a soul stripper. She took my heart!"
print(sufficient(s))
print(sufficient(sufficient(s)))
print(sufficient(sufficient(s)) == s)</syntaxhighlight>
{{out}}
<pre>He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!
true</pre>

=={{header|MiniScript}}==
<syntaxhighlight lang="miniscript">cap = function(w) // (capitalize a word)
return w[0].upper + w[1:]
end function

trans = {"she":"he", "her":"his", "hers":"his"}
trans = trans + {"he":"she", "his":"her", "him":"her"}

for k in trans.indexes
trans[cap(k)] = cap(trans[k])
end for

reverseGender = function(s)
s = s.replace(".", " .").replace(",", " ,").replace("?", " ?").replace("!", " !")
words = s.split
for i in words.indexes
if trans.hasIndex(words[i]) then words[i] = trans[words[i]]
end for
s = words.join
s = s.replace(" .", ".").replace(" ,", ",").replace(" ?", "?").replace(" !", "!")
return s
end function

test = function(s)
print "BEFORE: " + s
print "AFTER: " + reverseGender(s)
print
end function

test "She was a soul stripper. She took his heart!"
test "He was a soul stripper. He took her heart!"
test "She wants what's hers, he wants her and she wants him!"
test "Her dog belongs to him but his dog is hers!"</syntaxhighlight>

{{out}}
<pre>BEFORE: She was a soul stripper. She took his heart!
AFTER: He was a soul stripper. He took her heart!

BEFORE: He was a soul stripper. He took her heart!
AFTER: She was a soul stripper. She took his heart!

BEFORE: She wants what's hers, he wants her and she wants him!
AFTER: He wants what's his, she wants his and he wants her!

BEFORE: Her dog belongs to him but his dog is hers!
AFTER: His dog belongs to her but her dog is his!</pre>

=={{header|Nim}}==
{{trans|Kotlin}}
<syntaxhighlight lang="nim">import re, strutils

const
Words = ["She", "she", "Her", "her", "hers", "He", "he", "His", "his", "him"]
Repls = ["He_", "he_", "His_", "his_" ,"his_", "She_", "she_", "Her_", "her_", "her_"]

func reverseGender(s: string): string =
result = s
for i, word in Words:
let r = re(r"\b" & word & r"\b")
result = result.replace(r, Repls[i])
result = result.replace("_", "")

echo reverseGender("She was a soul stripper. She took his heart!")
echo reverseGender("He was a soul stripper. He took her heart!")
echo reverseGender("She wants what's hers, he wants her and she wants him!")
echo reverseGender("Her dog belongs to him but his dog is hers!")</syntaxhighlight>

{{out}}
<pre>He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!</pre>

=={{header|Objeck}}==
{{trans|Java}}
<syntaxhighlight lang="objeck">class ReallyLameTranslationOfJ {
function : Main(args : String[]) ~ Nil {
s := "She was a soul stripper. She took my heart!";
CheapTrick(s)->PrintLine();
CheapTrick(CheapTrick(s))->PrintLine();
}

function : CheapTrick(s : String) ~ String {
if(s->Has("She")) {
return s->ReplaceAll("She", "He");
}
else if(s->Has("He")) {
return s->ReplaceAll("He", "She");
};
return s;
}
}
</syntaxhighlight>

Output:
<pre>
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!
</pre>

=={{header|Perl}}==
A minimal implementation, using a hash to manage swaps. But this approach breaks down if, for instance, 'him' were to replace 'me', as 'her' can't be used to map to both 'his' and 'him'.
<syntaxhighlight lang="perl">my %swaps = (
'she' => 'he',
'his' => 'her',
);

$swaps{ $swaps{$_} } = $_ for keys %swaps; # inverted pairs
$swaps{ ucfirst $swaps{$_} } = ucfirst $_ for keys %swaps; # title-case version

sub gender_swap {
my($s) = @_;
$s =~ s/\b$_\b/_$swaps{$_}/g for keys %swaps; # swap and add guard character
$s =~ s/_//g; # remove guard
$s;
}

$original = qq{She was this soul sherpa. She took his heart! They say she's going to put me on a shelf.\n};
print $swapped = gender_swap($original);
print $reverted = gender_swap($swapped);</syntaxhighlight>
{{out}}
<pre>He was this soul sherpa. He took her heart! They say he's going to put me on a shelf.
She was this soul sherpa. She took his heart! They say she's going to put me on a shelf.</pre>

=={{header|Phix}}==
Oh well, I tried... There are a couple of mildly interesting points though:<br>
words is a pair-list, ie "she","he" maps both ways, with first-upper-case handled too, and<br>
replacing the words right->left means no need to fiddle with indexes when lengths differ.
<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #008080;">constant</span> <span style="color: #000000;">words</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"she"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"he"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"his"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"her"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"him"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"her"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"hers"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"his"</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">reverse_gender</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">wordend</span>
<span style="color: #004080;">bool</span> <span style="color: #000000;">inword</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">wordch</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">to</span> <span style="color: #000000;">0</span> <span style="color: #008080;">by</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">ch</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">?</span><span style="color: #008000;">' '</span><span style="color: #0000FF;">:</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">])</span>
<span style="color: #000000;">wordch</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">not</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ch</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" .,'!\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">inword</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">if</span> <span style="color: #008080;">not</span> <span style="color: #000000;">wordch</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">word</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">lower</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">wordend</span><span style="color: #0000FF;">])</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">word</span><span style="color: #0000FF;">,</span><span style="color: #000000;">words</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">rep</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">mod</span><span style="color: #0000FF;">(</span><span style="color: #000000;">k</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)?</span><span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">:</span><span style="color: #000000;">k</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)]</span>
<span style="color: #000080;font-style:italic;">-- if s[i+2..wordend]=rep[2..$] then -- might be wanted here
-- -- (either skipping completely or all upper-&gt;all upper)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]!=</span><span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">][</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">then</span> <span style="color: #000000;">rep</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">upper</span><span style="color: #0000FF;">(</span><span style="color: #000000;">rep</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">wordend</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">rep</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">inword</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">elsif</span> <span style="color: #000000;">wordch</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">inword</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span>
<span style="color: #000000;">wordend</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">i</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">tests</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"She was a soul stripper. She took my heart!\n"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Her dog belongs to him but his dog is hers!\n"</span><span style="color: #0000FF;">}</span> <span style="color: #000080;font-style:italic;">-- ha ha!</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tests</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">ti</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tests</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span>
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">reverse_gender</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ti</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">rr</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">reverse_gender</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ti</span><span style="color: #0000FF;">&</span><span style="color: #000000;">r</span><span style="color: #0000FF;">&</span><span style="color: #000000;">rr</span><span style="color: #0000FF;">&</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</syntaxhighlight>-->
{{out}}
<pre>
She was a soul stripper. She took my heart!
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

Her dog belongs to him but his dog is hers!
His dog belongs to her but her dog is his!
Her dog belongs to his but his dog is her!
</pre>
</pre>


=={{header|PowerShell}}==
=={{header|PowerShell}}==
{{trans|J}} (Made more PowerShelly.)
{{trans|J}} (Made more PowerShelly.)
<syntaxhighlight lang="powershell">
<lang PowerShell>
function Switch-Gender ([string]$String)
function Switch-Gender ([string]$String)
{
{
Line 159: Line 639:
Switch-Gender "She was a soul stripper. She took my heart!"
Switch-Gender "She was a soul stripper. She took my heart!"
Switch-Gender (Switch-Gender "She was a soul stripper. She took my heart!")
Switch-Gender (Switch-Gender "She was a soul stripper. She took my heart!")
</syntaxhighlight>
</lang>
{{Out}}
{{Out}}
<pre>
<pre>
Line 167: Line 647:


=={{header|Python}}==
=={{header|Python}}==
<lang Python>#!/usr/bin/env python
<syntaxhighlight lang="python">#!/usr/bin/env python
# -*- coding: utf-8 -*- #
# -*- coding: utf-8 -*- #
Line 290: Line 770:
return "".join([ word+switch[gen] for word,gen in zip(text[::2],text[1::2])])+text[-1]
return "".join([ word+switch[gen] for word,gen in zip(text[::2],text[1::2])])+text[-1]
print rev_gender(text)</lang>
print rev_gender(text)</syntaxhighlight>
'''Output:'''
'''Output:'''
<pre>
<pre>
Line 305: Line 785:


=={{header|Racket}}==
=={{header|Racket}}==
<lang racket>
<syntaxhighlight lang="racket">
#lang at-exp racket
#lang at-exp racket


Line 400: Line 880:
by the cannibal propensity he nourished in his untutored youth.
by the cannibal propensity he nourished in his untutored youth.
}))
}))
</syntaxhighlight>
</lang>
{{out}}
{{out}}
<pre>
<pre>
Line 415: Line 895:
by the cannibal propensity she nourished in her untutored youth.
by the cannibal propensity she nourished in her untutored youth.
</pre>
</pre>

=={{header|Raku}}==
(formerly Perl 6)
Mechanically, this task is trivial. Raku provides several flexible and powerful methods to wrangle text. Linguistically, this task is impossible (and laughable). Mappings are non-regular and in many cases, non-deterministic without semantic analysis of the content and context, which is '''WAY''' beyond what anyone is going to invest in a Rosettacode task. Whatever.

For extremely limited circumstances such as this example, this should suffice. Notice case matching and replication. Handles contractions, but ignores embedded matching text.

<syntaxhighlight lang="raku" line>say S:g:ii/«'she'»/he/ given "She was a soul stripper. She took my heart! They say she's going to put me on a shelf.";</syntaxhighlight>
{{out}}
<pre>He was a soul stripper. He took my heart! They say he's going to put me on a shelf.</pre>


=={{header|REXX}}==
=={{header|REXX}}==
Not much effort was put into compressing the words (as far as pluralizing and constructing the
Not much effort was put into compressing the words (as far as pluralizing and constructing the
various forms of words). &nbsp; More code could be written to parse words that have a hyphen &nbsp; (or minus.
various forms of words). &nbsp; More code could be written to parse words that have a hyphen &nbsp; (or minus).

<lang rexx>/*REXX program reverse genderizes a text string (that may contain gender-specific words)*/
The 1<sup>st</sup> letter of each word in examined and it's case (lower/upper) is preserved.

Given the large size of the table (list), it would make more sense to put the words in a separate file instead of coding them in-line (within the computer program).
<syntaxhighlight lang="rexx">/*REXX program reverse genderizes a text string (that may contain gender-specific words)*/
parse value linesize()-1 with sw @ @. !. /*get screen width, nullify some vars.*/
parse value linesize()-1 with sw @ @. !. /*get screen width, nullify some vars.*/
parse arg old
parse arg old
Line 436: Line 930:
@=@ "abboty abbess"
@=@ "abboty abbess"
@=@ "actor actress"
@=@ "actor actress"
@=@ "ad-boy ad-girl"
@=@ "ad-boy ad-girl ad-man ad-woman ad-men ad-women"
@=@ "adboy adgirl adman adwoman admen adwomen"
@=@ "ad-man ad-woman ad-men ad-women"
@=@ "adboy adgirl"
@=@ "adman adwoman admen adwomen"
@=@ "administrator administratrix"
@=@ "administrator administratrix"
@=@ "adonis belle"
@=@ "adonis belle"
Line 445: Line 937:
@=@ "agribusinessboy agribusinessgirl"
@=@ "agribusinessboy agribusinessgirl"
@=@ "agribusinessman agribusinesswoman agribusinessmen agribusinesswomen"
@=@ "agribusinessman agribusinesswoman agribusinessmen agribusinesswomen"
@=@ "aidboy aidgirl"
@=@ "aidboy aidgirl aidman aidwoman aidmen aidwomen"
@=@ "airboy airgirl airman airwoman airmen airwomen"
@=@ "aidman aidwoman aidmen aidwomen"
@=@ "aircraftboy aircraftgirl aircraftman aircraftwoman aircraftmen aircraftwomen"
@=@ "airboy airgirl"
@=@ "aircraftsboy aircraftsgirl aircraftsman aircraftswoman aircraftsmen aircraftswomen"
@=@ "aircraftboy aircraftgirl"
@=@ "aircrewboy aircrewgirl aircrewman aircrewwoman aircrewmen aircrewwomen"
@=@ "aircraftman aircraftwoman aircraftmen aircraftwomen"
@=@ "alderboy aldergirl alderman alderwoman aldermen alderwomen"
@=@ "aircraftsboy aircraftsgirl"
@=@ "aircraftsman aircraftswoman aircraftsmen aircraftswomen"
@=@ "aircrewboy aircrewgirl"
@=@ "aircrewman aircrewwoman aircrewmen aircrewwomen"
@=@ "airman airwoman airmen airwomen"
@=@ "alderboy aldergirl"
@=@ "alderman alderwoman aldermen alderwomen"
@=@ "almsboy almsgirl"
@=@ "almsboy almsgirl"
@=@ "almsman almswoman almsmen almswomen"
@=@ "almsman almswoman almsmen almswomen"
@=@ "alterboy altergirl alterman alterwoman altermen alterwomen"
@=@ "alongshoreboy alongshoregirl"
@=@ "alongshoreboy alongshoregirl"
@=@ "alongshoreman alongshorewoman alongshoremen alongshorewomen"
@=@ "alongshoreman alongshorewoman alongshoremen alongshorewomen"
@=@ "ambassador ambassadress"
@=@ "ambassador ambassadress"
@=@ "ambulanceboy ambulancegirl"
@=@ "ambulanceboy ambulancegirl ambulanceman ambulancewoman ambulancemen ambulancewomen"
@=@ "ambulanceman ambulancewoman ambulancemen ambulancewomen"
@=@ "anchor anchress"
@=@ "anchor anchress"
@=@ "anchorboy anchorgirl"
@=@ "anchorboy anchorgirl anchorman anchorwoman anchormen anchorwomen"
@=@ "apeboy apegirl apeman apewoman apemen apewomen"
@=@ "anchorman anchorwoman anchormen anchorwomen"
@=@ "apeboy apegirl"
@=@ "apeman apewoman apemen apewomen"
@=@ "archduke archduchess"
@=@ "archduke archduchess"
@=@ "archer archeress"
@=@ "archer archeress"
@=@ "artilleryboy artillerygirl"
@=@ "artilleryboy artillerygirl artilleryman artillerywoman artillerymen artillerywomen"
@=@ "artsboy artsgirl artsman artswoman artsmen artswomen"
@=@ "artilleryman artillerywoman artillerymen artillerywomen"
@=@ "assboy assgirl assman asswoman assmen asswomen"
@=@ "artsboy artsgirl"
@=@ "assemblyboy assemblygirl assemblyman assemblywoman assemblymen assemblywomen"
@=@ "artsman artswoman artsmen artswomen"
@=@ "attackboy attackgirl attackman attackwoman attackmen attackwomen"
@=@ "assboy assgirl"
@=@ "assemblyboy assemblygirl"
@=@ "assemblyman assemblywoman assemblymen assemblywomen"
@=@ "assman asswoman assmen asswomen"
@=@ "attackboy attackgirl"
@=@ "attackman attackwoman attackmen attackwomen"
@=@ "author authoress"
@=@ "author authoress"
@=@ "aviator aviatrix aviators aviatrices"
@=@ "aviator aviatrix aviators aviatrices"
@=@ "axboy axgirl"
@=@ "axboy axgirl axman axwoman axmen axwomen"
@=@ "axeboy axegirl"
@=@ "axeboy axegirl axeman axewoman axemen axewomen"
@=@ "axeman axewoman axemen axewomen"
@=@ "axman axwoman axmen axwomen"
@=@ "bachelor bachelorette bachelor spinster"
@=@ "bachelor bachelorette bachelor spinster"
@=@ "backboy backgirl"
@=@ "backboy backgirl backman backwoman backmen backwomen"
@=@ "backwoodsboy backwoodsgirl backwoodsman backwoodswoman backwoodsmen backwoodswomen"
@=@ "backman backwoman backmen backwomen"
@=@ "badboy badgirl badman badwoman badmen badwomen"
@=@ "backwoodsboy backwoodsgirl"
@=@ "bagboy baggirl bagman bagwoman bagmen bagwomen"
@=@ "backwoodsman backwoodswoman backwoodsmen backwoodswomen"
@=@ "baggageboy baggagegirl baggageman baggagewoman baggagemen baggagewomen"
@=@ "badboy badgirl"
@=@ "badman badwoman badmen badwomen"
@=@ "bagboy baggirl"
@=@ "baggageboy baggagegirl"
@=@ "baggageman baggagewoman baggagemen baggagewomen"
@=@ "bagman bagwoman bagmen bagwomen"
@=@ "bail-bondsboy bail-bondsgirl"
@=@ "bail-bondsboy bail-bondsgirl"
@=@ "bail-bondsman bail-bondswoman bail-bondsmen bail-bondswomen"
@=@ "bail-bondsman bail-bondswoman bail-bondsmen bail-bondswomen"
@=@ "bailsboy bailsgirl"
@=@ "bailsboy bailsgirl bailsman bailswoman bailsmen bailswomen"
@=@ "bailsman bailswoman bailsmen bailswomen"
@=@ "ballerino ballerina"
@=@ "ballerino ballerina"
@=@ "bandsboy bandsgirl"
@=@ "bandsboy bandsgirl bandsman bandswoman bandsmen bandswomen"
@=@ "barboy bargirl barman barwoman barmen barwomen barman barmaid"
@=@ "bandsman bandswoman bandsmen bandswomen"
@=@ "bargeboy bargegirl bargeman bargewoman bargemen bargewomen"
@=@ "barboy bargirl"
@=@ "bargeboy bargegirl"
@=@ "bargeman bargewoman bargemen bargewomen"
@=@ "barkeeper barkeeperess"
@=@ "barkeeper barkeeperess"
@=@ "barman barwoman barmen barwomen barman barmaid"
@=@ "barman barwoman barmen barwomen"
@=@ "baron baroness baronet baronetess"
@=@ "baron baroness baronet baronetess"
@=@ "baseboy basegirl"
@=@ "baseboy basegirl baseman basewoman basemen basewomen"
@=@ "bassboy bassgirl bassman basswoman bassmen basswomen"
@=@ "baseman basewoman basemen basewomen"
@=@ "batboy batgirl batman batwoman batmen batwomen"
@=@ "bassboy bassgirl"
@=@ "batsboy batsgirl batsman batswoman batsmen batswomen"
@=@ "bassman basswoman bassmen basswomen"
@=@ "bayboy baygirl bayman baywoman baymen baywomen"
@=@ "batboy batgirl"
@=@ "beadsboy beadsgirl beadsman beadswoman beadsmen beadswomen"
@=@ "batboy batgirl"
@=@ "bedesboy bedesgirl bedesman bedeswoman bedesmen bedeswomen"
@=@ "batman batwoman batmen batwomen"
@=@ "beggarboy beggargirl beggarman beggarwoman beggarmen beggarwomen"
@=@ "batman batwoman"
@=@ "bellboy bellgirl bellman bellwoman bellmen bellwomen"
@=@ "batsboy batsgirl"
@=@ "batsman batswoman batsmen batswomen"
@=@ "bayboy baygirl"
@=@ "bayman baywoman baymen baywomen"
@=@ "beadsboy beadsgirl"
@=@ "beadsman beadswoman beadsmen beadswomen"
@=@ "bedesboy bedesgirl"
@=@ "bedesman bedeswoman bedesmen bedeswomen"
@=@ "beggarboy beggargirl"
@=@ "beggarman beggarwoman beggarmen beggarwomen"
@=@ "bellboy bellgirl"
@=@ "bellman bellwoman bellmen bellwomen"
@=@ "benefactor benefactress"
@=@ "benefactor benefactress"
@=@ "billboy billgirl"
@=@ "billboy billgirl billman billwoman billmen billwomen"
@=@ "billman billwoman billmen billwomen"
@=@ "billy nanny billies nannies"
@=@ "billy nanny billies nannies"
@=@ "billygoat nannygoat"
@=@ "billygoat nannygoat"
@=@ "binboy bingirl"
@=@ "binboy bingirl binman binwoman binmen binwomen"
@=@ "birdboy birdgirl birdman birdwoman birdmen birdwomen"
@=@ "binman binwoman binmen binwomen"
@=@ "birdboy birdgirl"
@=@ "birdman birdwoman birdmen birdwomen"
@=@ "blond blonde"
@=@ "blond blonde"
@=@ "bluesboy bluesgirl"
@=@ "bluesboy bluesgirl bluesman blueswoman bluesmen blueswomen"
@=@ "bluesman blueswoman bluesmen blueswomen"
@=@ "boar sow"
@=@ "boar sow"
@=@ "boardboy boardgirl"
@=@ "boardboy boardgirl boardman boardwoman boardmen boardwomen"
@=@ "boatboy boatgirl boatman boatwoman boatmen boatwomen"
@=@ "boardman boardwoman boardmen boardwomen"
@=@ "boatsboy boatsgirl boatsman boatswoman boatsmen boatswomen"
@=@ "boatboy boatgirl"
@=@ "bogeyboy bogeygirl bogeyman bogeywoman bogeymen bogeywomen"
@=@ "boatman boatwoman boatmen boatwomen"
@=@ "bogyboy bogygirl bogyman bogywoman bogymen bogywomen"
@=@ "boatsboy boatsgirl"
@=@ "boilerboy boilergirl boilerman boilerwoman boilermen boilerwomen"
@=@ "boatsman boatswoman boatsmen boatswomen"
@=@ "bombardboy bombardgirl bombardman bombardwoman bombardmen bombardwomen"
@=@ "bogeyboy bogeygirl"
@=@ "bondboy bondgirl bondman bondwoman bondmen bondwomen"
@=@ "bogeyman bogeywoman bogeymen bogeywomen"
@=@ "bondsboy bondsgirl bondsman bondswoman bondsmen bondswomen"
@=@ "bogyboy bogygirl"
@=@ "bonesboy bonesgirl bonesman boneswoman bonesmen boneswomen"
@=@ "bogyman bogywoman bogymen bogywomen"
@=@ "boogeyboy boogeygirl boogeyman boogeywoman boogeymen boogeywomen"
@=@ "boilerboy boilergirl"
@=@ "boogieboy boogiegirl boogieman boogiewoman boogiemen boogiewomen"
@=@ "boilerman boilerwoman boilermen boilerwomen"
@=@ "boogyboy boogygirl boogyman boogywoman boogymen boogywomen"
@=@ "bombardboy bombardgirl"
@=@ "bookboy bookgirl bookman bookwoman bookmen bookwomen"
@=@ "bombardman bombardwoman bombardmen bombardwomen"
@=@ "boothboy boothgirl boothman boothwoman boothmen boothwomen"
@=@ "bondboy bondgirl"
@=@ "bordboy bordgirl bordman bordwoman bordmen bordwomen"
@=@ "bondman bondwoman bondmen bondwomen"
@=@ "bowboy bowgirl bowman bowwoman bowmen bowwomen"
@=@ "bondsboy bondsgirl"
@=@ "bowsboy bowsgirl bowsman bowswoman bowsmen bowswomen"
@=@ "bondsman bondswoman bondsmen bondswomen"
@=@ "boxboy boxgirl boxman boxwoman boxmen boxwomen"
@=@ "Bonesboy Bonesgirl"
@=@ "Bonesman Boneswoman Bonesmen Boneswomen"
@=@ "boogeyboy boogeygirl"
@=@ "boogeyman boogeywoman boogeymen boogeywomen"
@=@ "boogieboy boogiegirl"
@=@ "boogieman boogiewoman boogiemen boogiewomen"
@=@ "boogyboy boogygirl"
@=@ "boogyman boogywoman boogymen boogywomen"
@=@ "bookboy bookgirl"
@=@ "bookman bookwoman bookmen bookwomen"
@=@ "boothboy boothgirl"
@=@ "boothman boothwoman boothmen boothwomen"
@=@ "bordboy bordgirl"
@=@ "bordman bordwoman bordmen bordwomen"
@=@ "bowboy bowgirl"
@=@ "bowman bowwoman bowmen bowwomen"
@=@ "bowsboy bowsgirl"
@=@ "bowsman bowswoman bowsmen bowswomen"
@=@ "boxboy boxgirl"
@=@ "boxman boxwoman boxmen boxwomen"
@=@ "boy girl boydom girldom boyhood girlhood"
@=@ "boy girl boydom girldom boyhood girlhood"
@=@ "boy-band girl-band"
@=@ "boy-band girl-band"
Line 592: Line 1,025:
@=@ "boylike girllike boylikeness girllikeness boyliker girlliker"
@=@ "boylike girllike boylikeness girllikeness boyliker girlliker"
@=@ "boylikest girllikest boyscout girlscout boyship girlship"
@=@ "boylikest girllikest boyscout girlscout boyship girlship"
@=@ "brakeboy brakegirl"
@=@ "brakeboy brakegirl brakeman brakewoman brakemen brakewomen"
@=@ "breadboy breadgirl breadman breadwoman breadmen breadwomen"
@=@ "brakeman brakewoman brakemen brakewomen"
@=@ "breakboy breakgirl breakman breakwoman breakmen breakwomen"
@=@ "breadboy breadgirl"
@=@ "breadman breadwoman breadmen breadwomen"
@=@ "breakboy breakgirl"
@=@ "breakman breakwoman breakmen breakwomen"
@=@ "brethern sistern"
@=@ "brethern sistern"
@=@ "brickboy brickgirl"
@=@ "brickboy brickgirl brickman brickwoman brickmen brickwomen"
@=@ "brickman brickwoman brickmen brickwomen"
@=@ "bridegroom bride"
@=@ "bridegroom bride"
@=@ "bridesboy bridesgirl"
@=@ "bridesboy bridesgirl bridesman brideswoman bridesmen brideswomen"
@=@ "briefboy briefgirl briefman briefwoman briefmen briefwomen"
@=@ "bridesman brideswoman bridesmen brideswomen"
@=@ "brinksboy brinksgirl brinksman brinkswoman brinksmen brinkswomen"
@=@ "briefboy briefgirl"
@=@ "briefman briefwoman briefmen briefwomen"
@=@ "brinksboy brinksgirl"
@=@ "brinksman brinkswoman brinksmen brinkswomen"
@=@ "bro sis brother sister brotherhood sisterhood brotherly sisterly"
@=@ "bro sis brother sister brotherhood sisterhood brotherly sisterly"
@=@ "brotherboy brothergirl"
@=@ "brotherboy brothergirl brotherman brotherwoman brothermen brotherwomen"
@=@ "brotherman brotherwoman brothermen brotherwomen"
@=@ "buck doe"
@=@ "buck doe"
@=@ "bull cow bullshit cowshit"
@=@ "bull cow bullshit cowshit"
@=@ "busboy busgirl"
@=@ "busboy busgirl busman buswoman busmen buswomen"
@=@ "bushboy bushgirl"
@=@ "bushboy bushgirl bushman bushwoman bushmen bushwomen"
@=@ "bushelboy bushelgirl"
@=@ "bushelboy bushelgirl bushelman bushelwoman bushelmen bushelwomen"
@=@ "businessboy businessgirl businessman businesswoman businessmen businesswomen"
@=@ "bushelman bushelwoman bushelmen bushelwomen"
@=@ "bushman bushwoman bushmen bushwomen"
@=@ "businessboy businessgirl"
@=@ "businessman businesswoman businessmen businesswomen"
@=@ "busman buswoman busmen buswomen"
@=@ "butcher butcheress"
@=@ "butcher butcheress"
@=@ "butt-boy butt-girl"
@=@ "butt-boy butt-girl butt-man butt-woman butt-men butt-women"
@=@ "butterboy buttergirl butterman butterwoman buttermen butterwomen"
@=@ "butt-man butt-woman butt-men butt-women"
@=@ "buttonboy buttongirl buttonman buttonwoman buttonmen buttonwomen"
@=@ "butterboy buttergirl"
@=@ "cabboy cabgirl cabman cabwoman cabmen cabwomen"
@=@ "butterman butterwoman buttermen butterwomen"
@=@ "cakeboy cakegirl cakeman cakewoman cakemen cakewomen"
@=@ "buttonboy buttongirl"
@=@ "buttonman buttonwoman buttonmen buttonwomen"
@=@ "cabboy cabgirl"
@=@ "cabman cabwoman cabmen cabwomen"
@=@ "cakeboy cakegirl"
@=@ "cakeman cakewoman cakemen cakewomen"
@=@ "caliph calafia caliph calipha"
@=@ "caliph calafia caliph calipha"
@=@ "cameraboy cameragirl"
@=@ "cameraboy cameragirl cameraman camerawoman cameramen camerawomen"
@=@ "candy-boy candy-girl candy-man candy-woman candy-men candy-women"
@=@ "cameraman camerawoman cameramen camerawomen"
@=@ "candyboy candygirl candyman candywoman candymen candywomen"
@=@ "candy-boy candy-girl"
@=@ "canoeboy canoegirl canoeman canoewoman canoemen canoewomen"
@=@ "candy-man candy-woman candy-men candy-women"
@=@ "carboy cargirl carman carwoman carmen carwomen"
@=@ "candyboy candygirl"
@=@ "cartboy cartgirl cartman cartwoman cartmen cartwomen"
@=@ "candyman candywoman candymen candywomen"
@=@ "canoeboy canoegirl"
@=@ "canoeman canoewoman canoemen canoewomen"
@=@ "carboy cargirl"
@=@ "carman carwoman carmen carwomen"
@=@ "cartboy cartgirl"
@=@ "cartman cartwoman cartmen cartwomen"
@=@ "caterer cateress"
@=@ "caterer cateress"
@=@ "catfisherboy catfishergirl"
@=@ "catfisherboy catfishergirl catfisherman catfisherwoman catfishermen catfisherwomen"
@=@ "cattleboy cattlegirl cattleman cattlewoman cattlemen cattlewomen"
@=@ "catfisherman catfisherwoman catfishermen catfisherwomen"
@=@ "cavalryboy cavalrygirl cavalryman cavalrywoman cavalrymen cavalrywomen"
@=@ "cattleboy cattlegirl"
@=@ "caveboy cavegirl caveman cavewoman cavemen cavewomen"
@=@ "cattleman cattlewoman cattlemen cattlewomen"
@=@ "cellarboy cellargirl cellarman cellarwoman cellarmen cellarwomen"
@=@ "cavalryboy cavalrygirl"
@=@ "centerboy centergirl centerman centerwoman centermen centerwomen"
@=@ "cavalryman cavalrywoman cavalrymen cavalrywomen"
@=@ "centreboy centregirl centreman centrewoman centremen centrewomen"
@=@ "caveboy cavegirl"
@=@ "chainboy chaingirl chainman chainwoman chainmen chainwomen"
@=@ "caveman cavewoman cavemen cavewomen"
@=@ "chairboy chairgirl chairman chairwoman chairmen chairwomen"
@=@ "cellarboy cellargirl"
@=@ "cellarman cellarwoman cellarmen cellarwomen"
@=@ "centerboy centergirl"
@=@ "centerman centerwoman centermen centerwomen"
@=@ "centreboy centregirl"
@=@ "centreman centrewoman centremen centrewomen"
@=@ "chainboy chaingirl"
@=@ "chainman chainwoman chainmen chainwomen"
@=@ "chairboy chairgirl"
@=@ "chairman chairwoman chairmen chairwomen"
@=@ "chanter chantress"
@=@ "chanter chantress"
@=@ "chapboy chapgirl"
@=@ "chapboy chapgirl chapman chapwoman chapmen chapwomen"
@=@ "chapelboy chapelgirl"
@=@ "chapelboy chapelgirl chapelman chapelwoman chapelmen chapelwomen"
@=@ "charboy chargirl charman charwoman charmen charwomen"
@=@ "chapelman chapelwoman chapelmen chapelwomen"
@=@ "chapman chapwoman chapmen chapwomen"
@=@ "charboy chargirl"
@=@ "charman charwoman charmen charwomen"
@=@ "checkweighboy checkweighgirl"
@=@ "checkweighboy checkweighgirl"
@=@ "checkweighman checkweighwoman checkweighmen checkweighwomen"
@=@ "checkweighman checkweighwoman checkweighmen checkweighwomen"
@=@ "chessboy chessgirl"
@=@ "chessboy chessgirl chessman chesswoman chessmen chesswomen"
@=@ "chessman chesswoman chessmen chesswomen"
@=@ "chief chiefess"
@=@ "chief chiefess"
@=@ "chinaboy chinagirl"
@=@ "chinaboy chinagirl chinaman chinawoman chinamen chinawomen"
@=@ "chineseboy chinesegirl chineseman chinesewoman chinesemen chinesewomen"
@=@ "chinaman chinawoman chinamen chinawomen"
@=@ "churchboy churchgirl churchman churchwoman churchmen churchwomen"
@=@ "Chineseboy Chinesegirl"
@=@ "cisboy cisgirl cisman ciswoman cismen ciswomen"
@=@ "Chineseman Chinesewoman Chinesemen Chinesewomen"
@=@ "clansboy clansgirl clansman clanswoman clansmen clanswomen"
@=@ "churchboy churchgirl"
@=@ "classboy classgirl classman classwoman classmen classwomen"
@=@ "churchman churchwoman churchmen churchwomen"
@=@ "clergyboy clergygirl clergyman clergywoman clergymen clergywomen"
@=@ "cisboy cisgirl"
@=@ "cisman ciswoman cismen ciswomen"
@=@ "clansboy clansgirl"
@=@ "clansman clanswoman clansmen clanswomen"
@=@ "classboy classgirl"
@=@ "classman classwoman classmen classwomen"
@=@ "clergyboy clergygirl"
@=@ "clergyman clergywoman clergymen clergywomen"
@=@ "clerk clerkess"
@=@ "clerk clerkess"
@=@ "clubboy clubgirl"
@=@ "clubboy clubgirl clubman clubwoman clubmen clubwomen"
@=@ "coachboy coachgirl coachman coachwoman coachmen coachwomen"
@=@ "clubman clubwoman clubmen clubwomen"
@=@ "coachboy coachgirl"
@=@ "coachman coachwoman coachmen coachwomen"
@=@ "coadjutor cadutrix"
@=@ "coadjutor cadutrix"
@=@ "coalboy coalgirl"
@=@ "coalboy coalgirl coalman coalwoman coalmen coalwomen"
@=@ "coalman coalwoman coalmen coalwomen"
@=@ "coastguardsboy coastguardsgirl"
@=@ "coastguardsboy coastguardsgirl"
@=@ "coastguardsman coastguardswoman coastguardsmen coastguardswomen"
@=@ "coastguardsman coastguardswoman coastguardsmen coastguardswomen"
@=@ "cock hen"
@=@ "cock hen"
@=@ "cocksboy cocksgirl"
@=@ "cocksboy cocksgirl cocksman cockswoman cocksmen cockswomen"
@=@ "cogboy coggirl cogman cogwoman cogmen cogwomen"
@=@ "cocksman cockswoman cocksmen cockswomen"
@=@ "colorboy colorgirl colorman colorwoman colormen colorwomen"
@=@ "cogboy coggirl"
@=@ "colourboy colourgirl colourman colourwoman colourmen colourwomen"
@=@ "cogman cogwoman cogmen cogwomen"
@=@ "colorboy colorgirl"
@=@ "colorman colorwoman colormen colorwomen"
@=@ "colourboy colourgirl"
@=@ "colourman colourwoman colourmen colourwomen"
@=@ "colt fillie"
@=@ "colt fillie"
@=@ "commedian comedienne"
@=@ "commedian comedienne"
@=@ "committeeboy committeegirl"
@=@ "committeeboy committeegirl committeeman committeewoman committeemen committeewomen"
@=@ "committeeman committeewoman committeemen committeewomen"
@=@ "commonwealthboy commonwealthgirl"
@=@ "commonwealthboy commonwealthgirl"
@=@ "commonwealthman commonwealthwoman commonwealthmen commonwealthwomen"
@=@ "commonwealthman commonwealthwoman commonwealthmen commonwealthwomen"
@=@ "commonwealthsboy commonwealthsgirl"
@=@ "commonwealthsboy commonwealthsgirl"
@=@ "commonwealthsman commonwealthswoman commonwealthsmen commonwealthswomen"
@=@ "commonwealthsman commonwealthswoman commonwealthsmen commonwealthswomen"
@=@ "conboy congirl"
@=@ "conboy congirl conman conwoman conmen conwomen"
@=@ "conductor conductress"
@=@ "conductor conductress"
@=@ "confessor confessoress"
@=@ "confessor confessoress"
@=@ "congressboy congressgirl"
@=@ "congressboy congressgirl congressman congresswoman congressmen congresswomen"
@=@ "congressman congresswoman congressmen congresswomen"
@=@ "conman conwoman conmen conwomen"
@=@ "conquer conqueress"
@=@ "conquer conqueress"
@=@ "cook cookess"
@=@ "cook cookess"
@=@ "copeboy copegirl"
@=@ "copeboy copegirl copeman copewoman copemen copewomen"
@=@ "cornerboy cornergirl cornerman cornerwoman cornermen cornerwomen"
@=@ "copeman copewoman copemen copewomen"
@=@ "cornishboy cornishgirl cornishman cornishwoman cornishmen cornishwomen"
@=@ "cornerboy cornergirl"
@=@ "corpsboy corpsgirl corpsman corpswoman corpsmen corpswomen"
@=@ "cornerman cornerwoman cornermen cornerwomen"
@=@ "councilboy councilgirl councilman councilwoman councilmen councilwomen"
@=@ "Cornishboy Cornishgirl"
@=@ "Cornishman Cornishwoman Cornishmen Cornishwomen"
@=@ "corpsboy corpsgirl"
@=@ "corpsman corpswoman corpsmen corpswomen"
@=@ "councilboy councilgirl"
@=@ "councilman councilwoman councilmen councilwomen"
@=@ "count countess"
@=@ "count countess"
@=@ "counterboy countergirl"
@=@ "counterboy countergirl counterman counterwoman countermen counterwomen"
@=@ "countryboy countrygirl countryman countrywoman countrymen countrywomen"
@=@ "counterman counterwoman countermen counterwomen"
@=@ "countryboy countrygirl"
@=@ "countryman countrywoman countrymen countrywomen"
@=@ "cowboy cowgirl"
@=@ "cowboy cowgirl cowman cowwoman cowmen cowwomen"
@=@ "cowboy cowgirl cowman cowwoman cowmen cowwomen"
@=@ "cracksboy cracksgirl cracksman crackswoman cracksmen crackswomen"
@=@ "cowman cowwoman cowmen cowwomen"
@=@ "craftsboy craftsgirl craftsman craftswoman craftsmen craftswomen"
@=@ "cracksboy cracksgirl"
@=@ "cragsboy cragsgirl cragsman cragswoman cragsmen cragswomen"
@=@ "cracksman crackswoman cracksmen crackswomen"
@=@ "craftsboy craftsgirl"
@=@ "craftsman craftswoman craftsmen craftswomen"
@=@ "cragsboy cragsgirl"
@=@ "cragsman cragswoman cragsmen cragswomen"
@=@ "crayfisherboy crayfishergirl"
@=@ "crayfisherboy crayfishergirl"
@=@ "crayfisherman crayfisherwoman crayfishermen crayfisherwomen"
@=@ "crayfisherman crayfisherwoman crayfishermen crayfisherwomen"
@=@ "cyberboy cybergirl"
@=@ "cyberboy cybergirl cyberman cyberwoman cybermen cyberwomen"
@=@ "cyberman cyberwoman cybermen cyberwomen"
@=@ "czar czarina"
@=@ "czar czarina"
@=@ "dad mom dada mama daddy mommy daddies mommies"
@=@ "dad mom dada mama daddy mommy daddies mommies"
@=@ "dairyboy dairygirl"
@=@ "dairyboy dairygirl dairyman dairywoman dairymen dairywomen"
@=@ "dangerboy dangergirl dangerman dangerwoman dangermen dangerwomen"
@=@ "dairyman dairywoman dairymen dairywomen"
@=@ "daysboy daysgirl daysman dayswoman daysmen dayswomen"
@=@ "dangerboy dangergirl"
@=@ "dangerman dangerwoman dangermen dangerwomen"
@=@ "daysboy daysgirl"
@=@ "daysman dayswoman daysmen dayswomen"
@=@ "deacon deaconess"
@=@ "deacon deaconess"
@=@ "deadboy deadgirl"
@=@ "deadboy deadgirl deadman deadwoman deadmen deadwomen"
@=@ "deadman deadwoman deadmen deadwomen"
@=@ "debutant debutante"
@=@ "debutant debutante"
@=@ "demesboy demesgirl"
@=@ "demesboy demesgirl demesman demeswoman demesmen demeswomen"
@=@ "demesman demeswoman demesmen demeswomen"
@=@ "demon demoness"
@=@ "demon demoness"
@=@ "deskboy deskgirl"
@=@ "deskboy deskgirl deskman deskwoman deskmen deskwomen"
@=@ "deskman deskwoman deskmen deskwomen"
@=@ "devil deviless"
@=@ "devil deviless"
@=@ "director directress"
@=@ "director directress"
@=@ "dirtboy dirtgirl"
@=@ "dirtboy dirtgirl dirtman dirtwoman dirtmen dirtwomen"
@=@ "dirtman dirtwoman dirtmen dirtwomen"
@=@ "divine divineress"
@=@ "divine divineress"
@=@ "divorce divorcee"
@=@ "divorce divorcee"
@=@ "doctor doctress"
@=@ "doctor doctress"
@=@ "dog bitch dogs bitches"
@=@ "dominator dominatrix dominators dominatrices"
@=@ "dominator dominatrix dominators dominatrices"
@=@ "dragon dragoness"
@=@ "dragon dragoness"
@=@ "drake duck"
@=@ "drake duck"
@=@ "draftboy draftgirl draftman draftwoman drafemen drafewomen"
@=@ "draughtsboy draughtsgirl"
@=@ "draftsboy draftsgirl draftsman draftswoman draftsmen draftswomen"
@=@ "draughtsman draughtswoman draughtsmen draughtswomen"
@=@ "draughtsboy draughtsgirl draughtsman draughtswoman draughtsmen draughtswomen"
@=@ "drayboy draygirl"
@=@ "drayman draywoman draymen draywomen"
@=@ "drayboy draygirl drayman draywoman draymen draywomen"
@=@ "drone bee"
@=@ "drone bee"
@=@ "dude dudette"
@=@ "dude dudette"
@=@ "duke duchess"
@=@ "duke duchess"
@=@ "Dutchboy Dutchgirl"
@=@ "dutchboy dutchgirl"
@=@ "dutchman dutchwoman dutchmen dutchwomen"
@=@ "Dutchman Dutchwoman Dutchmen Dutchwomen"
@=@ "earl countess"
@=@ "earl countess"
@=@ "earthboy earthgirl earthman earthwoman earthmen earthwomen"
@=@ "Earthboy Earthgirl"
@=@ "earthsboy earthsgirl earthsman earthswoman earthsmen earthswomen"
@=@ "Earthman Earthwoman Earthmen Earthwomen"
@=@ "earthsboy earthsgirl"
@=@ "earthsman earthswoman earthsmen earthswomen"
@=@ "editor editress"
@=@ "editor editress"
@=@ "editor editrix"
@=@ "editor editrix"
Line 799: Line 1,158:
@=@ "emperor empress"
@=@ "emperor empress"
@=@ "enchanter enchantress"
@=@ "enchanter enchantress"
@=@ "englishboy englishgirl englishman englishwoman englishmen englishwomen"
@=@ "Englishboy Englishgirl"
@=@ "everyboy everygirl everyman everywoman everymen everywomen"
@=@ "Englishman Englishwoman Englishmen Englishwomen"
@=@ "ex-boyfriend ex-girlfriend ex-husband ex-wife ex-husbands ex-wives"
@=@ "everyboy everygirl"
@=@ "everyman everywoman everymen everywomen"
@=@ "ex-boyfriend ex-girlfriend"
@=@ "ex-husband ex-wife ex-husbands ex-wives"
@=@ "executor executrix executor executres"
@=@ "executor executrix executor executres"
@=@ "faceboy facegirl"
@=@ "faceboy facegirl faceman facewoman facemen facewomen"
@=@ "faceman facewoman facemen facewomen"
@=@ "father mother"
@=@ "father mother"
@=@ "fatherfucker motherfucker fatherphocker motherphocker fatherfucker mutherfucker"
@=@ "fatherfucker motherfucker fatherphocker motherphocker fatherfucker mutherfucker"
@=@ "fatherhood motherhood"
@=@ "fatherhood motherhood"
@=@ "fiance fiancee"
@=@ "fiance fiancee"
@=@ "fireboy firegirl"
@=@ "fireboy firegirl fireman firewoman firemen firewomen"
@=@ "fisherboy fishergirl fisherman fisherwoman fishermen fisherwomen"
@=@ "fireman firewoman firemen firewomen"
@=@ "fishboy fishgirl fishman fishwoman fishmen fishwomen"
@=@ "fisherboy fishergirl"
@=@ "foeboy foegirl foeman foewoman foemen foewomen"
@=@ "fisherman fisherwoman fishermen fisherwomen"
@=@ "foreboy foregirl foreman forewoman foremen forewomen"
@=@ "fishman fishwoman fishmen fishwomen"
@=@ "freeboy freegirl freedman freedwoman freedmen freedwomen"
@=@ "foeboy foegirl"
@=@ "freedboy freedgirl freeman freewoman freemen freewomen"
@=@ "foeman foewoman foemen foewomen"
@=@ "frenchboy frenchgirl frenchman frenchwoman frenchmen frenchwomen"
@=@ "foreboy foregirl"
@=@ "fretboy fretgirl fretman fretwoman fretmen fretwomen"
@=@ "foreman forewoman foremen forewomen"
@=@ "freeboy freegirl"
@=@ "freedboy freedgirl"
@=@ "freedman freedwoman freedmen freedwomen"
@=@ "freeman freewoman freemen freewomen"
@=@ "Frenchboy Frenchgirl"
@=@ "Frenchman Frenchwoman Frenchmen Frenchwomen"
@=@ "fretboy fretgirl"
@=@ "fretman fretwoman fretmen fretwomen"
@=@ "friar nun"
@=@ "friar nun"
@=@ "frontboy frontgirl"
@=@ "frontboy frontgirl frontiersboy frontiersgirl"
@=@ "frontiersboy frontiersgirl"
@=@ "frontiersman frontierswoman frontiersmen frontierswomen"
@=@ "frontiersman frontierswoman frontiersmen frontierswomen"
@=@ "frontman frontwoman frontmen frontwomen"
@=@ "frontman frontwoman frontmen frontwomen"
@=@ "funnyboy funnygirl"
@=@ "funnyboy funnygirl funnyman funnywoman funnymen funnywomen"
@=@ "funnyman funnywoman funnymen funnywomen"
@=@ "gander goose ganders geese"
@=@ "gander goose ganders geese"
@=@ "gasboy gasgirl"
@=@ "gasboy gasgirl gasman gaswoman gasmen gaswomen"
@=@ "gentleboy gentlegirl gentleman gentlewoman gentlemen gentlewomen"
@=@ "gasman gaswoman gasmen gaswomen"
@=@ "gentleboy gentlegirl"
@=@ "gentleman gentlewoman gentlemen gentlewomen"
@=@ "giant giantess"
@=@ "giant giantess"
@=@ "gigolo hooker"
@=@ "gladiator gladiatrix"
@=@ "gladiator gladiatrix"
@=@ "gleeboy gleegirl"
@=@ "gleeboy gleegirl gleeman gleewoman gleemen gleewomen"
@=@ "gleeman gleewoman gleemen gleewomen"
@=@ "gloveboy glovegirl"
@=@ "gloveboy glovegirl"
@=@ "gloveman glovewoman glovemen glovewomen"
@=@ "gloveman glovewoman glovemen glovewomen"
@=@ "god godess"
@=@ "god godess"
@=@ "godson goddaughter"
@=@ "godfather godmother godson goddaughter"
@=@ "governor governoress"
@=@ "governor governoress"
@=@ "gownboy gowngirl"
@=@ "gownboy gowngirl gownman gownwoman gownmen gownwomen"
@=@ "gownsboy gownsgirl gownsman gownswoman gownsmen gownswomen"
@=@ "gownman gownwoman gownmen gownwomen"
@=@ "gownsboy gownsgirl"
@=@ "gownsman gownswoman gownsmen gownswomen"
@=@ "gramp granny"
@=@ "gramp granny"
@=@ "granddad grandmom"
@=@ "granddad grandmom"
Line 919: Line 1,260:
@=@ "gringo gringa"
@=@ "gringo gringa"
@=@ "groom bride"
@=@ "groom bride"
@=@ "groomsboy groomsgirl"
@=@ "groomsboy groomsgirl groomsman groomswoman groomsmen groomswomen"
@=@ "groundsboy groundsgirl groundsman groundswoman groundsmen groundswomen"
@=@ "groomsman groomswoman groomsmen groomswomen"
@=@ "gunboy gungirl gunman gunwoman gunmen gunwomen"
@=@ "groundsboy groundsgirl"
@=@ "groundsman groundswoman groundsmen groundswomen"
@=@ "gunboy gungirl"
@=@ "gunman gunwoman gunmen gunwomen"
@=@ "guy gal"
@=@ "guy gal"
@=@ "hackboy hackgirl"
@=@ "hackboy hackgirl hackman hackwoman hackmen hackwomen"
@=@ "hammerboy hammergirl hammerman hammerwoman hammermen hammerwomen"
@=@ "hackman hackwoman hackmen hackwomen"
@=@ "hammerboy hammergirl"
@=@ "hammerman hammerwoman hammermen hammerwomen"
@=@ "handcraftsboy handcraftsgirl"
@=@ "handcraftsboy handcraftsgirl"
@=@ "handcraftsman handcraftswoman handcraftsmen handcraftswomen"
@=@ "handcraftsman handcraftswoman handcraftsmen handcraftswomen"
@=@ "handi-craftsboy handi-craftsgirl"
@=@ "handi-craftsboy handi-craftsgirl"
@=@ "handi-craftsman handi-craftswoman handi-craftsmen handi-craftswomen"
@=@ "handi-craftsman handi-craftswoman handi-craftsmen handi-craftswomen"
@=@ "hangboy hanggirl"
@=@ "hangboy hanggirl hangman hangwoman hangmen hangwomen"
@=@ "hardboy hardgirl hardman hardwoman hardmen hardwomen"
@=@ "hangman hangwoman hangmen hangwomen"
@=@ "hatchetboy hatchetgirl hatchetman hatchetwoman hatchetmen hatchetwomen"
@=@ "hardboy hardgirl"
@=@ "he she him her himself herself his hers his her"
@=@ "hardman hardwoman hardmen hardwomen"
@=@ "he-boy he-girl he-man he-woman he-men he-women"
@=@ "hatchetboy hatchetgirl"
@=@ "hatchetman hatchetwoman hatchetmen hatchetwomen"
@=@ "he she him her himself herself his her"
@=@ "he-boy he-girl"
@=@ "he-man he-woman he-men he-women"
@=@ "headmaster headmistress"
@=@ "headmaster headmistress"
@=@ "heir heiress"
@=@ "heir heiress"
@=@ "helboy helgirl"
@=@ "helboy helgirl helman helwoman helmen helwomen"
@=@ "helman helwoman helmen helwomen"
@=@ "helmsman helmswoman helmsmen helmswomen"
@=@ "helmsman helmswoman helmsmen helmswomen"
@=@ "herdboy herdgirl herdman herdwoman herdmen herdwoman"
@=@ "heritor heritress heritor heritrix"
@=@ "heritor heritress heritor heritrix"
@=@ "hero heroine"
@=@ "hero heroine"
@=@ "highwayboy highwaygirl"
@=@ "highwayboy highwaygirl highwayman highwaywoman highwaymen highwaywomen"
@=@ "hillsboy hillsgirl hillsman hillswoman hillsmen hillswomen"
@=@ "highwayman highwaywoman highwaymen highwaywomen"
@=@ "hillsboy hillsgirl"
@=@ "hillsman hillswoman hillsmen hillswomen"
@=@ "hirdboy hirdgirl"
@=@ "hirdman hirdwoman hirdmen hirdwomen"
@=@ "hob jill"
@=@ "hob jill"
@=@ "horseboy horsegirl"
@=@ "horseboy horsegirl horseman horsewoman horsemen horsewomen"
@=@ "horseman horsewoman horsemen horsewomen"
@=@ "host hostess"
@=@ "host hostess"
@=@ "hunter huntress"
@=@ "hunter huntress"
@=@ "husband wife husbands wives"
@=@ "husband wife husbands wives"
@=@ "hypeboy hypegirl"
@=@ "hypeboy hypegirl hypeman hypewoman hypemen hypewomen"
@=@ "iceboy icegirl iceman icewoman icemen icewomen"
@=@ "hypeman hypewoman hypemen hypewomen"
@=@ "iceboy icegirl"
@=@ "iceman icewoman icemen icewomen"
@=@ "incubii sucubii incubus succubus"
@=@ "incubii sucubii incubus succubus"
@=@ "inheritor inheritress inheritor inheritrix"
@=@ "inheritor inheritress inheritor inheritrix"
@=@ "instructor instructress"
@=@ "instructor instructress"
@=@ "irishboy irishgirl irishman irishwoman irishmen irishwomen"
@=@ "Irishboy Irishgirl"
@=@ "ironboy irongirl ironman ironwoman ironmen ironwomen"
@=@ "Irishman Irishwoman Irishmen Irishwomen"
@=@ "ironboy irongirl"
@=@ "ironman ironwoman ironmen ironwomen"
@=@ "jackaroo jillaroo jack jill"
@=@ "jackaroo jillaroo jack jill"
@=@ "jew jewess"
@=@ "jew jewess"
Line 999: Line 1,322:
@=@ "kingpiece queenpiece"
@=@ "kingpiece queenpiece"
@=@ "kingpin queenpin kingpost queenpost"
@=@ "kingpin queenpin kingpost queenpost"
@=@ "kingsboy kingsgirl"
@=@ "kingsboy kingsgirl kingsman kingswoman kingsmen kingswomen"
@=@ "kingship queenship"
@=@ "kingship queenship"
@=@ "kingside queenside"
@=@ "kingside queenside"
@=@ "kingsize queensize"
@=@ "kingsize queensize"
@=@ "kingsman kingswoman kingsmen kingswomen"
@=@ "kingsman queensman kingsmen queensmen"
@=@ "kingsman queensman kingsmen queensmen"
@=@ "klansboy klansgirl"
@=@ "klansboy klansgirl klansman klanswoman klansmen klanswomen"
@=@ "kinglier queenlier kingliest queenliest"
@=@ "klansman klanswoman klansmen klanswomen"
@=@ "kinglihood queenlihood"
@=@ "kinglike queenlike kingliker queenliker kinglikest queenlikest"
@=@ "kingliness queenliness"
@=@ "kingling queenling kingling queenling kingly queenly"
@=@ "kingmaker queenmaker kingmaking queenmaking"
@=@ "kingpiece queenpiece"
@=@ "kingpin queenpin kingpost queenpost"
@=@ "kingsboy kingsgirl kingsman kingswoman kingsmen kingswomen"
@=@ "kingship queenship"
@=@ "kingside queenside"
@=@ "kingsize queensize"
@=@ "kingsman queensman kingsmen queensmen"
@=@ "klansboy klansgirl klansman klanswoman klansmen klanswomen"
@=@ "knight dame"
@=@ "knight dame"
@=@ "lad lass laddie lassie"
@=@ "lad lass laddie lassie"
Line 1,013: Line 1,348:
@=@ "latino latina"
@=@ "latino latina"
@=@ "launderer laundress"
@=@ "launderer laundress"
@=@ "laundryboy laundrygirl"
@=@ "laundryboy laundrygirl laundryman laundrywoman laundrymen laundrywomen"
@=@ "lawboy lawgirl lawman lawwoman lawmen lawwomen"
@=@ "laundryman laundrywoman laundrymen laundrywomen"
@=@ "lawboy lawgirl"
@=@ "lawman lawwoman lawmen lawwomen"
@=@ "lawyer layeress"
@=@ "lawyer layeress"
@=@ "layboy laygirl"
@=@ "layboy laygirl layman laywoman laymen laywomen"
@=@ "leatherboy leathergirl leatherman leatherwoman leathermen leatherwomen"
@=@ "layman laywoman laymen laywomen"
@=@ "legboy leggirl legman legwoman legmen legwomen"
@=@ "leatherboy leathergirl"
@=@ "liegeboy liegegirl liegeman liegewoman liegemen liegewomen"
@=@ "leatherman leatherwoman leathermen leatherwomen"
@=@ "lineboy linegirl lineman linewoman linemen linewomen"
@=@ "legboy leggirl"
@=@ "linesboy linesgirl linesman lineswoman linesmen lineswomen"
@=@ "legman legwoman legmen legwomen"
@=@ "linkboy linkgirl linkman linkwoman linkmen linkwomen"
@=@ "liegeboy liegegirl"
@=@ "liegeman liegewoman liegemen liegewomen"
@=@ "lineboy linegirl"
@=@ "lineman linewoman linemen linewomen"
@=@ "linesboy linesgirl"
@=@ "linesman lineswoman linesmen lineswomen"
@=@ "linkboy linkgirl"
@=@ "linkman linkwoman linkmen linkwomen"
@=@ "lion lioness"
@=@ "lion lioness"
@=@ "lizardboy lizardgirl"
@=@ "lizardboy lizardgirl lizardman lizardwoman lizardmen lizardwomen"
@=@ "lizardman lizardwoman lizardmen lizardwomen"
@=@ "lord lady lords ladies"
@=@ "lord lady lords ladies"
@=@ "madboy madgirl"
@=@ "madboy madgirl madman madwoman madmen madwomen"
@=@ "mailboy mailgirl mailman mailwoman mailmen mailwomen"
@=@ "madman madwoman madmen madwomen"
@=@ "mailboy mailgirl"
@=@ "mailman mailwoman mailmen mailwomen"
@=@ "male female maleness femaleness"
@=@ "male female maleness femaleness"
@=@ "man woman men women"
@=@ "man woman men women"
Line 1,054: Line 1,377:
@=@ "mastboy mastgirl"
@=@ "mastboy mastgirl"
@=@ "mastman mastwoman mastmen mastwomen"
@=@ "mastman mastwoman mastmen mastwomen"
@=@ "maybe-boy maybe-girl maybe-man maybe-woman maybe-men maybe-women"
@=@ "mayor mayoress"
@=@ "mayor mayoress"
@=@ "mediator mediatress mediator mediatrix mediator mediatrice"
@=@ "mediator mediatress mediator mediatrix mediator mediatrice"
@=@ "men-children women-children menchildren womenchildren"
@=@ "men-children women-children menchildren womenchildren"
@=@ "merboy mergirl"
@=@ "merboy mergirl merman mermaid merman merwoman mermen merwomen"
@=@ "middleboy middlegirl middleman middlewoman middlemen middlewomen"
@=@ "merman mermaid"
@=@ "midshipboy midshipgirl midshipman midshipwoman midshipmen midshipwomen"
@=@ "merman merwoman mermen merwomen"
@=@ "milkboy milkgirl milkman milkwoman milkmen milkwomen"
@=@ "middleboy middlegirl"
@=@ "middleman middlewoman middlemen middlewomen"
@=@ "midshipboy midshipgirl"
@=@ "midshipman midshipwoman midshipmen midshipwomen"
@=@ "milkboy milkgirl"
@=@ "milkman milkwoman milkmen milkwomen"
@=@ "milkman milkwoman"
@=@ "millionaire millionairess billionaire billionairess"
@=@ "millionaire millionairess billionaire billionairess"
@=@ "misandry misogyny misandrist misogynist"
@=@ "misandry misogyny misandrist misogynist"
@=@ "moneyboy moneygirl"
@=@ "moneyboy moneygirl moneyman moneywoman moneymen moneywomen"
@=@ "moneyman moneywoman moneymen moneywomen"
@=@ "monk nun"
@=@ "monk nun"
@=@ "monster monsteress"
@=@ "monster monsteress"
Line 1,076: Line 1,393:
@=@ "mr mrs mister missus mr ms mr mz master miss master mistress"
@=@ "mr mrs mister missus mr ms mr mz master miss master mistress"
@=@ "murderer murderess"
@=@ "murderer murderess"
@=@ "muscleboy musclegirl"
@=@ "muscleboy musclegirl muscleman musclewoman musclemen musclewomen"
@=@ "muscleman musclewoman musclemen musclewomen"
@=@ "negroe negress negro negress"
@=@ "negroe negress negro negress"
@=@ "nephew niece"
@=@ "nephew niece"
@=@ "newsboy newsgirl"
@=@ "newsboy newsgirl newsman newswoman newsmen newswomen"
@=@ "newspaperboy newspapergirl newspaperman newspaperwoman newspapermen newspaperwomen"
@=@ "newsman newswoman newsmen newswomen"
@=@ "no-boy no-girl no-man no-woman no-men no-women"
@=@ "newspaperboy newspapergirl"
@=@ "newspaperman newspaperwoman newspapermen newspaperwomen"
@=@ "nobelman noblewoman nobelmen nobelwomen"
@=@ "nobelman noblewoman nobelmen nobelwomen"
@=@ "nurseryboy nurserygirl"
@=@ "nurseryboy nurserygirl nurseryman nurserywoman nurserymen nurserywomen"
@=@ "nurseryman nurserywoman nurserymen nurserywomen"
@=@ "orator oratress orator oratrix"
@=@ "orator oratress orator oratrix"
@=@ "orchardboy orchardgirl"
@=@ "orchardboy orchardgirl orchardman orchardwoman orchardmen orchardwomen"
@=@ "overboy overgirl overman overwoman overmen overwomen"
@=@ "orchardman orchardwoman orchardmen orchardwomen"
@=@ "pa ma papa mama pop mom poppy mommy"
@=@ "overboy overgirl"
@=@ "paceboy pacegirl paceman pacewoman pacemen pacewomen"
@=@ "overman overwoman overmen overwomen"
@=@ "pa ma papa mama"
@=@ "paceboy pacegirl"
@=@ "paceman pacewoman pacemen pacewomen"
@=@ "paternal maternal patriarchal matriarchal"
@=@ "paternal maternal patriarchal matriarchal"
@=@ "patricide matricide"
@=@ "patricide matricide"
@=@ "patrolboy patrolgirl"
@=@ "patrolboy patrolgirl patrolman patrolwoman patrolmen patrolwomen"
@=@ "patrolman patrolwoman patrolmen patrolwomen"
@=@ "patron patroness"
@=@ "patron patroness"
@=@ "peacock peahen"
@=@ "peacock peahen"
@=@ "pitboy pitgirl"
@=@ "pitboy pitgirl pitman pitwoman pitmen pitwomen"
@=@ "pitchboy pitchgirl"
@=@ "pitchboy pitchgirl pitchman pitchwoman pitchmen pitchwomen"
@=@ "pitchman pitchwoman pitchmen pitchwomen"
@=@ "pitman pitwoman pitmen pitwomen"
@=@ "plowman plowwoman plowmen plowwomen"
@=@ "plowman plowwoman plowmen plowwomen"
@=@ "poet poetess"
@=@ "poet poetess"
@=@ "policeboy policegirl"
@=@ "policeboy policegirl policeman policewoman policemen policewomen"
@=@ "poultryboy poultrygirl poultryman poultrywoman poultrymen poultrywomen"
@=@ "policeman policewoman policemen policewomen"
@=@ "poultryboy poultrygirl"
@=@ "poultryman poultrywoman poultrymen poultrywomen"
@=@ "preacher preacheress"
@=@ "preacher preacheress"
@=@ "priest priestess"
@=@ "priest priestess"
Line 1,118: Line 1,424:
@=@ "proprietor proprietress"
@=@ "proprietor proprietress"
@=@ "protor protectress"
@=@ "protor protectress"
@=@ "ragboy raggirl"
@=@ "ragboy raggirl ragman ragwoman ragmen ragwomen"
@=@ "railroadboy railroadgirl railroadman railroadwoman railroadmen railroadwomen"
@=@ "ragman ragwoman ragmen ragwomen"
@=@ "railwayboy railwaygirl"
@=@ "railwayboy railwaygirl railwayman railwaywoman railwaymen railwaywomen"
@=@ "rainboy raingirl rainman rainwoman rainmen rainwomen"
@=@ "railwayman railwaywoman railwaymen railwaywomen"
@=@ "rainboy raingirl"
@=@ "rainman rainwoman rainmen rainwomen"
@=@ "ram ewe billy ewe"
@=@ "ram ewe billy ewe"
@=@ "rastaboy rastagirl rastaman rastawoman rastamen rastawomen"
@=@ "Rastaboy Rastagirl"
@=@ "Rastaman Rastawoman Rastamen Rastawomen"
@=@ "remainder-boy remainder-girl"
@=@ "remainder-boy remainder-girl"
@=@ "remainder-man remainder-woman remainder-men remainder-women"
@=@ "remainder-man remainder-woman remainder-men remainder-women"
@=@ "remainderboy remaindergirl"
@=@ "remainderboy remaindergirl remainderman remainderwoman remaindermen remainderwomen"
@=@ "repoboy repogirl repoman repowoman repomen repowomen"
@=@ "remainderman remainderwoman remaindermen remainderwomen"
@=@ "rescueboy rescuegirl rescueman rescuewoman rescuemen rescuewomen"
@=@ "repoboy repogirl"
@=@ "ringboy ringgirl ringman ringwoman ringmen ringwomen"
@=@ "repoman repowoman repomen repowomen"
@=@ "rescueboy rescuegirl"
@=@ "rescueman rescuewoman rescuemen rescuewomen"
@=@ "schoolmaster schoolmistress"
@=@ "schoolmaster schoolmistress"
@=@ "scotsboy scotsgirl scotsman scotswoman scotsmen scotswomen"
@=@ "Scotsboy Scotsgirl"
@=@ "Scotsman Scotswoman Scotsmen Scotswomen"
@=@ "scotsman scotswoman scotsmen scotswomen"
@=@ "sculptor sculptress"
@=@ "sculptor sculptress"
@=@ "seaboy seagirl"
@=@ "seaboy seagirl seaman seawoman seamen seawomen"
@=@ "seaman seawoman seamen seawomen"
@=@ "seducer seduceress"
@=@ "seducer seduceress"
@=@ "seductor seductress"
@=@ "seductor seductress"
@=@ "seedsboy seedsgirl"
@=@ "seedsboy seedsgirl seedsman seedswoman seedsmen seedswomen"
@=@ "seedsman seedswoman seedsmen seedswomen"
@=@ "sempster sempstress"
@=@ "sempster sempstress"
@=@ "senor senora"
@=@ "senor senora"
@=@ "serviceboy servicegirl"
@=@ "serviceboy servicegirl serviceman servicewoman servicemen servicewomen"
@=@ "sewerboy sewergirl sewerman sewerwoman sewermen sewerwomen"
@=@ "serviceman servicewoman servicemen servicewomen"
@=@ "shaboy shagirl shaman shawoman shamen shawomen"
@=@ "sewerboy sewergirl"
@=@ "sheepboy sheepgirl sheepman sheepwoman sheepmen sheepwomen"
@=@ "sewerman sewerwoman sewermen sewerwomen"
@=@ "shaboy shagirl"
@=@ "shaman shawoman shamen shawomen"
@=@ "sheepboy sheepgirl"
@=@ "sheepman sheepwoman sheepmen sheepwoman"
@=@ "sheepman sheepwoman sheepmen sheepwomen"
@=@ "shellfisherboy shellfishergirl"
@=@ "shellfisherboy shellfishergirl"
@=@ "shellfisherman shellfisherwoman shellfishermen shellfisherwomen"
@=@ "shellfisherman shellfisherwoman shellfishermen shellfisherwomen"
@=@ "shepherd shepherdess"
@=@ "shepherd shepherdess"
@=@ "shopboy shopgirl"
@=@ "shirt blouse"
@=@ "shopman shopwoman shopmen shopwomen"
@=@ "shopboy shopgirl shopman shopwoman shopmen shopwomen"
@=@ "showboy showgirl"
@=@ "showboy showgirl showman showwoman showmen showwomen"
@=@ "silkboy silkgirl silkman silkwoman silkmen silkwomen"
@=@ "showman showwoman showmen showwomen"
@=@ "silkboy silkgirl"
@=@ "silkman silkwoman silkmen silkwomen"
@=@ "singer singeress"
@=@ "singer singeress"
@=@ "sir madam sir ma'am"
@=@ "sir madam sir ma'am sir damn"
@=@ "sire dam"
@=@ "sire dam"
@=@ "snowboy snowgirl"
@=@ "snowboy snowgirl snowman snowwoman snowmen snowwomen"
@=@ "snowman snowwoman snowmen snowwomen"
@=@ "son daughter"
@=@ "son daughter"
@=@ "songster songstress"
@=@ "songster songstress"
@=@ "sorcerer sorceress"
@=@ "sorcerer sorceress"
@=@ "spokesman spokeswoman spokesmen spokeswomen"
@=@ "spokesboy spokesgirl spokesman spokeswoman spokesmen spokeswomen"
@=@ "sportsboy sportsgirl"
@=@ "sportsboy sportsgirl sportsman sportswoman sportsmen sportswomen"
@=@ "sportsman sportswoman sportsmen sportswomen"
@=@ "stag hind"
@=@ "stag hind"
@=@ "stallion mare"
@=@ "stallion mare"
@=@ "statesboy statesgirl"
@=@ "statesboy statesgirl statesman stateswoman statesmen stateswomen"
@=@ "statesman stateswoman statesmen stateswomen"
@=@ "steer heifer"
@=@ "steer heifer"
@=@ "steersboy steersgirl"
@=@ "steersboy steersgirl steersman steerswoman steersmen steerswomen"
@=@ "steersman steerswoman steersmen steerswomen"
@=@ "stepdad stepmom stepfather stepmother stepson stepdaughter"
@=@ "stepdad stepmom stepfather stepmother stepson stepdaughter"
@=@ "steward stewardess"
@=@ "steward stewardess"
@=@ "stuntboy stuntgirl"
@=@ "stuntboy stuntgirl stuntman stuntwoman stuntmen stuntwomen"
@=@ "stuntman stuntwoman stuntmen stuntwomen"
@=@ "suitor suitress"
@=@ "suitor suitress"
@=@ "sultan sultana"
@=@ "sultan sultana"
@=@ "sweat glow"
@=@ "tailor seamstress"
@=@ "tailor seamstress"
@=@ "talesboy talesgirl"
@=@ "talesboy talesgirl talesman taleswoman talesmen taleswomen"
@=@ "talisboy talisgirl talisman taliswoman talismen taliswomen"
@=@ "talesman taleswoman talesmen taleswomen"
@=@ "talisboy talisgirl"
@=@ "talisman taliswoman talismen taliswomen"
@=@ "taskmaster taskmistress"
@=@ "taskmaster taskmistress"
@=@ "temptor temptress"
@=@ "temptor temptress"
Line 1,202: Line 1,486:
@=@ "tod vixen"
@=@ "tod vixen"
@=@ "tom hen"
@=@ "tom hen"
@=@ "townsboy townsgirl"
@=@ "townsboy townsgirl townsman townswoman townsmen townswomen"
@=@ "toyboy toygirl toyman toywoman toymen toywomen"
@=@ "townsman townswoman townsmen townswomen"
@=@ "tradesboy tradesgirl tradesman tradeswoman tradesmen tradeswomen"
@=@ "toyboy toygirl"
@=@ "toyman toywoman toymen toywomen"
@=@ "tradesboy tradesgirl"
@=@ "tradesman tradeswoman tradesmen tradeswomen"
@=@ "traitor traitress"
@=@ "traitor traitress"
@=@ "trencherboy trenchergirl"
@=@ "trencherboy trenchergirl trencherman trencherwoman trenchermen trencherwomen"
@=@ "triggerboy triggergirl triggerman triggerwoman triggermen triggerwomen"
@=@ "trencherman trencherwoman trenchermen trencherwomen"
@=@ "triggerboy triggergirl"
@=@ "triggerman triggerwoman triggermen triggerwomen"
@=@ "tutor tutoress"
@=@ "tutor tutoress"
@=@ "tzar tzarina"
@=@ "tzar tzarina"
@=@ "uncle aunt uncle auntie"
@=@ "uncle aunt uncle auntie"
@=@ "undies knickers"
@=@ "usher usherette"
@=@ "usher usherette"
@=@ "utilityboy utilitygirl"
@=@ "utilityboy utilitygirl utilityman utilitywoman utilitymen utilitywomen"
@=@ "utilityman utilitywoman utilitymen utilitywomen"
@=@ "vampire vampiress"
@=@ "vampire vampiress"
@=@ "victor victress"
@=@ "victor victress"
Line 1,225: Line 1,504:
@=@ "vixor vixen"
@=@ "vixor vixen"
@=@ "votary votaress votary votress votaries votresses"
@=@ "votary votaress votary votress votaries votresses"
@=@ "wageboy wagegirl"
@=@ "wageboy wagegirl wageman wagewoman wagemen wagewomen"
@=@ "wageman wagewoman wagemen wagewomen"
@=@ "waiter waitress"
@=@ "waiter waitress"
@=@ "warder wardess"
@=@ "warder wardess"
@=@ "warrior warrioress warlock witch"
@=@ "warrior warrioress warlock witch"
@=@ "washerboy washergirl"
@=@ "washerboy washergirl washerman washerwoman washermen washerwomen"
@=@ "watchboy watchgirl watchman watchwoman watchmen watchwomen"
@=@ "washerman washerwoman washermen washerwomen"
@=@ "waterboy watergirl waterman waterwoman watermen waterwomen"
@=@ "watchboy watchgirl"
@=@ "weighboy weighgirl weighman weighwoman weighmen weighwomen"
@=@ "watchman watchwoman watchmen watchwomen"
@=@ "waterboy watergirl"
@=@ "waterman waterwoman watermen waterwomen"
@=@ "weighboy weighgirl"
@=@ "weighman weighwoman weighmen weighwomen"
@=@ "werewolf wifwolf"
@=@ "werewolf wifwolf"
@=@ "whaleboy whalegirl"
@=@ "whaleboy whalegirl whaleman whalewoman whalemen whalewomen"
@=@ "wheelboy wheelgirl wheelman wheelwoman wheelmen wheelwomen"
@=@ "whaleman whalewoman whalemen whalewomen"
@=@ "wheelboy wheelgirl"
@=@ "wheelman wheelwoman wheelmen wheelwomen"
@=@ "whoremonger whoremistress"
@=@ "whoremonger whoremistress"
@=@ "widower widow"
@=@ "widower widow"
@=@ "wingboy winggirl"
@=@ "wingboy winggirl wingman wingwoman wingmen wingwomen"
@=@ "wiseboy wisegirl wiseman wisewoman wisemen wisewomen"
@=@ "wingman wingwoman wingmen wingwomen"
@=@ "wiseboy wisegirl"
@=@ "wiseman wisewoman wisemen wisewomen"
@=@ "wizard witch"
@=@ "wizard witch"
@=@ "workboy workgirl"
@=@ "workboy workgirl workman workwoman workmen workwomen"
@=@ "workingboy workinggirl"
@=@ "workingboy workinggirl workingman workingwoman workingmen workingwomen"
@=@ "yachtsboy yachtsgirl yachtsman yachtswoman yachtsmen yachtswomen"
@=@ "workingman workingwoman workingmen workingwomen"
@=@ "yardboy yardgirl yardman yardwoman yardmen yardwomen"
@=@ "workman workwoman workmen workwomen"
@=@ "yes-boy yes-girl yes-man yes-woman yes-men yes-women"
@=@ "yachtsboy yachtsgirl"
@=@ "yachtsman yachtswoman yachtsmen yachtswomen"
@=@ "yardboy yardgirl"
@=@ "yardman yardwoman yardmen yardwomen"
@=@ "yes-boy yes-girl"
@=@ "yes-man yes-woman yes-men yes-women"
/*"first" names; not a complete list. */
/*"first" names; not a complete list. */

@=@ "Aaron Erin Adam Eve Adrian Adriana Aidrian Aidriana Alan Alaina Albert Alberta Alex"
@=@ "Aaron Erin Adam Eve Adrian Adriana Aidrian Aidriana Alan Alaina Albert Alberta Alex"
@=@ "Alexa Alex Alexis Alexander Alaxandra Alexander Alexandra Alexander Alexis"
@=@ "Alexa Alex Alexis Alexander Alaxandra Alexander Alexandra Alexander Alexis"
Line 1,350: Line 1,614:
$=x
$=x
end /*until*/
end /*until*/
if strip($)\=='' then say $
if $\='' then say strip($)
say
say
return</lang>
return</syntaxhighlight>
This REXX program makes use of &nbsp; '''LINESIZE''' &nbsp; REXX program (or BIF) which is used to determine the screen width (or linesize) of the terminal (console).
This REXX program makes use of &nbsp; '''LINESIZE''' &nbsp; REXX program (or BIF) which is used to determine the screen width (or linesize) of the terminal (console).
<br>The &nbsp; '''LINESIZE.REX''' &nbsp; REXX program is included here &nbsp; ──► &nbsp; [[LINESIZE.REX]]. <br>
<br>The &nbsp; '''LINESIZE.REX''' &nbsp; REXX program is included here &nbsp; ──► &nbsp; [[LINESIZE.REX]]. <br>
{{out|output|text=&nbsp; when using the input of: &nbsp; She was a soul stripper. She took my heart!}}
<pre>
───────────────────────────────────────────── old ─────────────────────────────────────────────
She was a soul stripper. She took my heart!

────────────────────── There're 2776 words in the gender bender list. ───────────────────────

───────────────────────────────────────────── new ─────────────────────────────────────────────
He was a soul stripper. He took my heart!
</pre>
{{out|output|text=&nbsp; when using the default input:}}
{{out|output|text=&nbsp; when using the default input:}}
<pre>
<pre>
Line 1,367: Line 1,641:
propensity he nourished in his untutored youth.
propensity he nourished in his untutored youth.


────────────── There're 2754 words in the gender bender list. ───────────────
────────────── There're 2776 words in the gender bender list. ───────────────


───────────────────────────────────── new ─────────────────────────────────────
───────────────────────────────────── new ─────────────────────────────────────
When a new-hatched savage running wild about hers native woodlands in a grass
When a new-hatched savage running wild about her native woodlands in a grass
clout, followed by the nibbling goats, as if she were a green sapling; even
clout, followed by the nibbling goats, as if she were a green sapling; even
then, in Queequegs ambitious soul, lurked a strong desire to see something
then, in Queequegs ambitious soul, lurked a strong desire to see something
more of Christendom than a specimen whaler or two. Hers mother was a High
more of Christendom than a specimen whaler or two. Her mother was a High
Chiefess, a Queen; hers auntie a High Priestess; and on the paternal side she
Chiefess, a Queen; her auntie a High Priestess; and on the paternal side she
boasted uncles who were the husbands of unconquerable warrioresses. There was
boasted uncles who were the husbands of unconquerable warrioresses. There was
excellent blood in hers veins-royal stuff; though sadly vitiated, I fear, by
excellent blood in her veins-royal stuff; though sadly vitiated, I fear, by
the cannibal propensity she nourished in hers untutored youth.
the cannibal propensity she nourished in her untutored youth.
</pre>


=={{header|Ring}}==
<syntaxhighlight lang="ring">
# Project : Reverse the gender of a string

revGender = list(4)
word = ["She", "she", "Her", "her", "hers", "He", "he", "His", "his", "him"]
repl = ["He", "he", "His", "his" ,"his", "She", "she", "Her", "her", "her"]

revGender[1] = "She was a soul stripper. She took his heart!"
revGender[2] = "He was a soul stripper. He took her heart!"
revGender[3] = "She wants what's hers, he wants her and she wants him!"
revGender[4] = "Her dog belongs to him but his dog is hers!"

for p=1 to 4
gstr = ""
see revGender[p] + " ->" + nl
gend = repl(revGender[p])
for nr=1 to len(gend)
if nr = len(gend)
gstr = gstr + gend[nr]
else
gstr = gstr + gend[nr] + " "
ok
next
gstr = trim(gstr)
gstr = left(gstr, len(gstr) - 2)
if right(gstr, 1) != "!"
gstr = gstr + "!"
ok
see gstr + nl + nl
next

func repl(cStr)
cStr = words(cStr) + nl
for n=1 to len(cStr)
flag = 0
for m=1 to len(word)
if right(cStr[n],1) = ","
cStr[n] = left(cStr[n], len(cStr[n]) - 1)
flag = 1
ok
if right(cStr[n],1) = "!"
cStr[n] = left(cStr[n], len(cStr[n]) - 1)
flag = 2
ok
if cStr[n] = word[m]
if flag = 0
cStr[n] = repl[m]
ok
if flag = 1
cStr[n] = repl[m] + ","
ok
if flag = 2
cStr[n] = repl[m] + "!"
ok
exit
ok
next
next
return cStr


func words(cStr2)
aList = str2list(cStr2)
for x in aList
x2 = substr(x," ",nl)
alist2 = str2list(x2)
next
return alist2
</syntaxhighlight>
Output:
<pre>
She was a soul stripper. She took his heart! ->
He was a soul stripper. He took her heart!

He was a soul stripper. He took her heart! ->
She was a soul stripper. She took his heart!

She wants what's hers, he wants her and she wants him! ->
He wants what's his, she wants his and he wants her!

Her dog belongs to him but his dog is hers! ->
His dog belongs to her but her dog is his!
</pre>
</pre>

=={{header|Scala}}==
{{Out}}Best seen running in your browser either by [https://scalafiddle.io/sf/cpBaoMf/0 ScalaFiddle (ES aka JavaScript, non JVM)] or [https://scastie.scala-lang.org/0dajvapgRRChRZaZgpeqnQ Scastie (remote JVM)].
<syntaxhighlight lang="scala">object RevGender extends App {
val s = "She was a soul stripper. She took my heart!"
println(cheapTrick(s))
println(cheapTrick(cheapTrick(s)))

def cheapTrick(s: String): String = s match {
case _: String if s.toLowerCase.contains("she") => s.replaceAll("She", "He")
case _: String if s.toLowerCase.contains("he") => s.replaceAll("He", "She")
case _: String => s
}

}</syntaxhighlight>


=={{header|Sidef}}==
=={{header|Sidef}}==
<lang ruby>var male2female = <<'EOD'
<syntaxhighlight lang="ruby">var male2female = <<'EOD'
maleS femaleS, maleness femaleness, him her, himself herself, his her, his
maleS femaleS, maleness femaleness, him her, himself herself, his her, his
hers, he she, Mr Mrs, Mister Missus, Ms Mr, Master Miss, MasterS MistressES,
hers, he she, Mr Mrs, Mister Missus, Ms Mr, Master Miss, MasterS MistressES,
Line 1,450: Line 1,823:
func reverse_gender(text) {
func reverse_gender(text) {
text.gsub(gen_re, { |a| copy_case(a, dict{a.lc}) })
text.gsub(gen_re, { |a| copy_case(a, dict{a.lc}) })
}</lang>
}</syntaxhighlight>


Example:
Example:
<lang ruby>say reverse_gender("She was a soul stripper. She took my heart!");</lang>
<syntaxhighlight lang="ruby">say reverse_gender("She was a soul stripper. She took my heart!");</syntaxhighlight>
{{out}}
{{out}}
<pre>He was a soul stripper. He took my heart!</pre>
<pre>He was a soul stripper. He took my heart!</pre>


=={{header|Tcl}}==
=={{header|Tcl}}==
<lang tcl># Construct the mapping variables from the source mapping
<syntaxhighlight lang="tcl"># Construct the mapping variables from the source mapping
apply {{} {
apply {{} {
global genderMap genderRE
global genderMap genderRE
Line 1,511: Line 1,884:
string map $genderMap &
string map $genderMap &
]}]
]}]
}</lang>
}</syntaxhighlight>
Demonstrating:
Demonstrating:
<lang tcl>puts [reverseGender "She was a soul stripper. She took my heart!"]\n
<syntaxhighlight lang="tcl">puts [reverseGender "She was a soul stripper. She took my heart!"]\n
puts [reverseGender "When a new-hatched savage running wild about his native
puts [reverseGender "When a new-hatched savage running wild about his native
woodlands in a grass clout, followed by the nibbling goats, as if
woodlands in a grass clout, followed by the nibbling goats, as if
Line 1,522: Line 1,895:
who were the wives of unconquerable warriors. There was excellent
who were the wives of unconquerable warriors. There was excellent
blood in his veins-royal stuff; though sadly vitiated, I fear,
blood in his veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity he nourished in his untutored youth."]</lang>
by the cannibal propensity he nourished in his untutored youth."]</syntaxhighlight>
{{out}}
{{out}}
<pre>
<pre>
Line 1,537: Line 1,910:
by the cannibal propensity she nourished in her untutored youth.
by the cannibal propensity she nourished in her untutored youth.
</pre>
</pre>
=={{header|Go}}==
<lang Go>
package main


=={{header|Wren}}==
import "fmt"
{{libheader|Wren-str}}
import "strings"
<syntaxhighlight lang="wren">import "./str" for Char
func main() {

s := "She was a soul stripper. She took my heart!"
var swaps = {
fmt.Println(s)
"She": "He", "she": "he", "Her": "His", "her": "his", "hers": "his", "He": "She",
"he": "she", "His": "Her", "his": "her", "him": "her"
if strings.Contains(s, "She") {
y:= strings.Replace(s, "She ", " He ", -1)
fmt.Println(y)
}else if strings.Contains(s, "He") {
y:= strings.Replace(s, "He ", " She ", -1)
fmt.Println(y)
}
}
}

</lang>
var reverseGender = Fn.new { |sentence|
var newWords = []
for (word in sentence.split(" ")) {
var s = swaps[word]
if (s) {
newWords.add(s)
} else if (Char.isPunctuation(word[-1]) && (s = swaps[word[0..-2]])) {
newWords.add(s + word[-1])
} else {
newWords.add(word)
}
}
return newWords.join(" ")
}

var sentences = [
"She was a soul stripper. She took his heart!",
"He was a soul stripper. He took her heart!",
"She wants what's hers, he wants her and she wants him!",
"Her dog belongs to him but his dog is hers!"
]

for (sentence in sentences) System.print(reverseGender.call(sentence))</syntaxhighlight>

{{out}}
{{out}}
<pre>
<pre>
She was a soul stripper. She took my heart!
He was a soul stripper. He took her heart!
He was a soul stripper. He took my heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!
</pre>
</pre>

Latest revision as of 12:24, 2 February 2024

Reverse the gender of a string is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

The task is to create a function that reverses the gender of the text of a string.

The function should take one arguments being a string to undergo the gender change.

The returned string should contain this initial string, with all references to be gender switched.

print rev_gender("She was a soul stripper. She took my heart!")
He was a soul stripper. He took my heart!


Other tasks related to string operations:
Metrics
Counting
Remove/replace
Anagrams/Derangements/shuffling
Find/Search/Determine
Formatting
Song lyrics/poems/Mad Libs/phrases
Tokenize
Sequences



11l

Translation of: Kotlin
F reverse_gender(=s)
   V words = [‘She’, ‘she’, ‘Her’,  ‘her’,  ‘hers’, ‘He’,   ‘he’,   ‘His’,  ‘his’,  ‘him’]
   V repls = [‘He_’, ‘he_’, ‘His_’, ‘his_’, ‘his_’, ‘She_’, ‘she_’, ‘Her_’, ‘her_’, ‘her_’]

   L(word, repl) zip(words, repls)
      s = s.replace(re:(‘\b’word‘\b’), repl)

   R s.replace(‘_’, ‘’)

print(reverse_gender(‘She was a soul stripper. She took his heart!’))
print(reverse_gender(‘He was a soul stripper. He took her heart!’))
print(reverse_gender(‘She wants what's hers, he wants her and she wants him!’))
print(reverse_gender(‘Her dog belongs to him but his dog is hers!’))
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!

Action!

DEFINE PTR="CARD"
DEFINE COUNT="10"
PTR ARRAY words(COUNT)
PTR ARRAY repls(COUNT)

PROC Init()
  words(0)="She"  repls(5)=words(0)
  words(1)="she"  repls(6)=words(1)
  words(2)="Her"  repls(7)=words(2)
  words(3)="her"  repls(8)=words(3)
  words(4)="hers" repls(9)=words(4)
  words(5)="He"   repls(0)=words(5)
  words(6)="he"   repls(1)=words(6)
  words(7)="His"  repls(2)=words(7)
  words(8)="his"  repls(3)=words(8)
  words(9)="him"  repls(4)=words(9)
RETURN

PROC Append(CHAR ARRAY text,suffix)
  BYTE POINTER srcPtr,dstPtr
  BYTE len

  len=suffix(0)
  IF text(0)+len>255 THEN
    len=255-text(0)
  FI
  IF len THEN
    srcPtr=suffix+1
    dstPtr=text+text(0)+1
    MoveBlock(dstPtr,srcPtr,len)
    text(0)==+suffix(0)
  FI
RETURN

BYTE FUNC IsAlpha(CHAR c)
  IF c>='A AND c<='Z OR c>='a AND c<='z THEN
    RETURN (1)
  FI
RETURN (0)

BYTE FUNC NextItem(CHAR ARRAY text BYTE start,word CHAR ARRAY res)
  BYTE i

  i=start
  WHILE i<=text(0) AND IsAlpha(text(i))=word
  DO i==+1 OD
  SCopyS(res,text,start,i-1)
RETURN (i)

BYTE FUNC WordIndex(CHAR ARRAY text)
  BYTE i

  FOR i=0 TO COUNT-1
  DO
    IF SCompare(text,words(i))=0 THEN
      RETURN (i)
    FI
  OD
RETURN (255)

PROC ReverseGender(CHAR ARRAY in,out)
  CHAR ARRAY s(256)
  BYTE start,word,index

  out(0)=0
  start=1 word=1
  WHILE start<=in(0)
  DO
    start=NextItem(in,start,word,s)
    index=WordIndex(s)
    word=1-word
    IF index=255 THEN
      Append(out,s)
    ELSE
      Append(out,repls(index))
    FI
  OD
RETURN

PROC Test(CHAR ARRAY in)
  CHAR ARRAY res(256)

  ReverseGender(in,res)
  PrintF("Input:  ""%S""%E%E",in)
  PrintF("Output: ""%S""%E%E%E",res)
RETURN

PROC Main()
  Init()
  Test("She was a soul stripper. She took his heart!")
  Test("She wants what's hers, he wants her and she wants him!")
  Test("She, she, Her, her, hers, He, he, His, his, him")
RETURN
Output:

Screenshot from Atari 8-bit computer

Input:  "She was a soul stripper. She took his heart!"

Output: "He was a soul stripper. He took her heart!"


Input:  "She wants what's hers, he wants her and she wants him!"

Output: "He wants what's him, she wants his and he wants hers!"


Input:  "She, she, Her, her, hers, He, he, His, his, him"

Output: "He, he, His, his, him, She, she, Her, her, hers"

Arturo

Translation of: Kotlin
reverseGender: function [str][
	ret: new str
	entries: ["She" "she" "Her" "her" "hers" "He" "he" "His" "his" "him"]
	repls: ["He_" "he_" "His_" "his_" "his_" "She_" "she_" "Her_" "her_" "her_"]
 
    loop.with:'i entries 'entry ->
        replace 'ret to :regex ~{\b|entry|\b} repls\[i]
    
    return replace ret "_" ""
]
 
print reverseGender "She was a soul stripper. She took his heart!"
print reverseGender "He was a soul stripper. He took her heart!"
print reverseGender "She wants what's hers, he wants her and she wants him!"
print reverseGender "Her dog belongs to him but his dog is hers!"
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!

FreeBASIC

Although in principle all gender-related words in the dictionary could be swapped, I've only attempted to swap the 3rd person pronouns, possessive pronouns and possessive adjectives here. Even then, without code to understand the context, some swaps are ambiguous - for example 'her' could map to 'his' or 'him' and 'his' could map to 'her' or 'hers'.

To avoid swapping words which have already been swapped, thereby nullifying the original swap, I've appended an underscore to each replacement word and then removed all the underscores when all swaps have been made. This assumes, of course, that the text didn't include any underscores to start with.

' FB 1.05.0 Win64

Function isWordChar(s As String) As Boolean
  Return ("a" <= s AndAlso s <= "z") OrElse ("A" <= s AndAlso s <= "Z") OrElse("0" <= s AndAlso s <= "9") OrElse s = "_"
End Function

Function revGender(s As Const String) As String
  If s = "" Then Return ""
  Dim t As String = s 
  Dim word(1 To 10) As String = {"She", "she", "Her",  "her",  "hers", "He",   "he",   "His",  "his",  "him"}
  Dim repl(1 To 10) As String = {"He_", "he_", "His_", "his_" ,"his_", "She_", "she_", "Her_", "her_", "her_"}
  Dim As Integer index, start, after 
  For i As Integer = 1 To 10
    start = 1
    While start <= Len(t) - Len(word(i)) + 1 
      index = Instr(start, t, word(i))      
      If index = 0 Then Exit While
      after = index + Len(word(i))
      If index = 1 AndAlso after <= Len(t) AndAlso CInt(isWordChar(Mid(t, after, 1))) Then 
        start = after
        Continue While
      End If
      If index > 1 AndAlso after <= Len(t) AndAlso _
        (CInt(isWordChar(Mid(t, index - 1, 1))) OrElse CInt(isWordChar(Mid(t, after, 1)))) Then 
        start = after
        Continue While
      End If
      t = Left(t, index - 1) + repl(i) + Mid(t, after)
      start = index + Len(repl(i))
    Wend
  Next
  ' now remove all underscores
  For i As Integer = Len(t) To 1 Step -1
    If Mid(t, i, 1) = "_" Then
      t = Left(t, i - 1) + Mid(t, i + 1)
    End If
  Next 
  Return t
End Function

Print revGender("She was a soul stripper. She took his heart!")
Print revGender("He was a soul stripper. He took her heart!")
Print revGender("She wants what's hers, he wants her and she wants him!")
Print revGender("Her dog belongs to him but his dog is hers!")
Print
Print "Press any key to quit"
Sleep
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!

Go

package main

import (
    "fmt"
    "strings"
)

func reverseGender(s string) string {
    if strings.Contains(s, "She") {
        return strings.Replace(s, "She", "He", -1)
    } else if strings.Contains(s, "He") {
        return strings.Replace(s, "He", "She", -1)
    }
    return s
}

func main() {
    s := "She was a soul stripper. She took my heart!"
    t := reverseGender(s)
    fmt.Println(t)
    fmt.Println(reverseGender(t))
}
Output:
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

Haskell

We can optimise the time and space complexity of this computation by careful selection of the source and target languages (not specified in the task description, although the example appears to be drawn from some kind of Anglo-Saxon dialect, which seems a bit sub-optimal for these purposes).

Sino-Tibetan dialects generally work well here. If we choose any standard transcription of Modern Standard Chinese (such as Pinyin or IPA) or more or less any written sample of pre 19c literary Chinese, we can reduce the entire computation down to a very pleasing intersection of fully optimized space and time performance with reasonably clear and succinct code:

Works with: 汉语拼音
Works with: 文言文
id

J

Note that we cannot do a good job for the general case of english text using simple rules. For example, consider:

  • Give her the book. It is her book.
  • Give him the book. It is his book.


For this simple example, to determine whether to change her to him or his we would need a grammatical representation of the surrounding context.

So, for now, we limit ourselves to the simple case specified in the task example, and do not even do all that great of a job there, either:

cheaptrick=: rplc&(;:'She He He She')

And, the task example:

   cheaptrick 'She was a soul stripper. She took my heart!'
He was a soul stripper. He took my heart!
   cheaptrick cheaptrick 'She was a soul stripper. She took my heart!'
She was a soul stripper. She took my heart!

Java

Translation of: J
public class ReallyLameTranslationOfJ {

    public static void main(String[] args) {
        String s = "She was a soul stripper. She took my heart!";
        System.out.println(cheapTrick(s));
        System.out.println(cheapTrick(cheapTrick(s)));
    }

    static String cheapTrick(String s) {
        if (s.contains("She"))
            return s.replaceAll("She", "He");
        else if(s.contains("He"))
            return s.replaceAll("He", "She");
        return s;
    }
}
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

jq

Adapted from Wren

Works with: jq

Also works with both jaq and gojq, the Rust and Go implementations of jq

In this entry, we use the Unicode character classes for "open", "close", and "other" punctuation, but show the test for a small set of specific punctuation characters.

def swaps: {
  "She": "He", "she": "he", "Her": "His", "her": "his", "hers": "his", "He": "She",
  "he": "she", "His": "Her", "his": "her", "him": "her"
};

def isPunctuation:
   type == "string" and
   length == 1 and
   # test("[!\"#%&'()*,-./:;?@\\[\\]\\\\_{}¡§«¶·»¿]")
   # open, close, other
   test("\\p{Ps}|\\p{Pe}|\\p{Po}|")
;
   
def reverseGender:
  reduce splits("  *") as $word ([];
    swaps[$word] as $s
    | if $s then . + [$s]
      elif ($word[-1:] | isPunctuation) 
      then swaps[$word[:-1]] as $s
      | if $s then . + [$s + $word[-1:]]
        else . + [$word]
        end
      else . + [$word]
     end)
  | join(" ");

def sentences: [
  "She was a soul stripper. She took his heart!",
  "He was a soul stripper. He took her heart!",
  "She wants what's hers, he wants her and she wants him!",
  "Her dog belongs to him but his dog is hers!"
];

sentences[]
| reverseGender
Output:

As for Wren.

Julia

Translation of: Kotlin
module ReverseGender

const MARKER = "\0"

const words = "^" .* ["She", "she", "Her",  "her",  "hers", "He",   "he",   "His",  "his",  "him"] .* "\$" .|> Regex
const repls = ["He", "he", "His", "his" ,"his", "She", "she", "Her", "her", "her"] .* MARKER

function reverse(s::AbstractString)
    for (w, r) in zip(words, repls)
        s = replace(s, w => r)
    end
    return replace(s, MARKER => "")
end

end  # module ReverseGender

@show ReverseGender.reverse("She was a soul stripper. She took his heart!")
@show ReverseGender.reverse("He was a soul stripper. He took her heart!")
@show ReverseGender.reverse("She wants what's hers, he wants her and she wants him!")
@show ReverseGender.reverse("Her dog belongs to him but his dog is hers!")

Kotlin

This program uses a similar approach to the FreeBASIC entry:

// version 1.0.6

fun reverseGender(s: String): String {
    var t = s
    val words = listOf("She", "she", "Her",  "her",  "hers", "He",   "he",   "His",  "his",  "him")
    val repls = listOf("He_", "he_", "His_", "his_" ,"his_", "She_", "she_", "Her_", "her_", "her_")
    for (i in 0 until words.size) {
        val r = Regex("""\b${words[i]}\b""")
        t = t.replace(r, repls[i])
    }
    return t.replace("_", "")
}

fun main(args: Array<String>) {
    println(reverseGender("She was a soul stripper. She took his heart!"))
    println(reverseGender("He was a soul stripper. He took her heart!"))
    println(reverseGender("She wants what's hers, he wants her and she wants him!"))
    println(reverseGender("Her dog belongs to him but his dog is hers!"))
}
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!

Lua

Sufficient for the task as worded, but without attempting to go beyond (because several indeterminate cases exist). It does at least demonstrate an idiomatic way of doing multiple simultaneous substring substitutions.

function sufficient(s)
  local xref = { She="He", He="She" }
  return (s:gsub("(%w+)", function(s) return xref[s] or s end))
end
s = "She was a soul stripper. She took my heart!"
print(sufficient(s))
print(sufficient(sufficient(s)))
print(sufficient(sufficient(s)) == s)
Output:
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!
true

MiniScript

cap = function(w)   // (capitalize a word)
    return w[0].upper + w[1:]
end function

trans = {"she":"he", "her":"his", "hers":"his"}
trans = trans + {"he":"she", "his":"her", "him":"her"}

for k in trans.indexes
    trans[cap(k)] = cap(trans[k])
end for

reverseGender = function(s)
    s = s.replace(".", " .").replace(",", " ,").replace("?", " ?").replace("!", " !")
    words = s.split
    for i in words.indexes
        if trans.hasIndex(words[i]) then words[i] = trans[words[i]]
    end for
    s = words.join
    s = s.replace(" .", ".").replace(" ,", ",").replace(" ?", "?").replace(" !", "!")
    return s
end function

test = function(s)
    print "BEFORE: " + s
    print "AFTER:  " + reverseGender(s)
    print
end function

test "She was a soul stripper. She took his heart!"
test "He was a soul stripper. He took her heart!"
test "She wants what's hers, he wants her and she wants him!"
test "Her dog belongs to him but his dog is hers!"
Output:
BEFORE: She was a soul stripper. She took his heart!
AFTER: He was a soul stripper. He took her heart!

BEFORE: He was a soul stripper. He took her heart!
AFTER: She was a soul stripper. She took his heart!

BEFORE: She wants what's hers, he wants her and she wants him!
AFTER: He wants what's his, she wants his and he wants her!

BEFORE: Her dog belongs to him but his dog is hers!
AFTER: His dog belongs to her but her dog is his!

Nim

Translation of: Kotlin
import re, strutils

const
  Words = ["She", "she", "Her",  "her",  "hers", "He",   "he",   "His",  "his",  "him"]
  Repls = ["He_", "he_", "His_", "his_" ,"his_", "She_", "she_", "Her_", "her_", "her_"]

func reverseGender(s: string): string =
  result = s
  for i, word in Words:
    let r = re(r"\b" & word & r"\b")
    result = result.replace(r, Repls[i])
  result = result.replace("_", "")

echo reverseGender("She was a soul stripper. She took his heart!")
echo reverseGender("He was a soul stripper. He took her heart!")
echo reverseGender("She wants what's hers, he wants her and she wants him!")
echo reverseGender("Her dog belongs to him but his dog is hers!")
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!

Objeck

Translation of: Java
class ReallyLameTranslationOfJ {
  function : Main(args : String[]) ~ Nil {
    s := "She was a soul stripper. She took my heart!";
    CheapTrick(s)->PrintLine();
    CheapTrick(CheapTrick(s))->PrintLine();
  }

  function : CheapTrick(s : String) ~ String {
    if(s->Has("She")) {
      return s->ReplaceAll("She", "He");
    }
    else if(s->Has("He")) {
      return s->ReplaceAll("He", "She");
    };
    
    return s;
  }
}

Output:

He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

Perl

A minimal implementation, using a hash to manage swaps. But this approach breaks down if, for instance, 'him' were to replace 'me', as 'her' can't be used to map to both 'his' and 'him'.

my %swaps = (
    'she'  => 'he',
    'his'  => 'her',
);

$swaps{         $swaps{$_} } =         $_ for keys %swaps; # inverted pairs
$swaps{ ucfirst $swaps{$_} } = ucfirst $_ for keys %swaps; # title-case version

sub gender_swap {
    my($s) = @_;
    $s =~ s/\b$_\b/_$swaps{$_}/g for keys %swaps; # swap and add guard character
    $s =~ s/_//g;                                 # remove guard
    $s;
}

$original = qq{She was this soul sherpa. She took his heart! They say she's going to put me on a shelf.\n};
print $swapped  = gender_swap($original);
print $reverted = gender_swap($swapped);
Output:
He was this soul sherpa. He took her heart! They say he's going to put me on a shelf.
She was this soul sherpa. She took his heart! They say she's going to put me on a shelf.

Phix

Oh well, I tried... There are a couple of mildly interesting points though:
words is a pair-list, ie "she","he" maps both ways, with first-upper-case handled too, and
replacing the words right->left means no need to fiddle with indexes when lengths differ.

constant words = {"she","he","his","her","him","her","hers","his"}
 
function reverse_gender(string s)
    integer ch, wordend
    bool inword = false, wordch
    for i=length(s) to 0 by -1 do
        ch = iff(i=0?' ':s[i])
        wordch = not find(ch," .,'!\n")
        if inword then
            if not wordch then
                string word = lower(s[i+1..wordend])
                integer k = find(word,words)
                if k then 
                    string rep = words[iff(mod(k,2)?k+1:k-1)]
--                  if s[i+2..wordend]=rep[2..$] then -- might be wanted here
--                    -- (either skipping completely or all upper->all upper)
                    if s[i+1]!=words[k][1] then rep[1] = upper(rep[1]) end if
                    s[i+1..wordend] = rep
                end if
                inword = false
            end if
        elsif wordch then
            inword = true
            wordend = i
        end if
    end for
    return s
end function
 
constant tests = {"She was a soul stripper. She took my heart!\n",
                  "Her dog belongs to him but his dog is hers!\n"}  -- ha ha!
 
for i=1 to length(tests) do
    string ti = tests[i],
           r  = reverse_gender(ti),
           rr = reverse_gender(r)
    puts(1,ti&r&rr&"\n")
end for
Output:
She was a soul stripper. She took my heart!
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

Her dog belongs to him but his dog is hers!
His dog belongs to her but her dog is his!
Her dog belongs to his but his dog is her!

PowerShell

Translation of: J

(Made more PowerShelly.)

function Switch-Gender ([string]$String)
{
    if ($String -match "She")
    {
        $String.Replace("She", "He")
    }
    elseif ($String -match "He")
    {
        $String.Replace("He", "She")
    }
    else
    {
        $String
    }
}

Switch-Gender "She was a soul stripper. She took my heart!"
Switch-Gender (Switch-Gender "She was a soul stripper. She took my heart!")
Output:
He was a soul stripper. He took my heart!
She was a soul stripper. She took my heart!

Python

#!/usr/bin/env python
# -*- coding: utf-8 -*- #
 
import re
male2female=u"""maleS femaleS, maleness femaleness,
him her, himself herself, his her, his hers, he she,
Mr Mrs, Mister Missus, Ms Mr, Master Miss, Master Mistress,
uncleS auntS, nephewS nieceS, sonS daughterS, grandsonS granddaughterS,
brotherS sisterS, man woman, men women, boyS girlS, paternal maternal,
grandfatherS grandmotherS, GodfatherS GodmotherS, GodsonS GoddaughterS,
fiancéS fiancéeS, husband wife, husbands wives, fatherS motherS, 
bachelorS spinsterS, bridegroomS brideS, widowerS widowS,
KnightS DameS, Sir DameS, KingS QueenS, DukeS DuchessES, PrinceS PrincessES,
Lord Lady, Lords Ladies, MarquessES MarchionessES, EarlS CountessES, ViscountS ViscountessES,
ladS lassES, sir madam, gentleman lady, gentlemen ladies, BaronS BaronessES,
stallionS mareS, ramS eweS, coltS fillieS, billy nanny, billies nannies, bullS cowS,
godS goddessES, heroS heroineS, shirtS blouseS, undies nickers, sweat glow,
jackarooS jillarooS, gigoloS hookerS, landlord landlady, landlords landladies, 
manservantS maidservantS, actorS actressES, CountS CountessES, EmperorS EmpressES, 
giantS giantessES, heirS heiressES, hostS hostessES, lionS lionessES, managerS manageressES,
murdererS murderessES, priestS priestessES, poetS poetessES, shepherdS shepherdessES,
stewardS stewardessES, tigerS tigressES, waiterS waitressES,
cockS henS, dogS bitchES, drakeS henS, dogS vixenS,
tomS tibS, boarS sowS, buckS roeS, peacockS peahenS, 
gander goose, ganders geese, friarS nunS, monkS nunS, Adam Eve,
Aaron Erin, Adrian Adriana, Aidrian Aidriana, Alan Alaina, Albert Alberta,
Alex Alexa, Alex Alexis, Alexander Alaxandra, Alexander Alexandra,
Alexander Alexis, Alexandra Alexander, Alexei Alexis, Alfred Alfreda,
Andrew Andrea, Andrew Andrea, Angel Angelica, Anthony Antonia,
Antoine Antoinette, Ariel Arielle, Ashleigh Ashley, 
Barry Barrie, Benedict Benita, Benjamin Benjamine, Bert Bertha, 
Brandon Brandi, Brendan Brenda, Briana Brian, Brian Rianne, 
Caela Caesi, Caeleb Caeli, Carl Carla, Carl Carly, Carolus Caroline,
Charles Caroline, Charles Charlotte, Christian Christa, Christian Christiana,
Christian Christina, Christopher Christina, Christopher Christine,
Clarence Claire, Claude Claudia, Clement Clementine, Cory Cora,
Daniel Daniella, Daniel Danielle, David Davena, David Davida,
David Davina, Dean Deanna, Devin Devina,
Edward Edwina, Edwin Edwina, Emil Emilie, Emil Emily, Eric Erica, Erick Erica,
Erick Ericka, Ernest Ernestine, Ethan Etha, Ethan Ethel, Eugene Eugenie,
Fabian Fabia, Francesco Francesca, Frances Francesca, Francis Frances,
Francis Francine, Frederick Fredrica, Fred Freda, Fredrick Frederica,
Gabriel Gabriella, Gabriel Gabrielle, Gene Jean, George Georgia, george georgina,
George Georgina, Gerald Geraldine, Giovanni Giovanna, Glen Glenn,
Harry Harriet, Harry Harriette, Heather Heath, Henry Henrietta, Horace Horatia,
Ian Iana, Ilija Ilinka, Ivo Ivy, Ivan Ivy,
Jack Jackelyn, Jack Jackie, Jack Jaclyn, Jack Jacqueline, Jacob Jacobine,
James Jamesina, James Jamie, Jaun Jaunita, Jayda Jayden, Jesse Jessica, 
Jesse Jessie, Joe Johanna, Joel Joelle, John Jean, John Joan, 
John Johanna, Joleen Joseph, Jon Joane, Joseph Josephine, Joseph Josphine, 
Julian Julia, Julian Juliana, Julian Julianna, Justin Justine,
Karl Karly, Kendrick Kendra, Ken Kendra, Kian Kiana, Kyle Kylie,
Laurence Laura, Laurence Lauren, Laurence Laurencia, Leigh Leigha,
Leon Leona, Louis Louise, Lucas Lucia, Lucian Lucy, Luke Lucia, Lyle Lyla,
Maria Mario, Mario Maricela, Mark Marcia, Marshall Marsha, Martin martina,
Martin Martina, Martin Martine, Max Maxine, Michael Michaela, Michael Micheala,
Michael Michelle, Mitchell Michelle, Nadir Nadira, Nicholas Nicole, Nicholas Nicki,
Nicholas Nicole, Nicky Nikki, Nicolas Nicole, Nigel Nigella, Noel Noelle,
Oen Ioena, Oliver Olivia,
Patrick Patricia, Paul Paula, Phillip Phillipa, Phillip Pippa,
Quintin Quintina,
Reginald Regina, Richard Richardine, Robert Roberta, Robert Robyn, Ronald Rhonda,
Ryan Rhian, Ryan Ryanne,
Samantha Samuel, Samuel Samantha, Samuel Sammantha, Samuel Samuela,
Sean Sian, Sean Siana, Shaun Shauna, Sheldon Shelby, Sonny Sunny,
Stephan Stephanie, Stephen Stephanie, Steven Stephanie,
Terry Carol, Terry Carrol, Theodore Theadora, Theodore Theodora,
Theodore Theordora, Thomas Thomasina, Tristan Tricia, Tristen Tricia,
Ulric Ulrika, Valentin Valentina, Victor Victoria,
William Wilhelmina, William Willa, William Willamina,
Xavier Xaviera, Yarden Yardena, Zahi Zahira, Zion Ziona"""
 
re_nl=re.compile(r",[ \n]*")
m2f=[ tok.split(" ") for tok in re_nl.split(male2female) ]
 
switch={}
words=[]
 
 
re_plural=re.compile("E*S$")
re_ES=re.compile("ES$")
 
def gen_pluralize(m,f):
# do plurals first 
  yield re_plural.sub("",m),re_plural.sub("",f)
  yield re_ES.sub("es",m),re_ES.sub("es",f)
  yield re_plural.sub("s",m),re_plural.sub("s",f)
 
def gen_capitalize_pluralize(m,f):
  for m,f in gen_pluralize(m,f):
    yield m.capitalize(), f.capitalize()
    yield m,f
 
def gen_switch_role_capitalize_pluralize(m,f):
  for m,f in gen_capitalize_pluralize(m,f):
    yield m,f
    yield f,m
 
for m,f in m2f:
  for xy,xx in gen_switch_role_capitalize_pluralize(m,f):
    if xy not in switch: 
      switch[xy]=xx
      words.append(xy)
 
words="|".join(words)
 
re_word=re.compile(ur"\b("+words+ur")\b")
 
text=u'''When a new-hatched savage running wild about his native
woodlands in a grass clout, followed by the nibbling goats, as if
he were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. His father was a High Chief, a King;
his uncle a High Priest; and on the maternal side he boasted aunts
who were the wives of unconquerable warriors. There was excellent
blood in his veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity he nourished in his untutored youth.'''
 
 
def rev_gender(text):
  text=re_word.split(text)
  return "".join([ word+switch[gen] for word,gen in zip(text[::2],text[1::2])])+text[-1]
 
print rev_gender(text)

Output:

When a new-hatched savage running wild about her native
woodlands in a grass clout, followed by the nibbling goats, as if
she were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. Her mother was a High Chief, a Queen;
her aunt a High Priestess; and on the paternal side she boasted uncles
who were the husbands of unconquerable warriors. There was excellent
blood in her veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity she nourished in her untutored youth.

Racket

#lang at-exp racket

(define raw-mapping @~a{
  maleS femaleS, maleness femaleness, him her, himself herself, his her, his
  hers, he she, Mr Mrs, Mister Missus, Ms Mr, Master Miss, MasterS MistressES,
  uncleS auntS, nephewS nieceS, sonS daughterS, grandsonS granddaughterS,
  brotherS sisterS, man woman, men women, boyS girlS, paternal maternal,
  grandfatherS grandmotherS, GodfatherS GodmotherS, GodsonS GoddaughterS,
  fiancéS fiancéeS, husband wife, husbands wives, fatherS motherS, bachelorS
  spinsterS, bridegroomS brideS, widowerS widowS, KnightS DameS, Sir DameS,
  KingS QueenS, DukeS DuchessES, PrinceS PrincessES, Lord Lady, Lords Ladies,
  MarquessES MarchionessES, EarlS CountessES, ViscountS ViscountessES, ladS
  lassES, sir madam, gentleman lady, gentlemen ladies, BaronS BaronessES,
  stallionS mareS, ramS eweS, coltS fillieS, billy nanny, billies nannies,
  bullS cowS, godS goddessES, heroS heroineS, shirtS blouseS, undies nickers,
  sweat glow, jackarooS jillarooS, gigoloS hookerS, landlord landlady,
  landlords landladies, manservantS maidservantS, actorS actressES, CountS
  CountessES, EmperorS EmpressES, giantS giantessES, heirS heiressES, hostS
  hostessES, lionS lionessES, managerS manageressES, murdererS murderessES,
  priestS priestessES, poetS poetessES, shepherdS shepherdessES, stewardS
  stewardessES, tigerS tigressES, waiterS waitressES, cockS henS, dogS bitchES,
  drakeS henS, dogS vixenS, tomS tibS, boarS sowS, buckS roeS, peacockS
  peahenS, gander goose, ganders geese, friarS nunS, monkS nunS, Adam Eve,
  Aaron Erin, Adrian Adriana, Aidrian Aidriana, Alan Alaina, Albert Alberta,
  Alex Alexa, Alex Alexis, Alexander Alaxandra, Alexander Alexandra, Alexander
  Alexis, Alexandra Alexander, Alexei Alexis, Alfred Alfreda, Andrew Andrea,
  Angel Angelica, Anthony Antonia, Antoine Antoinette, Ariel Arielle, Ashleigh
  Ashley, Barry Barrie, Benedict Benita, Benjamin Benjamine, Bert Bertha,
  Brandon Brandi, Brendan Brenda, Briana Brian, Brian Rianne, Caela Caesi,
  Caeleb Caeli, Carl Carla, Carl Carly, Carolus Caroline, Charles Caroline,
  Charles Charlotte, Christian Christa, Christian Christiana, Christian
  Christina, Christopher Christina, Christopher Christine, Clarence Claire,
  Claude Claudia, Clement Clementine, Cory Cora, Daniel Daniella, Daniel
  Danielle, David Davena, David Davida, David Davina, Dean Deanna, Devin
  Devina, Edward Edwina, Edwin Edwina, Emil Emilie, Emil Emily, Eric Erica,
  Erick Erica, Erick Ericka, Ernest Ernestine, Ethan Etha, Ethan Ethel, Eugene
  Eugenie, Fabian Fabia, Francesco Francesca, Frances Francesca, Francis
  Frances, Francis Francine, Frederick Fredrica, Fred Freda, Fredrick
  Frederica, Gabriel Gabriella, Gabriel Gabrielle, Gene Jean, George Georgia,
  George Georgina, Gerald Geraldine, Giovanni Giovanna, Glen Glenn, Harry
  Harriet, Harry Harriette, Heather Heath, Henry Henrietta, Horace Horatia, Ian
  Iana, Ilija Ilinka, Ivo Ivy, Ivan Ivy, Jack Jackelyn, Jack Jackie, Jack
  Jaclyn, Jack Jacqueline, Jacob Jacobine, James Jamesina, James Jamie, Jaun
  Jaunita, Jayda Jayden, Jesse Jessica, Jesse Jessie, Joe Johanna, Joel Joelle,
  John Jean, John Joan, John Johanna, Joleen Joseph, Jon Joane, Joseph
  Josephine, Joseph Josphine, Julian Julia, Julian Juliana, Julian Julianna,
  Justin Justine, Karl Karly, Kendrick Kendra, Ken Kendra, Kian Kiana, Kyle
  Kylie, Laurence Laura, Laurence Lauren, Laurence Laurencia, Leigh Leigha,
  Leon Leona, Louis Louise, Lucas Lucia, Lucian Lucy, Luke Lucia, Lyle Lyla,
  Maria Mario, Mario Maricela, Mark Marcia, Marshall Marsha, Martin martina,
  Martin Martine, Max Maxine, Michael Michaela, Michael Micheala, Michael
  Michelle, Mitchell Michelle, Nadir Nadira, Nicholas Nicole, Nicholas Nicki,
  Nicky Nikki, Nicolas Nicole, Nigel Nigella, Noel Noelle, Oen Ioena, Oliver
  Olivia, Patrick Patricia, Paul Paula, Phillip Phillipa, Phillip Pippa,
  Quintin Quintina, Reginald Regina, Richard Richardine, Robert Roberta, Robert
  Robyn, Ronald Rhonda, Ryan Rhian, Ryan Ryanne, Samantha Samuel, Samuel
  Samantha, Samuel Sammantha, Samuel Samuela, Sean Sian, Sean Siana, Shaun
  Shauna, Sheldon Shelby, Sonny Sunny, Stephan Stephanie, Stephen Stephanie,
  Steven Stephanie, Terry Carol, Terry Carrol, Theodore Theadora, Theodore
  Theodora, Theodore Theordora, Thomas Thomasina, Tristan Tricia, Tristen
  Tricia, Ulric Ulrika, Valentin Valentina, Victor Victoria, William
  Wilhelmina, William Willa, William Willamina, Xavier Xaviera, Yarden Yardena,
  Zahi Zahira, Zion Ziona})

(define flip-map (make-hash))

(for ([m (reverse (regexp-split #px"\\s*,\\s*" raw-mapping))])
  (define p (string-split m))
  (unless (= 2 (length p)) (error "Bad raw data"))
  (define (map! x y)
    (hash-set! flip-map (string-foldcase x) (string-foldcase y))
    (hash-set! flip-map (string-upcase x) (string-upcase y))
    (hash-set! flip-map (string-titlecase x) (string-titlecase y)))
  (define (2map! x y) (map! x y) (map! y x))
  (apply 2map! p)
  (apply 2map! (map (λ(x) (regexp-replace #rx"E?S$" x "")) p)))

(define (reverse-gender str)
  (regexp-replace* #px"\\w+" str
    (λ(word) (hash-ref flip-map word word))))

(displayln (reverse-gender @~a{
She was a soul stripper. She took my heart!

When a new-hatched savage running wild about his native
woodlands in a grass clout, followed by the nibbling goats, as if
he were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. His father was a High Chief, a King;
his uncle a High Priest; and on the maternal side he boasted aunts
who were the wives of unconquerable warriors. There was excellent
blood in his veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity he nourished in his untutored youth.
}))
Output:
He was a soul stripper. He took my heart!

When a new-hatched savage running wild about her native
woodlands in a grass clout, followed by the nibbling goats, as if
she were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. Her mother was a High Chief, a Queen;
her aunt a High Priestess; and on the paternal side she boasted uncles
who were the husbands of unconquerable warriors. There was excellent
blood in her veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity she nourished in her untutored youth.

Raku

(formerly Perl 6) Mechanically, this task is trivial. Raku provides several flexible and powerful methods to wrangle text. Linguistically, this task is impossible (and laughable). Mappings are non-regular and in many cases, non-deterministic without semantic analysis of the content and context, which is WAY beyond what anyone is going to invest in a Rosettacode task. Whatever.

For extremely limited circumstances such as this example, this should suffice. Notice case matching and replication. Handles contractions, but ignores embedded matching text.

say S:g:ii'she'»/he/ given "She was a soul stripper. She took my heart! They say she's going to put me on a shelf.";
Output:
He was a soul stripper. He took my heart! They say he's going to put me on a shelf.

REXX

Not much effort was put into compressing the words (as far as pluralizing and constructing the various forms of words).   More code could be written to parse words that have a hyphen   (or minus).

The 1st letter of each word in examined and it's case (lower/upper) is preserved.

Given the large size of the table (list), it would make more sense to put the words in a separate file instead of coding them in-line (within the computer program).

/*REXX program reverse genderizes a text string (that may contain gender-specific words)*/
parse value  linesize()-1   with   sw  @  @.  !. /*get screen width,  nullify some vars.*/
parse arg old
if old='' then old='When a new-hatched savage running wild about his native woodlands in',
                   'a grass clout, followed by the nibbling goats, as if he were a green',
                   'sapling; even then, in Queequegs ambitious soul, lurked a strong'    ,
                   'desire to see something more of Christendom than a specimen whaler'  ,
                   'or two. His father was a High Chief, a King; his uncle a High'       ,
                   'Priest; and on the maternal side he boasted aunts who were the wives',
                   'of unconquerable warriors. There was excellent blood in his'         ,
                   'veins-royal stuff; though sadly vitiated, I fear, by the cannibal'   ,
                   'propensity he nourished in his untutored youth.'

call tell old, ' old '                           /*show a nicely parsed  "old"  text.   */

@=@ "abboty abbess"
@=@ "actor actress"
@=@ "ad-boy ad-girl ad-man ad-woman ad-men ad-women"
@=@ "adboy adgirl adman adwoman admen adwomen"
@=@ "administrator administratrix"
@=@ "adonis belle"
@=@ "adulterer adultress"
@=@ "agribusinessboy agribusinessgirl"
@=@ "agribusinessman agribusinesswoman agribusinessmen agribusinesswomen"
@=@ "aidboy aidgirl aidman aidwoman aidmen aidwomen"
@=@ "airboy airgirl airman airwoman airmen airwomen"
@=@ "aircraftboy aircraftgirl aircraftman aircraftwoman aircraftmen aircraftwomen"
@=@ "aircraftsboy aircraftsgirl aircraftsman aircraftswoman aircraftsmen aircraftswomen"
@=@ "aircrewboy aircrewgirl aircrewman aircrewwoman aircrewmen aircrewwomen"
@=@ "alderboy aldergirl alderman alderwoman aldermen alderwomen"
@=@ "almsboy almsgirl"
@=@ "almsman almswoman almsmen almswomen"
@=@ "alterboy altergirl alterman alterwoman altermen alterwomen"
@=@ "alongshoreboy alongshoregirl"
@=@ "alongshoreman alongshorewoman alongshoremen alongshorewomen"
@=@ "ambassador ambassadress"
@=@ "ambulanceboy ambulancegirl ambulanceman ambulancewoman ambulancemen ambulancewomen"
@=@ "anchor anchress"
@=@ "anchorboy anchorgirl anchorman anchorwoman anchormen anchorwomen"
@=@ "apeboy apegirl apeman apewoman apemen apewomen"
@=@ "archduke archduchess"
@=@ "archer archeress"
@=@ "artilleryboy artillerygirl artilleryman artillerywoman artillerymen artillerywomen"
@=@ "artsboy artsgirl artsman artswoman artsmen artswomen"
@=@ "assboy assgirl assman asswoman assmen asswomen"
@=@ "assemblyboy assemblygirl assemblyman assemblywoman assemblymen assemblywomen"
@=@ "attackboy attackgirl attackman attackwoman attackmen attackwomen"
@=@ "author authoress"
@=@ "aviator aviatrix aviators aviatrices"
@=@ "axboy axgirl axman axwoman axmen axwomen"
@=@ "axeboy axegirl axeman axewoman axemen axewomen"
@=@ "bachelor bachelorette bachelor spinster"
@=@ "backboy backgirl backman backwoman backmen backwomen"
@=@ "backwoodsboy backwoodsgirl backwoodsman backwoodswoman backwoodsmen backwoodswomen"
@=@ "badboy badgirl badman badwoman badmen badwomen"
@=@ "bagboy baggirl bagman bagwoman bagmen bagwomen"
@=@ "baggageboy baggagegirl baggageman baggagewoman baggagemen baggagewomen"
@=@ "bail-bondsboy bail-bondsgirl"
@=@ "bail-bondsman bail-bondswoman bail-bondsmen bail-bondswomen"
@=@ "bailsboy bailsgirl bailsman bailswoman bailsmen bailswomen"
@=@ "ballerino ballerina"
@=@ "bandsboy bandsgirl bandsman bandswoman bandsmen bandswomen"
@=@ "barboy bargirl barman barwoman barmen barwomen barman barmaid"
@=@ "bargeboy bargegirl bargeman bargewoman bargemen bargewomen"
@=@ "barkeeper barkeeperess"
@=@ "baron baroness baronet baronetess"
@=@ "baseboy basegirl baseman basewoman basemen basewomen"
@=@ "bassboy bassgirl bassman basswoman bassmen basswomen"
@=@ "batboy batgirl batman batwoman batmen batwomen"
@=@ "batsboy batsgirl batsman batswoman batsmen batswomen"
@=@ "bayboy baygirl bayman baywoman baymen baywomen"
@=@ "beadsboy beadsgirl beadsman beadswoman beadsmen beadswomen"
@=@ "bedesboy bedesgirl bedesman bedeswoman bedesmen bedeswomen"
@=@ "beggarboy beggargirl beggarman beggarwoman beggarmen beggarwomen"
@=@ "bellboy bellgirl bellman bellwoman bellmen bellwomen"
@=@ "benefactor benefactress"
@=@ "billboy billgirl billman billwoman billmen billwomen"
@=@ "billy nanny billies nannies"
@=@ "billygoat nannygoat"
@=@ "binboy bingirl binman binwoman binmen binwomen"
@=@ "birdboy birdgirl birdman birdwoman birdmen birdwomen"
@=@ "blond blonde"
@=@ "bluesboy bluesgirl bluesman blueswoman bluesmen blueswomen"
@=@ "boar sow"
@=@ "boardboy boardgirl boardman boardwoman boardmen boardwomen"
@=@ "boatboy boatgirl boatman boatwoman boatmen boatwomen"
@=@ "boatsboy boatsgirl boatsman boatswoman boatsmen boatswomen"
@=@ "bogeyboy bogeygirl bogeyman bogeywoman bogeymen bogeywomen"
@=@ "bogyboy bogygirl bogyman bogywoman bogymen bogywomen"
@=@ "boilerboy boilergirl boilerman boilerwoman boilermen boilerwomen"
@=@ "bombardboy bombardgirl bombardman bombardwoman bombardmen bombardwomen"
@=@ "bondboy bondgirl bondman bondwoman bondmen bondwomen"
@=@ "bondsboy bondsgirl bondsman bondswoman bondsmen bondswomen"
@=@ "bonesboy bonesgirl bonesman boneswoman bonesmen boneswomen"
@=@ "boogeyboy boogeygirl boogeyman boogeywoman boogeymen boogeywomen"
@=@ "boogieboy boogiegirl boogieman boogiewoman boogiemen boogiewomen"
@=@ "boogyboy boogygirl boogyman boogywoman boogymen boogywomen"
@=@ "bookboy bookgirl bookman bookwoman bookmen bookwomen"
@=@ "boothboy boothgirl boothman boothwoman boothmen boothwomen"
@=@ "bordboy bordgirl bordman bordwoman bordmen bordwomen"
@=@ "bowboy bowgirl bowman bowwoman bowmen bowwomen"
@=@ "bowsboy bowsgirl bowsman bowswoman bowsmen bowswomen"
@=@ "boxboy boxgirl boxman boxwoman boxmen boxwomen"
@=@ "boy girl boydom girldom boyhood girlhood"
@=@ "boy-band girl-band"
@=@ "boy-oh-boy girl-oh-girl"
@=@ "boychildren girlchildren"
@=@ "boyfriend girlfriend"
@=@ "boyish girlish boyism girlism"
@=@ "boyish-looking girlish-looking boyishly girlishly boyishness girlishness"
@=@ "boylike girllike boylikeness girllikeness boyliker girlliker"
@=@ "boylikest girllikest boyscout girlscout boyship girlship"
@=@ "brakeboy brakegirl brakeman brakewoman brakemen brakewomen"
@=@ "breadboy breadgirl breadman breadwoman breadmen breadwomen"
@=@ "breakboy breakgirl breakman breakwoman breakmen breakwomen"
@=@ "brethern sistern"
@=@ "brickboy brickgirl brickman brickwoman brickmen brickwomen"
@=@ "bridegroom bride"
@=@ "bridesboy bridesgirl bridesman brideswoman bridesmen brideswomen"
@=@ "briefboy briefgirl briefman briefwoman briefmen briefwomen"
@=@ "brinksboy brinksgirl brinksman brinkswoman brinksmen brinkswomen"
@=@ "bro sis brother sister brotherhood sisterhood brotherly sisterly"
@=@ "brotherboy brothergirl brotherman brotherwoman brothermen brotherwomen"
@=@ "buck doe"
@=@ "bull cow bullshit cowshit"
@=@ "busboy busgirl busman buswoman busmen buswomen"
@=@ "bushboy bushgirl bushman bushwoman bushmen bushwomen"
@=@ "bushelboy bushelgirl bushelman bushelwoman bushelmen bushelwomen"
@=@ "businessboy businessgirl businessman businesswoman businessmen businesswomen"
@=@ "butcher butcheress"
@=@ "butt-boy butt-girl butt-man butt-woman butt-men butt-women"
@=@ "butterboy buttergirl butterman butterwoman buttermen butterwomen"
@=@ "buttonboy buttongirl buttonman buttonwoman buttonmen buttonwomen"
@=@ "cabboy cabgirl cabman cabwoman cabmen cabwomen"
@=@ "cakeboy cakegirl cakeman cakewoman cakemen cakewomen"
@=@ "caliph calafia caliph calipha"
@=@ "cameraboy cameragirl cameraman camerawoman cameramen camerawomen"
@=@ "candy-boy candy-girl candy-man candy-woman candy-men candy-women"
@=@ "candyboy candygirl candyman candywoman candymen candywomen"
@=@ "canoeboy canoegirl canoeman canoewoman canoemen canoewomen"
@=@ "carboy cargirl carman carwoman carmen carwomen"
@=@ "cartboy cartgirl cartman cartwoman cartmen cartwomen"
@=@ "caterer cateress"
@=@ "catfisherboy catfishergirl catfisherman catfisherwoman catfishermen catfisherwomen"
@=@ "cattleboy cattlegirl cattleman cattlewoman cattlemen cattlewomen"
@=@ "cavalryboy cavalrygirl cavalryman cavalrywoman cavalrymen cavalrywomen"
@=@ "caveboy cavegirl caveman cavewoman cavemen cavewomen"
@=@ "cellarboy cellargirl cellarman cellarwoman cellarmen cellarwomen"
@=@ "centerboy centergirl centerman centerwoman centermen centerwomen"
@=@ "centreboy centregirl centreman centrewoman centremen centrewomen"
@=@ "chainboy chaingirl chainman chainwoman chainmen chainwomen"
@=@ "chairboy chairgirl chairman chairwoman chairmen chairwomen"
@=@ "chanter chantress"
@=@ "chapboy chapgirl chapman chapwoman chapmen chapwomen"
@=@ "chapelboy chapelgirl chapelman chapelwoman chapelmen chapelwomen"
@=@ "charboy chargirl charman charwoman charmen charwomen"
@=@ "checkweighboy checkweighgirl"
@=@ "checkweighman checkweighwoman checkweighmen checkweighwomen"
@=@ "chessboy chessgirl chessman chesswoman chessmen chesswomen"
@=@ "chief chiefess"
@=@ "chinaboy chinagirl chinaman chinawoman chinamen chinawomen"
@=@ "chineseboy chinesegirl chineseman chinesewoman chinesemen chinesewomen"
@=@ "churchboy churchgirl churchman churchwoman churchmen churchwomen"
@=@ "cisboy cisgirl cisman ciswoman cismen ciswomen"
@=@ "clansboy clansgirl clansman clanswoman clansmen clanswomen"
@=@ "classboy classgirl classman classwoman classmen classwomen"
@=@ "clergyboy clergygirl clergyman clergywoman clergymen clergywomen"
@=@ "clerk clerkess"
@=@ "clubboy clubgirl clubman clubwoman clubmen clubwomen"
@=@ "coachboy coachgirl coachman coachwoman coachmen coachwomen"
@=@ "coadjutor cadutrix"
@=@ "coalboy coalgirl coalman coalwoman coalmen coalwomen"
@=@ "coastguardsboy coastguardsgirl"
@=@ "coastguardsman coastguardswoman coastguardsmen coastguardswomen"
@=@ "cock hen"
@=@ "cocksboy cocksgirl cocksman cockswoman cocksmen cockswomen"
@=@ "cogboy coggirl cogman cogwoman cogmen cogwomen"
@=@ "colorboy colorgirl colorman colorwoman colormen colorwomen"
@=@ "colourboy colourgirl colourman colourwoman colourmen colourwomen"
@=@ "colt fillie"
@=@ "commedian comedienne"
@=@ "committeeboy committeegirl committeeman committeewoman committeemen committeewomen"
@=@ "commonwealthboy commonwealthgirl"
@=@ "commonwealthman commonwealthwoman commonwealthmen commonwealthwomen"
@=@ "commonwealthsboy commonwealthsgirl"
@=@ "commonwealthsman commonwealthswoman commonwealthsmen commonwealthswomen"
@=@ "conboy congirl conman conwoman conmen conwomen"
@=@ "conductor conductress"
@=@ "confessor confessoress"
@=@ "congressboy congressgirl congressman congresswoman congressmen congresswomen"
@=@ "conquer conqueress"
@=@ "cook cookess"
@=@ "copeboy copegirl copeman copewoman copemen copewomen"
@=@ "cornerboy cornergirl cornerman cornerwoman cornermen cornerwomen"
@=@ "cornishboy cornishgirl cornishman cornishwoman cornishmen cornishwomen"
@=@ "corpsboy corpsgirl corpsman corpswoman corpsmen corpswomen"
@=@ "councilboy councilgirl councilman councilwoman councilmen councilwomen"
@=@ "count countess"
@=@ "counterboy countergirl counterman counterwoman countermen counterwomen"
@=@ "countryboy countrygirl countryman countrywoman countrymen countrywomen"
@=@ "cowboy cowgirl cowman cowwoman cowmen cowwomen"
@=@ "cracksboy cracksgirl cracksman crackswoman cracksmen crackswomen"
@=@ "craftsboy craftsgirl craftsman craftswoman craftsmen craftswomen"
@=@ "cragsboy cragsgirl cragsman cragswoman cragsmen cragswomen"
@=@ "crayfisherboy crayfishergirl"
@=@ "crayfisherman crayfisherwoman crayfishermen crayfisherwomen"
@=@ "cyberboy cybergirl cyberman cyberwoman cybermen cyberwomen"
@=@ "czar czarina"
@=@ "dad mom dada mama daddy mommy daddies mommies"
@=@ "dairyboy dairygirl dairyman dairywoman dairymen dairywomen"
@=@ "dangerboy dangergirl dangerman dangerwoman dangermen dangerwomen"
@=@ "daysboy daysgirl daysman dayswoman daysmen dayswomen"
@=@ "deacon deaconess"
@=@ "deadboy deadgirl deadman deadwoman deadmen deadwomen"
@=@ "debutant debutante"
@=@ "demesboy demesgirl demesman demeswoman demesmen demeswomen"
@=@ "demon demoness"
@=@ "deskboy deskgirl deskman deskwoman deskmen deskwomen"
@=@ "devil deviless"
@=@ "director directress"
@=@ "dirtboy dirtgirl dirtman dirtwoman dirtmen dirtwomen"
@=@ "divine divineress"
@=@ "divorce divorcee"
@=@ "doctor doctress"
@=@ "dog bitch dogs bitches"
@=@ "dominator dominatrix dominators dominatrices"
@=@ "dragon dragoness"
@=@ "drake duck"
@=@ "draftboy draftgirl draftman draftwoman drafemen drafewomen"
@=@ "draftsboy draftsgirl draftsman draftswoman draftsmen draftswomen"
@=@ "draughtsboy draughtsgirl draughtsman draughtswoman draughtsmen draughtswomen"
@=@ "drayboy draygirl drayman draywoman draymen draywomen"
@=@ "drone bee"
@=@ "dude dudette"
@=@ "duke duchess"
@=@ "dutchboy dutchgirl"
@=@ "dutchman dutchwoman dutchmen dutchwomen"
@=@ "earl countess"
@=@ "earthboy earthgirl earthman earthwoman earthmen earthwomen"
@=@ "earthsboy earthsgirl earthsman earthswoman earthsmen earthswomen"
@=@ "editor editress"
@=@ "editor editrix"
@=@ "elector electress"
@=@ "emperor empress"
@=@ "enchanter enchantress"
@=@ "englishboy englishgirl englishman englishwoman englishmen englishwomen"
@=@ "everyboy everygirl everyman everywoman everymen everywomen"
@=@ "ex-boyfriend ex-girlfriend ex-husband ex-wife ex-husbands ex-wives"
@=@ "executor executrix executor executres"
@=@ "faceboy facegirl faceman facewoman facemen facewomen"
@=@ "father mother"
@=@ "fatherfucker motherfucker fatherphocker motherphocker fatherfucker mutherfucker"
@=@ "fatherhood motherhood"
@=@ "fiance fiancee"
@=@ "fireboy firegirl fireman firewoman firemen firewomen"
@=@ "fisherboy fishergirl fisherman fisherwoman fishermen fisherwomen"
@=@ "fishboy fishgirl fishman fishwoman fishmen fishwomen"
@=@ "foeboy foegirl foeman foewoman foemen foewomen"
@=@ "foreboy foregirl foreman forewoman foremen forewomen"
@=@ "freeboy freegirl freedman freedwoman freedmen freedwomen"
@=@ "freedboy freedgirl freeman freewoman freemen freewomen"
@=@ "frenchboy frenchgirl frenchman frenchwoman frenchmen frenchwomen"
@=@ "fretboy fretgirl fretman fretwoman fretmen fretwomen"
@=@ "friar nun"
@=@ "frontboy frontgirl frontiersboy frontiersgirl"
@=@ "frontiersman frontierswoman frontiersmen frontierswomen"
@=@ "frontman frontwoman frontmen frontwomen"
@=@ "funnyboy funnygirl funnyman funnywoman funnymen funnywomen"
@=@ "gander goose ganders geese"
@=@ "gasboy gasgirl gasman gaswoman gasmen gaswomen"
@=@ "gentleboy gentlegirl gentleman gentlewoman gentlemen gentlewomen"
@=@ "giant giantess"
@=@ "gigolo hooker"
@=@ "gladiator gladiatrix"
@=@ "gleeboy gleegirl gleeman gleewoman gleemen gleewomen"
@=@ "gloveboy glovegirl"
@=@ "gloveman glovewoman glovemen glovewomen"
@=@ "god godess"
@=@ "godfather godmother godson goddaughter"
@=@ "governor governoress"
@=@ "gownboy gowngirl gownman gownwoman gownmen gownwomen"
@=@ "gownsboy gownsgirl gownsman gownswoman gownsmen gownswomen"
@=@ "gramp granny"
@=@ "granddad grandmom"
@=@ "grandfather grandmother"
@=@ "grandnephew grandniece"
@=@ "grandpa grandma"
@=@ "grandpapa grandmama"
@=@ "grandpop grandmom"
@=@ "grandson granddaughter"
@=@ "great-granddad great-grandmom"
@=@ "great-grandfather great-grandmother"
@=@ "great-grandnephew great-grandniece"
@=@ "great-grandpa great-grandma"
@=@ "great-grandpapa great-grandmama"
@=@ "great-grandpop great-grandmom"
@=@ "great-grandson great-granddaughter"
@=@ "great-granduncle great-grandaunt"
@=@ "great-granduncle great-grandauntie"
@=@ "great-great-granddad great-great-grandmom"
@=@ "great-great-grandfather great-great-grandmother"
@=@ "great-great-grandnephew great-great-grandniece"
@=@ "great-great-grandpa great-great-grandma"
@=@ "great-great-grandpapa great-great-grandmama"
@=@ "great-great-grandpop great-great-grandmom"
@=@ "great-great-grandson great-great-granddaughter"
@=@ "great-great-granduncle great-great-grandaunt"
@=@ "great-great-granduncle great-great-grandauntie"
@=@ "great-great-great-granddad great-great-great-grandmom"
@=@ "great-great-great-grandfather great-great-great-grandmother"
@=@ "great-great-great-grandnephew great-great-great-grandniece"
@=@ "great-great-great-grandpa great-great-great-grandma"
@=@ "great-great-great-grandpapa great-great-great-grandmama"
@=@ "great-great-great-grandpop great-great-great-grandmom"
@=@ "great-great-great-grandson great-great-great-granddaughter"
@=@ "great-great-great-granduncle great-great-great-grandaunt"
@=@ "great-great-great-granduncle great-great-great-grandauntie"
@=@ "great-great-great-great-granddad great-great-great-great-grandmom"
@=@ "great-great-great-great-grandfather great-great-great-great-grandmother"
@=@ "great-great-great-great-grandnephew great-great-great-great-grandniece"
@=@ "great-great-great-great-grandpa great-great-great-great-grandma"
@=@ "great-great-great-great-grandpapa great-great-great-great-grandmama"
@=@ "great-great-great-great-grandpop great-great-great-great-grandmom"
@=@ "great-great-great-great-grandson great-great-great-great-granddaughter"
@=@ "great-great-great-great-granduncle great-great-great-great-grandaunt"
@=@ "great-great-great-great-granduncle great-great-great-great-grandauntie"
@=@ "great-great-great-great-great-granddad great-great-great-great-great-grandmom"
@=@ "great-great-great-great-great-grandfather great-great-great-great-great-grandmother"
@=@ "great-great-great-great-great-grandnephew great-great-great-great-great-grandniece"
@=@ "great-great-great-great-great-grandpa great-great-great-great-great-grandma"
@=@ "great-great-great-great-great-grandpapa great-great-great-great-great-grandmama"
@=@ "great-great-great-great-great-grandpop great-great-great-great-great-grandmom"
@=@ "great-great-great-great-great-grandson great-great-great-great-great-granddaughter"
@=@ "great-great-great-great-great-granduncle great-great-great-great-great-grandaunt"
@=@ "great-great-great-great-great-granduncle great-great-great-great-great-grandauntie"
@=@ "great-great-great-great-great-uncle great-great-great-great-great-grandaunt"
@=@ "great-great-great-great-great-uncle great-great-great-great-great-grandauntie"
@=@ "great-great-great-great-uncle great-great-great-great-grandaunt"
@=@ "great-great-great-great-uncle great-great-great-great-grandauntie"
@=@ "great-great-great-uncle great-great-great-grandaunt"
@=@ "great-great-great-uncle great-great-great-grandauntie"
@=@ "great-great-uncle great-great-grandaunt"
@=@ "great-great-uncle great-great-grandauntie"
@=@ "great-uncle great-grandaunt"
@=@ "great-uncle great-grandauntie"
@=@ "gringo gringa"
@=@ "groom bride"
@=@ "groomsboy groomsgirl groomsman groomswoman groomsmen groomswomen"
@=@ "groundsboy groundsgirl groundsman groundswoman groundsmen groundswomen"
@=@ "gunboy gungirl gunman gunwoman gunmen gunwomen"
@=@ "guy gal"
@=@ "hackboy hackgirl hackman hackwoman hackmen hackwomen"
@=@ "hammerboy hammergirl hammerman hammerwoman hammermen hammerwomen"
@=@ "handcraftsboy handcraftsgirl"
@=@ "handcraftsman handcraftswoman handcraftsmen handcraftswomen"
@=@ "handi-craftsboy handi-craftsgirl"
@=@ "handi-craftsman handi-craftswoman handi-craftsmen handi-craftswomen"
@=@ "hangboy hanggirl hangman hangwoman hangmen hangwomen"
@=@ "hardboy hardgirl hardman hardwoman hardmen hardwomen"
@=@ "hatchetboy hatchetgirl hatchetman hatchetwoman hatchetmen hatchetwomen"
@=@ "he she him her himself herself his hers his her"
@=@ "he-boy he-girl he-man he-woman he-men he-women"
@=@ "headmaster headmistress"
@=@ "heir heiress"
@=@ "helboy helgirl helman helwoman helmen helwomen"
@=@ "helmsman helmswoman helmsmen helmswomen"
@=@ "herdboy herdgirl herdman herdwoman herdmen herdwoman"
@=@ "heritor heritress heritor heritrix"
@=@ "hero heroine"
@=@ "highwayboy highwaygirl highwayman highwaywoman highwaymen highwaywomen"
@=@ "hillsboy hillsgirl hillsman hillswoman hillsmen hillswomen"
@=@ "hob jill"
@=@ "horseboy horsegirl horseman horsewoman horsemen horsewomen"
@=@ "host hostess"
@=@ "hunter huntress"
@=@ "husband wife husbands wives"
@=@ "hypeboy hypegirl hypeman hypewoman hypemen hypewomen"
@=@ "iceboy icegirl iceman icewoman icemen icewomen"
@=@ "incubii sucubii incubus succubus"
@=@ "inheritor inheritress inheritor inheritrix"
@=@ "instructor instructress"
@=@ "irishboy irishgirl irishman irishwoman irishmen irishwomen"
@=@ "ironboy irongirl ironman ironwoman ironmen ironwomen"
@=@ "jackaroo jillaroo jack jill"
@=@ "jew jewess"
@=@ "jointer jointress"
@=@ "khaliph khalafia khaliph khalipha"
@=@ "king queen"
@=@ "king-hit queen-hit"
@=@ "king-of-arms queen-of-arms"
@=@ "kingcraft queencraft"
@=@ "kingcup queencup"
@=@ "kingdom queendom"
@=@ "kingdomful queendomful kingdomless queendomless kingdomship queendomship"
@=@ "kinged queened"
@=@ "kinger queener"
@=@ "kingest queenest"
@=@ "kinghead queenhead"
@=@ "kinghood queenhood"
@=@ "kinging queening"
@=@ "kingless queenless kinglessness queenlessness"
@=@ "kinglier queenlier kingliest queenliest"
@=@ "kinglihood queenlihood"
@=@ "kinglike queenlike kingliker queenliker kinglikest queenlikest"
@=@ "kingliness queenliness"
@=@ "kingling queenling kingling queenling kingly queenly"
@=@ "kingmaker queenmaker kingmaking queenmaking"
@=@ "kingpiece queenpiece"
@=@ "kingpin queenpin kingpost queenpost"
@=@ "kingsboy kingsgirl kingsman kingswoman kingsmen kingswomen"
@=@ "kingship queenship"
@=@ "kingside queenside"
@=@ "kingsize queensize"
@=@ "kingsman queensman kingsmen queensmen"
@=@ "klansboy klansgirl klansman klanswoman klansmen klanswomen"
@=@ "kinglier queenlier kingliest queenliest"
@=@ "kinglihood queenlihood"
@=@ "kinglike queenlike kingliker queenliker kinglikest queenlikest"
@=@ "kingliness queenliness"
@=@ "kingling queenling kingling queenling kingly queenly"
@=@ "kingmaker queenmaker kingmaking queenmaking"
@=@ "kingpiece queenpiece"
@=@ "kingpin queenpin kingpost queenpost"
@=@ "kingsboy kingsgirl kingsman kingswoman kingsmen kingswomen"
@=@ "kingship queenship"
@=@ "kingside queenside"
@=@ "kingsize queensize"
@=@ "kingsman queensman kingsmen queensmen"
@=@ "klansboy klansgirl klansman klanswoman klansmen klanswomen"
@=@ "knight dame"
@=@ "lad lass laddie lassie"
@=@ "landgrave landgravine"
@=@ "landlord landlady landlords handladies"
@=@ "latino latina"
@=@ "launderer laundress"
@=@ "laundryboy laundrygirl laundryman laundrywoman laundrymen laundrywomen"
@=@ "lawboy lawgirl lawman lawwoman lawmen lawwomen"
@=@ "lawyer layeress"
@=@ "layboy laygirl layman laywoman laymen laywomen"
@=@ "leatherboy leathergirl leatherman leatherwoman leathermen leatherwomen"
@=@ "legboy leggirl legman legwoman legmen legwomen"
@=@ "liegeboy liegegirl liegeman liegewoman liegemen liegewomen"
@=@ "lineboy linegirl lineman linewoman linemen linewomen"
@=@ "linesboy linesgirl linesman lineswoman linesmen lineswomen"
@=@ "linkboy linkgirl linkman linkwoman linkmen linkwomen"
@=@ "lion lioness"
@=@ "lizardboy lizardgirl lizardman lizardwoman lizardmen lizardwomen"
@=@ "lord lady lords ladies"
@=@ "madboy madgirl madman madwoman madmen madwomen"
@=@ "mailboy mailgirl mailman mailwoman mailmen mailwomen"
@=@ "male female maleness femaleness"
@=@ "man woman men women"
@=@ "man-boy girl-worman"
@=@ "man-children woman-children manchildren womanchildren"
@=@ "manager manageress"
@=@ "manhood womenhood"
@=@ "manly womanly"
@=@ "manservant maidservant"
@=@ "margrave margavine"
@=@ "marquess marquis marquise marchioness"
@=@ "masculine feminine"
@=@ "masseue masseuse"
@=@ "mastboy mastgirl"
@=@ "mastman mastwoman mastmen mastwomen"
@=@ "maybe-boy maybe-girl maybe-man maybe-woman maybe-men maybe-women"
@=@ "mayor mayoress"
@=@ "mediator mediatress mediator mediatrix mediator mediatrice"
@=@ "men-children women-children menchildren womenchildren"
@=@ "merboy mergirl merman mermaid merman merwoman mermen merwomen"
@=@ "middleboy middlegirl middleman middlewoman middlemen middlewomen"
@=@ "midshipboy midshipgirl midshipman midshipwoman midshipmen midshipwomen"
@=@ "milkboy milkgirl milkman milkwoman milkmen milkwomen"
@=@ "millionaire millionairess billionaire billionairess"
@=@ "misandry misogyny misandrist misogynist"
@=@ "moneyboy moneygirl moneyman moneywoman moneymen moneywomen"
@=@ "monk nun"
@=@ "monster monsteress"
@=@ "moor morisco"
@=@ "mr mrs mister missus mr ms mr mz master miss master mistress"
@=@ "murderer murderess"
@=@ "muscleboy musclegirl muscleman musclewoman musclemen musclewomen"
@=@ "negroe negress negro negress"
@=@ "nephew niece"
@=@ "newsboy newsgirl newsman newswoman newsmen newswomen"
@=@ "newspaperboy newspapergirl newspaperman newspaperwoman newspapermen newspaperwomen"
@=@ "no-boy no-girl no-man no-woman no-men no-women"
@=@ "nobelman noblewoman nobelmen nobelwomen"
@=@ "nurseryboy nurserygirl nurseryman nurserywoman nurserymen nurserywomen"
@=@ "orator oratress orator oratrix"
@=@ "orchardboy orchardgirl orchardman orchardwoman orchardmen orchardwomen"
@=@ "overboy overgirl overman overwoman overmen overwomen"
@=@ "pa ma papa mama pop mom poppy mommy"
@=@ "paceboy pacegirl paceman pacewoman pacemen pacewomen"
@=@ "paternal maternal patriarchal matriarchal"
@=@ "patricide matricide"
@=@ "patrolboy patrolgirl patrolman patrolwoman patrolmen patrolwomen"
@=@ "patron patroness"
@=@ "peacock peahen"
@=@ "pitboy pitgirl pitman pitwoman pitmen pitwomen"
@=@ "pitchboy pitchgirl pitchman pitchwoman pitchmen pitchwomen"
@=@ "plowman plowwoman plowmen plowwomen"
@=@ "poet poetess"
@=@ "policeboy policegirl policeman policewoman policemen policewomen"
@=@ "poultryboy poultrygirl poultryman poultrywoman poultrymen poultrywomen"
@=@ "preacher preacheress"
@=@ "priest priestess"
@=@ "prince princess"
@=@ "prior prioress"
@=@ "prophet prophetess"
@=@ "proprietor proprietress"
@=@ "protor protectress"
@=@ "ragboy raggirl ragman ragwoman ragmen ragwomen"
@=@ "railroadboy railroadgirl railroadman railroadwoman railroadmen railroadwomen"
@=@ "railwayboy railwaygirl railwayman railwaywoman railwaymen railwaywomen"
@=@ "rainboy raingirl rainman rainwoman rainmen rainwomen"
@=@ "ram ewe billy ewe"
@=@ "rastaboy rastagirl rastaman rastawoman rastamen rastawomen"
@=@ "remainder-boy remainder-girl"
@=@ "remainder-man remainder-woman remainder-men remainder-women"
@=@ "remainderboy remaindergirl remainderman remainderwoman remaindermen remainderwomen"
@=@ "repoboy repogirl repoman repowoman repomen repowomen"
@=@ "rescueboy rescuegirl rescueman rescuewoman rescuemen rescuewomen"
@=@ "ringboy ringgirl ringman ringwoman ringmen ringwomen"
@=@ "schoolmaster schoolmistress"
@=@ "scotsboy scotsgirl scotsman scotswoman scotsmen scotswomen"
@=@ "sculptor sculptress"
@=@ "seaboy seagirl seaman seawoman seamen seawomen"
@=@ "seducer seduceress"
@=@ "seductor seductress"
@=@ "seedsboy seedsgirl seedsman seedswoman seedsmen seedswomen"
@=@ "sempster sempstress"
@=@ "senor senora"
@=@ "serviceboy servicegirl serviceman servicewoman servicemen servicewomen"
@=@ "sewerboy sewergirl sewerman sewerwoman sewermen sewerwomen"
@=@ "shaboy shagirl shaman shawoman shamen shawomen"
@=@ "sheepboy sheepgirl sheepman sheepwoman sheepmen sheepwomen"
@=@ "shellfisherboy shellfishergirl"
@=@ "shellfisherman shellfisherwoman shellfishermen shellfisherwomen"
@=@ "shepherd shepherdess"
@=@ "shirt blouse"
@=@ "shopboy shopgirl shopman shopwoman shopmen shopwomen"
@=@ "showboy showgirl showman showwoman showmen showwomen"
@=@ "silkboy silkgirl silkman silkwoman silkmen silkwomen"
@=@ "singer singeress"
@=@ "sir madam sir ma'am sir damn"
@=@ "sire dam"
@=@ "snowboy snowgirl snowman snowwoman snowmen snowwomen"
@=@ "son daughter"
@=@ "songster songstress"
@=@ "sorcerer sorceress"
@=@ "spokesboy spokesgirl spokesman spokeswoman spokesmen spokeswomen"
@=@ "sportsboy sportsgirl sportsman sportswoman sportsmen sportswomen"
@=@ "stag hind"
@=@ "stallion mare"
@=@ "statesboy statesgirl statesman stateswoman statesmen stateswomen"
@=@ "steer heifer"
@=@ "steersboy steersgirl steersman steerswoman steersmen steerswomen"
@=@ "stepdad stepmom stepfather stepmother stepson stepdaughter"
@=@ "steward stewardess"
@=@ "stuntboy stuntgirl stuntman stuntwoman stuntmen stuntwomen"
@=@ "suitor suitress"
@=@ "sultan sultana"
@=@ "sweat glow"
@=@ "tailor seamstress"
@=@ "talesboy talesgirl talesman taleswoman talesmen taleswomen"
@=@ "talisboy talisgirl talisman taliswoman talismen taliswomen"
@=@ "taskmaster taskmistress"
@=@ "temptor temptress"
@=@ "terminator terminatrix"
@=@ "tiger tigress"
@=@ "toastmaster toastmistress"
@=@ "tod vixen"
@=@ "tom hen"
@=@ "townsboy townsgirl townsman townswoman townsmen townswomen"
@=@ "toyboy toygirl toyman toywoman toymen toywomen"
@=@ "tradesboy tradesgirl tradesman tradeswoman tradesmen tradeswomen"
@=@ "traitor traitress"
@=@ "trencherboy trenchergirl trencherman trencherwoman trenchermen trencherwomen"
@=@ "triggerboy triggergirl triggerman triggerwoman triggermen triggerwomen"
@=@ "tutor tutoress"
@=@ "tzar tzarina"
@=@ "uncle aunt uncle auntie"
@=@ "undies knickers"
@=@ "usher usherette"
@=@ "utilityboy utilitygirl utilityman utilitywoman utilitymen utilitywomen"
@=@ "vampire vampiress"
@=@ "victor victress"
@=@ "villian villainess"
@=@ "viscount viscountess viscount visereine"
@=@ "vixor vixen"
@=@ "votary votaress votary votress votaries votresses"
@=@ "wageboy wagegirl wageman wagewoman wagemen wagewomen"
@=@ "waiter waitress"
@=@ "warder wardess"
@=@ "warrior warrioress warlock witch"
@=@ "washerboy washergirl washerman washerwoman washermen washerwomen"
@=@ "watchboy watchgirl watchman watchwoman watchmen watchwomen"
@=@ "waterboy watergirl waterman waterwoman watermen waterwomen"
@=@ "weighboy weighgirl weighman weighwoman weighmen weighwomen"
@=@ "werewolf wifwolf"
@=@ "whaleboy whalegirl whaleman whalewoman whalemen whalewomen"
@=@ "wheelboy wheelgirl wheelman wheelwoman wheelmen wheelwomen"
@=@ "whoremonger whoremistress"
@=@ "widower widow"
@=@ "wingboy winggirl wingman wingwoman wingmen wingwomen"
@=@ "wiseboy wisegirl wiseman wisewoman wisemen wisewomen"
@=@ "wizard witch"
@=@ "workboy workgirl workman workwoman workmen workwomen"
@=@ "workingboy workinggirl workingman workingwoman workingmen workingwomen"
@=@ "yachtsboy yachtsgirl yachtsman yachtswoman yachtsmen yachtswomen"
@=@ "yardboy yardgirl yardman yardwoman yardmen yardwomen"
@=@ "yes-boy yes-girl yes-man yes-woman yes-men yes-women"
                                                 /*"first" names;  not a complete list. */
@=@ "Aaron Erin Adam Eve Adrian Adriana Aidrian Aidriana Alan Alaina Albert Alberta Alex"
@=@ "Alexa Alex Alexis Alexander Alaxandra Alexander Alexandra Alexander Alexis"
@=@ "Alexandra Alexander Alexei Alexis Alfred Alfreda Andrew Andrea Angel Angelica"
@=@ "Anthony Antonia Antoine Antoinette Ariel Arielle Ashleigh Ashley Barry Barrie"
@=@ "Benedict Benita Benjamin Benjamine Bert Bertha Brandon Brandi Brendan Brenda Brian"
@=@ "Rianne Briana Brian Caela Caesi Caeleb Caeli Carl Carla Carl Carly Carolus Caroline"
@=@ "Charles Caroline Charles Charlotte Christian Christa Christian Christiana Christian"
@=@ "Christina Christopher Christina Christopher Christine Clarence Claire Claude"
@=@ "Claudia Clement Clementine Cory Cora Daniel Daniella Daniel Danielle David Davena"
@=@ "David Davida David Davina Dean Deanna Devin Devina Edward Edwina Edwin Edwina Emil"
@=@ "Emilie Emil Emily Eric Erica Erick Erica Erick Ericka Ernest Ernestine Ethan Etha"
@=@ "Ethan Ethel Eugene Eugenie Fabian Fabia Frances Francesca Francesco Francesca"
@=@ "Francis Frances Francis Francine Fred Freda Frederick Fredrica Fredrick Frederica"
@=@ "Gabriel Gabriella Gabriel Gabrielle Gene Jean George Georgia George Georgina Gerald"
@=@ "Geraldine Gerard Gerardette Giovanni Giovanna Glen Glenn Harry Harriet Harry"
@=@ "Harriette Heather Heath Henry Henrietta Horace Horatia Ian Iana Ilija Ilinka Ivan"
@=@ "Ivy Ivo Ivy Jack Jackelyn Jack Jackie Jack Jaclyn Jack Jacqueline Jacob Jacobine"
@=@ "James Jamesina James Jamie Jaun Jaunita Jayda Jayden Jesse Jessica Jesse Jessie Joe"
@=@ "Johanna Joel Joelle John Jean John Joan John Johanna Joleen Joseph Jon Joane Joseph"
@=@ "Josephine Joseph Josphine Julian Julia Julian Juliana Julian Julianna Justin"
@=@ "Justine Karl Karly Ken Kendra Kendrick Kendra Kian Kiana Kyle Kylie Laurence Laura"
@=@ "Laurence Lauren Laurence Laurencia Leigh Leigha Leon Leona Louis Louise Lucas Lucia"
@=@ "Lucian Lucy Luke Lucia Lyle Lyla Maria Mario Mario Maricela Mark Marcia Marshall"
@=@ "Marsha Martin Martina Martin Martine Max Maxine Michael Michaela Michael Micheala"
@=@ "Michael Michelle Mitchell Michelle Nadir Nadira Nicholas Nicki Nicholas Nicole"
@=@ "Nicky Nikki Nicolas Nicole Nigel Nigella Noel Noelle Oen Ioena Oliver Olivia"
@=@ "Patrick Patricia Paul Paula Phillip Phillipa Phillip Pippa Quintin Quintina"
@=@ "Reginald Regina Richard Richardine Robert Roberta Robert Robyn Ronald Rhonda Ryan"
@=@ "Rhian Ryan Ryanne Samantha Samuel Samuel Samantha Samuel Sammantha Samuel Samuela"
@=@ "Sean Sian Sean Siana Shaun Shauna Sheldon Shelby Sonny Sunny Stephan Stephanie"
@=@ "Stephen Stephanie Steven Stephanie Terry Carol Terry Carrol Theodore Theadora"
@=@ "Theodore Theodora Theodore Theordora Thomas Thomasina Tristan Tricia Tristen Tricia"
@=@ "Ulric Ulrika Valentin Valentina Victor Victoria William Wilhelmina William Willa"
@=@ "William Willamina Xavier Xaviera Yarden Yardena Zahi Zahira Zion Ziona"

say center(" There're "      words(@)      ' words in the gender bender list. ', sw, '─')

  do j=1  to words(@)  by 2;          n=j+1
  m  =word(@,j);    f  =word(@,n);    @.m=m    ;     !.m=f    ;    @.f  =f  ;    !.f  =m
  ms =many(m)  ;    fs =many(f)  ;    @.ms=ms  ;     !.ms=fs  ;    @.fs =fs ;    !.fs =ms
  mp =proper(m);    fp =proper(f);    @.mp=mp  ;     !.mp=fp  ;    @.fp =fp ;    !.fp =mp
  mps=many(mp) ;    fps=many(fp) ;    @.mps=mps;     !.mps=fps;    @.fps=fps;    !.fps=mps
  upper  m  f  ;                      @.m=m    ;     !.m=f    ;    @.f  =f  ;    !.f  =m
  ms =many(m)  ;    fs =many(f)  ;    @.ms=ms  ;     !.ms=fs  ;    @.fs =fs ;    !.fs =ms
  end   /*j*/
                               /* [↑]  handle lower/uppercase, capitalized, and plurals.*/
new=
        do k=1  for words(old)
        new=new  bendit( word(old,k) )           /*construct a list of  "gender"  words.*/
        end   /*k*/
say
call tell new, ' new '                           /*show a nicely parsed  "new"  text.   */
exit                                             /*stick a fork in it,  we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
bendit:  parse arg x 1 ox                        /*get a word,  make a copy of original.*/
         if length(x)==1  then return ox         /*if one character, then return as is. */
         @abc= 'abcdefghijklmnopqrstuvwxyz'      /*define a lowercase (Latin) alphabet. */
         parse upper var  @abc  @abcU  pref suff /*get uppercase version,  nullify vars.*/
         @abcU=@abc || @abcU                     /*construct lower & uppercase alpahbet.*/
         _=verify(x, @abcU, 'M')                 /*see if all the "letters" are letters.*/
         if _==0  then return ox                 /*No?  Then return it as is; not a word*/
         pref=left(x, _ - 1)                     /*obtain (any, if at all) prefix.      */
         x=substr(x, _)                          /*obtain the suffix  (any, if at all). */
         xr=reverse(x)                           /*reverse the string (for testing caps)*/
         _=verify(xr, @abcU, 'M')
         if _\==0  then do;  suff=reverse( left(xr, _  - 1) )
                             xr=substr(xr, _)
                        end
         x=reverse(xr)
         if \datatype(x, 'M')  then return x     /*Not all letters? Then return original*/
         if @.x\==''  then return pref || !.x || suff                /*plurized ?       */
         if !.x\==''  then return pref || @.x || suff                /*has a gender ?   */
                           return pref ||   x || suff                /*No? Return as is.*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
many:    parse arg _;  if right(_, 1)=='s'  then return _ || 'es'    /*maintain lower.  */
                       if right(_, 1)=='S'  then return _ || 'ES'    /*    "    upper.  */
                       if datatype(_,'U')   then return _'S'         /*use uppercase?   */
                                                 return _'s'         /* "  lowercase.   */
/*──────────────────────────────────────────────────────────────────────────────────────*/
proper:  arg L1 2;     parse arg 2 _2;           return L1 || _2
/*──────────────────────────────────────────────────────────────────────────────────────*/
tell:    procedure expose sw;   parse arg z;     z=space(z);   $=
         say center( arg(2), sw, '─')
                                            do until z=='';  parse var z x z;        n=$ x
                                            if length(n)<sw  then do;  $=n;  iterate;  end
                                            say strip($)
                                            $=x
                                            end   /*until*/
         if $\=''  then say strip($)
         say
         return

This REXX program makes use of   LINESIZE   REXX program (or BIF) which is used to determine the screen width (or linesize) of the terminal (console).
The   LINESIZE.REX   REXX program is included here   ──►   LINESIZE.REX.

output   when using the input of:   She was a soul stripper. She took my heart!
───────────────────────────────────────────── old ─────────────────────────────────────────────
She was a soul stripper. She took my heart!

────────────────────── There're  2776  words in the gender bender list. ───────────────────────

───────────────────────────────────────────── new ─────────────────────────────────────────────
He was a soul stripper. He took my heart!
output   when using the default input:
───────────────────────────────────── old ─────────────────────────────────────
When a new-hatched savage running wild about his native woodlands in a grass
clout, followed by the nibbling goats, as if he were a green sapling; even
then, in Queequegs ambitious soul, lurked a strong desire to see something
more of Christendom than a specimen whaler or two. His father was a High
Chief, a King; his uncle a High Priest; and on the maternal side he boasted
aunts who were the wives of unconquerable warriors. There was excellent blood
in his veins-royal stuff; though sadly vitiated, I fear, by the cannibal
propensity he nourished in his untutored youth.

────────────── There're  2776  words in the gender bender list. ───────────────

───────────────────────────────────── new ─────────────────────────────────────
When a new-hatched savage running wild about her native woodlands in a grass
clout, followed by the nibbling goats, as if she were a green sapling; even
then, in Queequegs ambitious soul, lurked a strong desire to see something
more of Christendom than a specimen whaler or two. Her mother was a High
Chiefess, a Queen; her auntie a High Priestess; and on the paternal side she
boasted uncles who were the husbands of unconquerable warrioresses. There was
excellent blood in her veins-royal stuff; though sadly vitiated, I fear, by
the cannibal propensity she nourished in her untutored youth.

Ring

# Project : Reverse the gender of a string

revGender = list(4)
word = ["She", "she", "Her", "her", "hers", "He", "he", "His", "his", "him"]
repl = ["He", "he", "His", "his" ,"his", "She", "she", "Her", "her", "her"]

revGender[1] = "She was a soul stripper. She took his heart!"
revGender[2] = "He was a soul stripper. He took her heart!"
revGender[3] = "She wants what's hers, he wants her and she wants him!"
revGender[4] = "Her dog belongs to him but his dog is hers!"

for p=1 to 4
    gstr = ""
    see revGender[p] + " ->" + nl
    gend = repl(revGender[p])
    for nr=1 to len(gend)
        if nr = len(gend)
           gstr = gstr + gend[nr]
        else
           gstr = gstr + gend[nr] + " "
        ok
    next
    gstr = trim(gstr)
    gstr = left(gstr, len(gstr) - 2)
    if right(gstr, 1) != "!"
       gstr = gstr + "!"
    ok 
    see gstr + nl + nl
next

func repl(cStr)
     cStr = words(cStr) + nl
     for n=1 to len(cStr)
         flag = 0
         for m=1 to len(word) 
             if right(cStr[n],1) = ","
                cStr[n] = left(cStr[n], len(cStr[n]) - 1)
                flag = 1
             ok 
             if right(cStr[n],1) = "!"
                cStr[n] = left(cStr[n], len(cStr[n]) - 1)
                flag = 2
             ok                         
             if cStr[n] = word[m]
                if flag = 0  
                   cStr[n] = repl[m]
                ok
                if flag = 1
                   cStr[n] = repl[m] + ","
                ok
                if flag = 2
                   cStr[n] = repl[m] + "!"
                ok
                exit
             ok
         next
        next
        return cStr


func words(cStr2)
     aList = str2list(cStr2)
     for x in aList
         x2 = substr(x," ",nl)
         alist2 = str2list(x2) 
     next
     return alist2

Output:

She was a soul stripper. She took his heart! ->
He was a soul stripper. He took her heart!

He was a soul stripper. He took her heart! ->
She was a soul stripper. She took his heart!

She wants what's hers, he wants her and she wants him! ->
He wants what's his, she wants his and he wants her!

Her dog belongs to him but his dog is hers! ->
His dog belongs to her but her dog is his!

Scala

Output:

Best seen running in your browser either by ScalaFiddle (ES aka JavaScript, non JVM) or Scastie (remote JVM).

object RevGender extends App {
  val s = "She was a soul stripper. She took my heart!"
  println(cheapTrick(s))
  println(cheapTrick(cheapTrick(s)))

  def cheapTrick(s: String): String = s match {
    case _: String if s.toLowerCase.contains("she") => s.replaceAll("She", "He")
    case _: String if s.toLowerCase.contains("he")  => s.replaceAll("He", "She")
    case _: String                                  => s
  }

}

Sidef

var male2female = <<'EOD'
  maleS femaleS, maleness femaleness, him her, himself herself, his her, his
  hers, he she, Mr Mrs, Mister Missus, Ms Mr, Master Miss, MasterS MistressES,
  uncleS auntS, nephewS nieceS, sonS daughterS, grandsonS granddaughterS,
  brotherS sisterS, man woman, men women, boyS girlS, paternal maternal,
  grandfatherS grandmotherS, GodfatherS GodmotherS, GodsonS GoddaughterS,
  fiancéS fiancéeS, husband wife, husbands wives, fatherS motherS, bachelorS
  spinsterS, bridegroomS brideS, widowerS widowS, KnightS DameS, Sir DameS,
  KingS QueenS, DukeS DuchessES, PrinceS PrincessES, Lord Lady, Lords Ladies,
  MarquessES MarchionessES, EarlS CountessES, ViscountS ViscountessES, ladS
  lassES, sir madam, gentleman lady, gentlemen ladies, BaronS BaronessES,
  stallionS mareS, ramS eweS, coltS fillieS, billy nanny, billies nannies,
  bullS cowS, godS goddessES, heroS heroineS, shirtS blouseS, undies nickers,
  sweat glow, jackarooS jillarooS, gigoloS hookerS, landlord landlady,
  landlords landladies, manservantS maidservantS, actorS actressES, CountS
  CountessES, EmperorS EmpressES, giantS giantessES, heirS heiressES, hostS
  hostessES, lionS lionessES, managerS manageressES, murdererS murderessES,
  priestS priestessES, poetS poetessES, shepherdS shepherdessES, stewardS
  stewardessES, tigerS tigressES, waiterS waitressES, cockS henS, dogS bitchES,
  drakeS henS, dogS vixenS, tomS tibS, boarS sowS, buckS roeS, peacockS
  peahenS, gander goose, ganders geese, friarS nunS, monkS nunS
EOD
 
var m2f = male2female.split(/,\s*/).map { |tok| tok.words}
 
var re_plural = /E?S\z/
var re_ES = /ES\z/
 
func gen_pluralize(m, f) {
    [
        [m - re_plural, f - re_plural],
        [m.sub(re_ES, 'es'), f.sub(re_ES, 'es')],
        [m.sub(re_plural, 's'), f.sub(re_plural, 's')],
    ]
}
 
var dict = Hash()
 
for m,f in m2f {
    for x,y in gen_pluralize(m, f).map{.map{.lc}} {
        if (x ~~ dict) {
            dict{y} = x
        } else {
            dict{x, y} = (y, x)
        }
    }
}
 
var gen_re = Regex.new('\b(' + dict.keys.join('|') + ')\b', 'i')
 
func copy_case(orig, repl) {
    var a = orig.chars
    var b = repl.chars
 
    var uc = 0
    var min = [a, b].map{.len}.min
    for i in ^min {
        if (a[i] ~~ /^[[:upper:]]/) {
            b[i].uc!
            ++uc
        }
    }
 
    uc == min ? repl.uc : b.join('')
}
 
func reverse_gender(text) {
    text.gsub(gen_re, { |a| copy_case(a, dict{a.lc}) })
}

Example:

say reverse_gender("She was a soul stripper. She took my heart!");
Output:
He was a soul stripper. He took my heart!

Tcl

# Construct the mapping variables from the source mapping
apply {{} {
    global genderMap genderRE
    # The mapping is from the Python solution, though omitting the names
    # for the sake of a bit of brevity...
    foreach {maleTerm femaleTerm} {
	maleS femaleS  maleness femaleness
	him her  himself herself  his hers  his her  he she
	Mr Mrs  Mister Missus  Ms Mr  Master Miss  Master Mistress
	uncleS auntS  nephewS nieceS  sonS daughterS  grandsonS granddaughterS
	brotherS sisterS  man woman  men women  boyS girlS  paternal maternal
	grandfatherS grandmotherS  GodfatherS GodmotherS  GodsonS GoddaughterS
	fiancéS fiancéeS  husband wife  husbands wives  fatherS motherS
	bachelorS spinsterS  bridegroomS brideS  widowerS widowS
	KnightS DameS  Sir DameS  KingS QueenS  DukeS DuchessES
	PrinceS PrincessES  Lord Lady  Lords Ladies  MarquessES MarchionessES
	EarlS CountessES  ViscountS ViscountessES  ladS lassES  sir madam
	gentleman lady  gentlemen ladies  BaronS BaronessES
	stallionS mareS  ramS eweS  coltS fillieS  billy nanny  billies nannies
	bullS cowS  godS goddessES  heroS heroineS  shirtS blouseS  undies nickers
	sweat glow  jackarooS jillarooS  gigoloS hookerS  landlord landlady
	landlords landladies  manservantS maidservantS  actorS actressES
	CountS CountessES  EmperorS EmpressES  giantS giantessES  heirS heiressES
	hostS hostessES  lionS lionessES  managerS manageressES
	murdererS murderessES  priestS priestessES  poetS poetessES
	shepherdS shepherdessES  stewardS stewardessES  tigerS tigressES
	waiterS waitressES  cockS henS  dogS bitchES  drakeS henS  dogS vixenS
	tomS tibS  boarS sowS  buckS roeS  peacockS peahenS
	gander goose  ganders geese  friarS nunS  monkS nunS
    } {
	foreach {m f} [list \
	    $maleTerm $femaleTerm \
	    [regsub {E*S$} $maleTerm ""] [regsub {E*S$} $femaleTerm ""]
	] {
	    dict set genderMap [string tolower $m] [string tolower $f]
	    dict set genderMap [string toupper $m] [string toupper $f]
	    dict set genderMap [string totitle $m] [string totitle $f]
	    dict set genderMap [string tolower $f] [string tolower $m]
	    dict set genderMap [string toupper $f] [string toupper $m]
	    dict set genderMap [string totitle $f] [string totitle $m]
	}
    }
    # Now the RE, which matches any key in the map *as a word*
    set genderRE "\\m(?:[join [dict keys $genderMap] |])\\M"
}}

proc reverseGender {string} {
    global genderRE genderMap
    # Used to disable Tcl's metacharacters for [subst]
    set safetyMap {\\ \\\\ \[ \\\[ \] \\\] $ \\$}
    subst [regsub -all $genderRE [string map $safetyMap $string] {[
	string map $genderMap &
    ]}]
}

Demonstrating:

puts [reverseGender "She was a soul stripper. She took my heart!"]\n
puts [reverseGender "When a new-hatched savage running wild about his native
woodlands in a grass clout, followed by the nibbling goats, as if
he were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. His father was a High Chief, a King;
his uncle a High Priest; and on the maternal side he boasted aunts
who were the wives of unconquerable warriors. There was excellent
blood in his veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity he nourished in his untutored youth."]
Output:
He was a soul stripper. He took my heart!

When a new-hatched savage running wild about her native
woodlands in a grass clout, followed by the nibbling goats, as if
she were a green sapling; even then, in Queequeg's ambitious soul,
lurked a strong desire to see something more of Christendom than
a specimen whaler or two. Her mother was a High Chief, a Queen;
her aunt a High Priestess; and on the paternal side she boasted uncles
who were the husbands of unconquerable warriors. There was excellent
blood in her veins-royal stuff; though sadly vitiated, I fear,
by the cannibal propensity she nourished in her untutored youth.

Wren

Library: Wren-str
import "./str" for Char

var swaps = {
    "She": "He", "she": "he", "Her": "His", "her": "his", "hers": "his", "He": "She",
    "he": "she", "His": "Her", "his": "her", "him": "her"
}

var reverseGender = Fn.new { |sentence|
    var newWords = []
    for (word in sentence.split(" ")) {
        var s = swaps[word]
        if (s) {
            newWords.add(s)
        } else if (Char.isPunctuation(word[-1]) && (s = swaps[word[0..-2]])) {
            newWords.add(s + word[-1])
        } else {
            newWords.add(word)
        }
    }
    return newWords.join(" ")
}

var sentences = [
    "She was a soul stripper. She took his heart!",
    "He was a soul stripper. He took her heart!",
    "She wants what's hers, he wants her and she wants him!",
    "Her dog belongs to him but his dog is hers!"
]

for (sentence in sentences) System.print(reverseGender.call(sentence))
Output:
He was a soul stripper. He took her heart!
She was a soul stripper. She took his heart!
He wants what's his, she wants his and he wants her!
His dog belongs to her but her dog is his!