3 saved 1

Julia, mm'kay, 115115 114 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"ir"m'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"ir"m'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


I dislike South Park, but the thrill of the golf was too enticing to pass this up. Thanks to KRyan for simplifying a regex, saving 1 byte.

Julia, mm'kay, 115 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


I dislike South Park, but the thrill of the golf was too enticing to pass this up.

Julia, mm'kay, 115 114 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


I dislike South Park, but the thrill of the golf was too enticing to pass this up. Thanks to KRyan for simplifying a regex, saving 1 byte.

2 added 86 characters in body

Julia, mm'kay, 115 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


I dislike South Park, but the thrill of the golf was too enticing to pass this up.

Julia, mm'kay, 115 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


Julia, mm'kay, 115 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end


I dislike South Park, but the thrill of the golf was too enticing to pass this up.

1

Julia, mm'kay, 115 bytes

f(s)=(R=replace(s,r"[,.?!]",r->r*(" "*(r==","?"m":"M")^rand(1:3)*"'kay"*r)^rand(0:1));ismatch(r"m+'kay"i,R)?R:f(R))


This creates a recursive function that accepts a string and returns a string.

Ungolfed + explanation:

function f(s)
# Replace occurrences of punctuation using random repeats
R = replace(s, r"[,.?!]", r -> r*(" " * (r == "," ? "m" : "M")^rand(1:3) * "'kay" * r)^rand(0:1))

# Check whether anything was replaced
if ismatch(r"m+'kay"i, R)
# If so, return the replaced string
R
else
# Otherwise recurse
f(R)
end
end