Objetivo Dada uma entrada de texto que não contém caracteres [
ou ]
, execute as seguintes ações:
- Para todas as instâncias
Amen
com pelo menos uma letra maiúscula (todas as instâncias deAmen
exclusãoamen
), produza a mesmaAmen
(retenha maiúsculas). - Para cada instância de
/all the people said[?: ]/i
(que é uma expressão regular), também a saídaAmen
(qualquer caso é bom).
Após cada saída, você pode escolher qualquer separador constante , por exemplo, uma nova linha, espaço ou nada.
Este é um código de golfe , portanto o programa mais curto em bytes vence.
Exemplos de veiculação
Input: I said AMEN! AMEN, PEOPLE!
Output: AMENAMEN ; any separator is fine, I choose none.
Input: amen amen amen amen
Output: ; nothing
Input: ; empty
Output: ; nothing
Input: *blah blah blah* And all the people said?
Output: Amen
Input: all the people said:
Output: Amen
Input: AMEN AMeN AmeN aMEN amen AmEn
Output: AMEN AMeN AmeN aMEN AmEn
Input: All the people said Amen! And all the people said AMEN!
Output: Amen Amen Amen AMEN
Input: LAMEN! Amen.
Output: AMEN Amen
Input: AmenAmenAmenAmenAMENamen
Output: Amen Amen Amen Amen AMEN
Input: And he was like, "Amen", then we were all like, "Amen, bruh."
Output: Amen Amen
Input: And all the aMen people said.
Output: aMen
Bônus
- -20 bytes se você pode "agarrar" a pontuação que segue o
Amen
, ou seja,Amen! => Amen!
,AmEN. => AmEN.
,I said Amen, bruh. => Amen,
, eAMEN!!!! => AMEN!!!!
.!
é o único caractere a ser preservado várias vezes..?!,
são os únicos caracteres a serem preservados dessa maneira. - -40 bytes se, houver uma instância de
amen
output, emHeresy! at index [i]
vez de nada, onde[i]
está o índice da palavra incorreta, ieamen
.
IOs de bônus
Entrada e saída é da forma input => output
. (Separador aqui é um espaço.)
BONUS 1
Can I get an Amen! => Amen!
AMEN! and AMEN! and a final Amen... => AMEN! AMEN! Amen.
Amen? Amen, and amEn! => Amen? Amen, amEn!
BONUS 2
The man sighed and said, "amen," and left. It's AMEN! => Heresy! at index [26] AMEN!
Classificação
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet do placar de líderes:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fonte
amen
s precisam estar em ordem?a
inamen
. Por exemplo,G amen => 2
se o seu idioma for indexado a zero; 3 se for um indexado.AMEN!!!! => AMEN!!!!
e aindaand a final Amen... => Amen.
?Respostas:
Retina , 37 bytes
O código tem 57 bytes de comprimento e se qualifica para o bônus de -20 bytes . Experimente online!
Obrigado a @ MartinBüttner por enviar minha resposta Perl para Retina!
Como funciona
fonte
([.,?]|!*)
padrão de correspondência de pontuação para minha resposta? Eu o vi e não pude deixar de vê-lo (e certamente não consegui encontrar uma solução melhor!). Certamente não vai superar o seu :), mas não quero plagiar, e não tenho certeza absoluta da etiqueta para pedir soluções emprestadas para subproblemas como esse.VBA, 193 bytes
Sem separação, sem Regex, sem bônus. Tinha uma versão que recebia os dois bônus, mas era muito mais longa.
fonte
for i=1 to
parafor i=1To
Perl, 51 bytes
O código fonte real contém 70 bytes , deve ser executado com
perl -nE
( +1 byte ) e se qualifica para o bônus de -20 bytes .fonte
Python 2, 155 bytes
Exemplo
fonte
JavaScript, 88 bytes
108 bytes - 20 bytes (captura a pontuação)
fonte
Amen?!.
para entradaAmen?!.
eAmen!
para entradaAmen!!!
.grep e sed,
85838477 - 20 = 57 bytesfonte
Amen?
para a entradaall the people said??
. A melhor solução alternativa que pude encontrar foi substituir a stringAmenx
.amen.
para a entradaamen.
. Corrigir isso diminuirá sua resposta: basta alterargrep -v '^[amen]*$'
paragrep \[AMEN]
.Perl, 103 - 60 = 43 bytes
Contando o shebang como um, a entrada é obtida de stdin. Mantém pontuação para -20 bytes e identifica heresia para -40 .
Uso da amostra
Perl, 70 - 20 = 50 bytes
Contando o shebang como um, a entrada é obtida de stdin. Mantém pontuação para -20 bytes.
Uso da amostra
fonte
ha]
. (Não importa, só vi o comentário do OP que a entrada não pode conter colchetes ... esta questão se transformou tantas vezes eu não consigo acompanhar.)66, 66 - 20 = 46 caracteres / 80 - 20 = 60 bytes
Experimente aqui - apenas no Firefox.
Primeira vez aqui no PPCGSE. Espero que este golfe seja muito bom.
Edição: Na verdade, eu estou batendo CJam (em contagem de caracteres), então isso é muito bom!
fonte
CJam, 57 bytes
O código tem 97 bytes de comprimento e se qualifica para o bônus de -40 bytes .
Experimente on-line no intérprete CJam .
fonte
JavaScript, 100 bytes
fonte
x=prompt();
e também pode usaralert(prompt().replace(...).replace(...).match)
JavaScript,
136135 - 40 - 20 = 75 bytesExplicação:
Esse código é direcionado por um regex de três partes que alimenta resultados em um
replace
retorno de chamada . As peças são:all the people said[?: ]
- simplesmente corresponde aoall the people said
padrão necessário(amen)([.,?]|!*)
- corresponde a qualquer casoamen
e pontuação (um.,?
ou zero ou mais!
, o que torna a pontuação opcional) em grupos de correspondência separados - atribui a Dennis o padrão de pontuação.
- corresponde a qualquer outro caractere, que não faça parte dos padrões acima, um de cada vezPortanto, qualquer correspondência deve ser uma sequência de pessoas comuns, uma correspondência de Amém com pontuação opcional ou um único caractere que não faça parte de nenhuma dessas frases. Usamos a lógica no retorno de chamada substituto para salvar e substituir as partes apropriadas da sequência e alteramos todos os outros caracteres para a sequência vazia.
fonte
Python 2, 191 - 40 = 151 bytes
Sem regex e bônus 2
fonte