Bei einem gegebenen Eingang eines Schwein , SickPig , DeadPig , QuinePig oder DeafPig Programm, wählen Sie eine dieser „Sprachen“ zufällig und interpretieren die Eingabe als diese „Sprache“ .
Wählen Sie zunächst zufällig eines der fünf Mitglieder der "Pig-Serie" aus:
Schwein
Wenn Sie sich für Pig entschieden haben, ahmen Sie den Referenzinterpreter folgendermaßen nach:
Suchen Sie das erste Vorkommen des Wortes
PIG
in der Eingabe (Groß- / Kleinschreibung beachten).Wenn das Wort
PIG
in der Eingabe nicht angezeigt wird, geben Sie die Nachricht ausFile must contain the string 'PIG'.
und beenden Sie sie.Anderenfalls teilen Sie die Eingabezeichenfolge beim ersten Auftreten von auf
PIG
. Geben Sie den Text nach dem ersten AuftretenPIG
in eine Datei mit einem Dateinamen des vorherigen Texts ausPIG
.PIG
kann in dem auszugebenden Text enthalten sein (also sollte eine Eingabe von in eine aufgerufene DateifooPIGbarPIGbaz
ausgegebenbarPIGbaz
werdenfoo
).
Beachten Sie, dass der Referenzinterpreter Eingaben über ein Befehlszeilenargument vornimmt, das einen Dateinamen angibt, aus dem gelesen werden soll. Ihre Einreichung kann jedoch in einer der Standardmethoden erfolgen, die für PPCG akzeptiert werden.
SickPig
Wenn Sie sich für SickPig entschieden haben, befolgen Sie die gleichen Anweisungen wie für Pig. Anstatt den Text danach
PIG
in die Datei zu schreiben , wählen Sie ihn jedoch zufällig aus der folgenden Liste ausGRUNT MOAN OINK BURP GROAN WHINE
und das stattdessen in die Datei ausgeben. Diese zufällige Auswahl muss von der vorherigen Auswahl unabhängig sein (eine Ausgabe von
GRUNT
sollte also insgesamt eine Chance von 1/5 * 1/6 = 1/30 haben).DeadPig
DeadPig ist wie SickPig, gibt jedoch immer die folgende Zeichenfolge aus, anstatt eine Zeichenfolge zufällig auszuwählen:
Your pig has unfortunately died. Please try again.
QuinePig
QuinePig ist wie Pig, aber anstatt den Text nach
PIG
der Datei zu schreiben, schreibt es stattdessen die gesamte Eingabe in die Datei (also sollte eine Eingabe von in eine Datei namensfooPIGbarPIGbaz
ausgegebenfooPIGbarPIGbaz
werdenfoo
).DeafPig
Wenn Sie DeafPig gewählt haben, tun Sie nichts. (Das Schwein ist taub ... was erwartest du?)
Verschiedene Regeln:
"Zufällig" bedeutet, dass jede Auswahl ungefähr gleich wahrscheinlich sein sollte (daher ist die Auswahl von "Schwein" in 90% der Fälle und die Auswahl der anderen Varianten in nur 2,5% der Fälle ungültig).
Sie können davon ausgehen, dass die angeforderten Dateinamen für Ihr Dateisystem immer gültig sind (sie können jedoch Leerzeichen usw. enthalten).
Für alle Varianten von Pig kann Ihr Code optional auch eine einzelne abschließende Newline in die Datei ausgeben.
Da es sich um Code-Golf , wird der kürzeste Code in Bytes gewinnen.
quelle
Antworten:
Pyth - 157 Bytes
Wird String-Komprimierung machen.
Funktioniert nicht online, weil Datei-E / A, aber versuchen Sie es auszugeben
[content, filename]
hier auf stdio .quelle
Bash,
251246 BytesDies wäre viel kürzer, wenn gehörlose Schweine zumindest lesen könnten ...
quelle
Python 2,
296286278 BytesDie letzten beiden Zeilen beginnen mit einem Tabulator anstelle der gerenderten 4 Leerzeichen.
Übernimmt das Eingabeprogramm als Funktionsargument.
quelle
'PIG'
.Batch,
409406405 BytesScheitert
%p:*PIG=%
leider, wenn p leer ist, also derx%1
Hack.call set
ist eine gute Möglichkeit, aktivierte verzögerte Erweiterungen zu vermeiden, die ich bei Stack Overflow gefunden habe. während das%%~xa==.
für mich ein Inspirationsblitz war.Bearbeiten: 3 Bytes dank @ CᴏɴᴏʀO'Bʀɪᴇɴ gespeichert. 1 Byte dank @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ gespeichert.
quelle
@echo on
? Wird das nicht implizit gemacht? Vielleicht meintest du@echo off
?SET/A r=%RANDOM%%%5
ist diese kürzer.@echo off
aber ich hatte debuggt ... auch danke für den% RANDOM% -Tipp, von dem ich noch nichts gehört hatte.%RANDOM%
muss ich in der Version ein Extra verwenden,set /a
das am Ende 10 Byte länger ist.set/a
...?