Étant donné une entrée d'un programme Pig , SickPig , DeadPig , QuinePig ou DeafPig , choisissez l'une de ces "langues" au hasard et interprétez l'entrée comme cette "langue".
Tout d'abord, choisissez aléatoirement l'un des cinq membres de la "série Pig":
Porc
Si le choix était Pig, imitez l' interpréteur de référence en procédant comme suit:
Recherchez la première occurrence du mot
PIG
dans l'entrée (sensible à la casse).Si le mot
PIG
n'apparaît pas dans l'entrée,File must contain the string 'PIG'.
sortez le message et quittez.Sinon, divisez la chaîne d'entrée à la première occurrence de
PIG
. Sortez le texte après la première occurrence dePIG
dans un fichier avec un nom de fichier du texte précédentPIG
.PIG
peut être contenue dans le texte à sortir (donc, une entrée defooPIGbarPIGbaz
devrait sortirbarPIGbaz
dans un fichier appeléfoo
).
Notez que l'interpréteur de référence prend l'entrée via un argument de ligne de commande qui spécifie un nom de fichier à lire. Cependant, votre soumission peut prendre en compte l'une des méthodes standard acceptées sur PPCG.
SickPig
Si le choix était SickPig, suivez les mêmes instructions que Pig. Cependant, au lieu d'écrire le texte après
PIG
dans le fichier, choisissez au hasard dans la liste suivanteGRUNT MOAN OINK BURP GROAN WHINE
et sortie à la place dans le fichier. Ce choix aléatoire doit être indépendant du choix précédent (donc, une sortie de
GRUNT
devrait avoir une chance 1/5 * 1/6 = 1/30 dans l'ensemble).DeadPig
DeadPig est comme SickPig, mais il génère toujours la chaîne suivante au lieu de choisir une chaîne au hasard:
Your pig has unfortunately died. Please try again.
QuinePig
QuinePig est comme Pig, mais au lieu d'écrire le texte après
PIG
dans le fichier, il écrit plutôt l'entrée entière dans le fichier (donc, une entrée defooPIGbarPIGbaz
devrait sortirfooPIGbarPIGbaz
dans un fichier appeléfoo
).DeafPig
Si le choix était DeafPig, ne faites rien. (Le cochon est sourd ... à quoi vous attendez-vous?)
Règles diverses:
"Aléatoire" signifie que chaque choix devrait être à peu près tout aussi probable (donc, choisir Pig 90% du temps et les autres variantes seulement 2,5% du temps n'est pas valide).
Vous pouvez supposer que les noms de fichiers demandés seront toujours valides pour votre système de fichiers (mais ils peuvent contenir des espaces, etc.).
Pour toutes les variantes de Pig, votre code peut éventuellement générer une seule nouvelle ligne de fin dans le fichier.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
la source
Réponses:
Pyth - 157 octets
Fera la compression des chaînes.
Ne fonctionne pas en ligne car les E / S des fichiers, mais essayez de les sortir
[content, filename]
sur stdio ici .la source
Bash,
251246 octetsCe serait beaucoup plus court si les porcs sourds pouvaient au moins lire ...
la source
Python 2,
296286278 octetsLes deux dernières lignes commencent par une tabulation, au lieu des 4 espaces rendus.
Prend le programme d'entrée comme argument de fonction.
la source
'PIG'
.Lot,
409406405 octetsÉchoue malheureusement
%p:*PIG=%
si p est vide, d'où lex%1
hack.call set
est une bonne façon d'éviter l'extension prolongée activée que j'ai trouvée sur Stack Overflow; alors que ce%%~xa==.
fut un éclair d'inspiration de ma part.Edit: 3 octets enregistrés grâce à @ CᴏɴᴏʀO'Bʀɪᴇɴ. 1 octet enregistré grâce à @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
la source
@echo on
? N'est-ce pas implicitement fait? Peut-être que vous vouliez dire@echo off
?SET/A r=%RANDOM%%%5
est plus court.@echo off
mais j'avais débogué ... aussi merci pour le conseil% RANDOM%, je n'avais pas entendu parler de celui-là.%RANDOM%
version nécessite que j'utilise un supplémentset /a
qui finit par être 10 octets de plus.set/a
...?