First, randomly choose between one of the five members of the "Pig series":
If the choice was Pig, mimic the reference interpreter by doing the following:
Find the first occurrence of the word
PIGin the input (case-sensitive).
If the word
PIGdoes not appear in the input, output the message
File must contain the string 'PIG'.and exit.
Otherwise, split the input string on the first occurrence of
PIG. Output the text after the first occurrence of
PIGto a file with a filename of the text before
PIGmay be contained in the text to be output (so, an input of
barPIGbazto a file called
Note that the reference interpreter takes input via a command line argument that specifies a filename to read from. However, your submission may take input in any of the standard methods accepted on PPCG.
If the choice was SickPig, follow the same instructions as Pig. However, instead of writing the text after
PIGto the file, choose randomly from the following list
GRUNT MOAN OINK BURP GROAN WHINE
and output that to the file instead. This random choice must be independent of the previous choice (so, an output of
GRUNTshould have a 1/5 * 1/6 = 1/30 chance overall).
DeadPig is like SickPig, but it always outputs the following string instead of randomly choosing a string:
Your pig has unfortunately died. Please try again.
QuinePig is like Pig, but instead of writing the text after
PIGto the file, it instead writes the entire input to the file (so, an input of
fooPIGbarPIGbazto a file called
If the choice was DeafPig, do nothing. (The pig is deaf... what do you expect?)
"Random" means each choice should be roughly equally likely (so, choosing Pig 90% of the time and the other variants only 2.5% of the time is invalid).
You may assume that the requested filenames will always be valid for your file system (but they may contain spaces, etc.).
For all the variants of Pig, your code may optionally output a single trailing newline to the file as well.
Since this is code-golf, the shortest code in bytes will win.