Dada a entrada de um programa Pig , SickPig , DeadPig , QuinePig ou DeafPig , escolha um desses "idiomas" aleatoriamente e interprete a entrada como "idioma".
Primeiro, escolha aleatoriamente entre um dos cinco membros da "série Pig":
Porco
Se a opção foi Pig, imite o intérprete de referência , fazendo o seguinte:
Encontre a primeira ocorrência da palavra
PIG
na entrada (diferencia maiúsculas de minúsculas).Se a palavra
PIG
não aparecer na entrada, envie a mensagemFile must contain the string 'PIG'.
e saia.Caso contrário, divida a sequência de entrada na primeira ocorrência de
PIG
. Envie o texto após a primeira ocorrência dePIG
para um arquivo com um nome de arquivo do texto anteriorPIG
.PIG
pode estar contido no texto a ser produzido (portanto, uma entrada defooPIGbarPIGbaz
deve ser enviadabarPIGbaz
para um arquivo chamadofoo
).
Observe que o intérprete de referência recebe entrada por meio de um argumento de linha de comando que especifica um nome de arquivo para leitura. No entanto, sua submissão pode ser inserida em qualquer um dos métodos padrão aceitos no PPCG.
SickPig
Se a opção foi SickPig, siga as mesmas instruções que o Pig. No entanto, em vez de escrever o texto depois
PIG
no arquivo, escolha aleatoriamente na lista a seguirGRUNT MOAN OINK BURP GROAN WHINE
e envie isso para o arquivo. Essa escolha aleatória deve ser independente da escolha anterior (portanto, uma saída de
GRUNT
deve ter uma chance de 1/5 * 1/6 = 1/30 no total).DeadPig
DeadPig é como SickPig, mas sempre gera a seguinte string em vez de escolher aleatoriamente uma string:
Your pig has unfortunately died. Please try again.
QuinePig
O QuinePig é como o Pig, mas em vez de escrever o texto depois
PIG
no arquivo, ele grava toda a entrada no arquivo (portanto, uma entrada defooPIGbarPIGbaz
deve ser enviadafooPIGbarPIGbaz
para um arquivo chamadofoo
).DeafPig
Se a escolha foi DeafPig, não faça nada. (O porco é surdo ... o que você espera?)
Regras diversas:
"Aleatório" significa que cada opção deve ser igualmente provável (portanto, escolher Pig 90% das vezes e as outras variantes apenas 2,5% das vezes são inválidas).
Você pode supor que os nomes de arquivos solicitados sempre serão válidos para o seu sistema de arquivos (mas eles podem conter espaços etc.).
Para todas as variantes do Pig, seu código também pode, opcionalmente, gerar uma nova linha à direita no arquivo.
Como esse é o código-golfe , o código mais curto em bytes será vencedor.
fonte
Respostas:
Pitão - 157 bytes
Estará fazendo compressão de string.
Não funciona on-line, porque a E / S do arquivo, mas tente a saída
[content, filename]
para o stdio aqui .fonte
Bash,
251246 bytesIsso seria muito mais curto se os porcos surdos pudessem pelo menos ler ...
fonte
Python 2,
296286278 bytesAs duas últimas linhas começam com uma guia, em vez dos 4 espaços renderizados.
Leva o programa de entrada como argumento de função.
fonte
'PIG'
.Lote,
409406405 bytesInfelizmente
%p:*PIG=%
falha se p estiver em branco, portanto, ox%1
hack.call set
é uma boa maneira de evitar a expansão retardada que encontrei no Stack Overflow; enquanto isso%%~xa==.
foi um flash de inspiração da minha parte.Editar: salvou 3 bytes graças a @ CᴏɴᴏʀO'Bʀɪᴇɴ. Guardou 1 byte graças a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
fonte
@echo on
? Isso não é feito implicitamente? Talvez você quis dizer@echo off
?SET/A r=%RANDOM%%%5
é mais curto.@echo off
mas eu estava depurando ... também obrigado pela dica% RANDOM%, eu não tinha ouvido falar dessa.%RANDOM%
versão exige que eu use um extraset /a
que acaba sendo 10 bytes mais longo.set/a
...?