Biorąc pod uwagę dane wejściowe programu Pig , SickPig , DeadPig , QuinePig lub DeafPig , wybierz jeden z tych „języków” losowo i zinterpretuj dane wejściowe jako „język”.
Po pierwsze, losowo wybierz jednego z pięciu członków „Świni”:
Świnia
Jeśli wybrano Świnia, naśladuj tłumacza referencyjnego , wykonując następujące czynności:
Znajdź pierwsze wystąpienie słowa
PIG
na wejściu (rozróżniana jest wielkość liter).Jeśli słowo
PIG
nie pojawia się na wejściu, wyślij komunikatFile must contain the string 'PIG'.
i wyjdź.W przeciwnym razie podziel łańcuch wejściowy przy pierwszym wystąpieniu
PIG
. Wypisuj tekst po pierwszym wystąpieniuPIG
do pliku z nazwą pliku wcześniejPIG
.PIG
może być zawarty w tekście, który ma być wyprowadzony (więc wejściefooPIGbarPIGbaz
powinno wypisać siębarPIGbaz
do pliku o nazwiefoo
).
Zauważ, że interpreter odniesienia pobiera dane wejściowe za pomocą argumentu wiersza poleceń, który określa nazwę pliku do odczytu. Twoje zgłoszenie może jednak uwzględniać dowolną standardową metodę akceptowaną w PPCG.
SickPig
Jeśli wybór padł na SickPig, postępuj zgodnie z tymi samymi instrukcjami, co Świnia. Jednak zamiast wpisywać tekst
PIG
do pliku, wybierz losowo z poniższej listyGRUNT MOAN OINK BURP GROAN WHINE
i zamiast tego wyślij go do pliku. Ten losowy wybór musi być niezależny od poprzedniego wyboru (więc wyjście
GRUNT
powinno mieć ogólną szansę 1/5 * 1/6 = 1/30).DeadPig
DeadPig jest jak SickPig, ale zawsze wyświetla następujący ciąg zamiast losowego wybierania ciągu:
Your pig has unfortunately died. Please try again.
QuinePig
QuinePig jest jak Pig, ale zamiast zapisywać tekst po
PIG
pliku, zamiast tego zapisuje całe dane wejściowe do pliku (więc wejściefooPIGbarPIGbaz
powinno wypisać sięfooPIGbarPIGbaz
do pliku o nazwiefoo
).DeafPig
Jeśli wybór padł na DeafPig, nie rób nic. (Świnia jest głucha ... czego oczekujesz?)
Różne zasady:
„Losowy” oznacza, że każdy wybór powinien być w przybliżeniu jednakowo prawdopodobny (więc wybranie Świni w 90% przypadków, a inne warianty tylko w 2,5% przypadków jest nieprawidłowe).
Możesz założyć, że żądane nazwy plików będą zawsze poprawne dla twojego systemu plików (ale mogą zawierać spacje itp.).
Dla wszystkich wariantów Pig Twój kod może opcjonalnie wypisać do pliku również jedną końcową linię nowego wiersza.
Ponieważ jest to code-golf , wygra najkrótszy kod w bajtach.