O desafio
Escreva uma função ou um programa que use uma sequência composta por um ou mais pronomes pessoais subjetivos , separados por sinais de + , como argumento. A saída deve ser um pronome único, que é o resultado da relação definida no próximo parágrafo.
Obviamente, sinta-se à vontade para editar, pois você deseja corrigir os erros gramaticais que certamente estão presentes;)
Este é um desafio do código-golfe, portanto o código mais curto vence.
A relação
O objetivo desta tarefa é traduzir em "linguagem matemática" algo que usamos diariamente. Como pensamos em "você e eu"? Bem, "nós", não é? Portanto, se a entrada for You+I
a saída, deverá ser a sequência We
. Com mais de dois pronomes, deve se parecer com:
You+He+They
->You
A relação é definida como esta tabela:
I You He We You They
I I We We We We We
You You You We You You
He He We You They
We We We We
You You You
They They
O problema do 'você'
Bem, como você pode ver, eu não sou um falante nativo de inglês. Na minha língua (italiano) há uma diferença entre o plural você ( voi , em italiano) e o singular você ( tu ). Quando pensei nesse desafio, não pensei em inglês, então há o problema que é impossível reconhecer se estou usando a forma plural ou singular. Felizmente (ou obviamente?), A entrada / saída não muda nas duas formas; portanto, você pode usar uma delas e cobrir os dois casos!
Sobre a entrada
A entrada estará sempre na forma "Pronome + Pronome + Pronome" ... Os pronomes terão a primeira letra em maiúscula e o restante em minúscula. Vantagens não serão cercadas por espaços, apenas por pronomes. A entrada vazia é possível e o resultado deve ser uma saída vazia.
Bônus
Um pequeno bônus de 15% se o programa gerenciar dois novos pronomes: Ela e Ele . Eles são os mesmos que Ele, obviamente. Lembre-se de que essa relação é reflexiva, então ela -> ela e ela -> ela. Portanto, qualquer combinação que inclua apenas Ela, Ele ou Ela deve produzir Eles.
Exemplos
You+I -> We
You+He+They -> You
I+You+He+They -> We
They -> They
They+You -> You
You+You+I+You -> We
For Bonus
She -> She
She+He -> They
I+It+He -> We
It+You -> You
fonte
I+I=I
", pois só pode haver um "I
" de um determinado orador. Mas não podia "He+He=They
"? Geralmente, se você diz "He
" duas vezes nesta construção, está se referindo a dois assuntos masculinos diferentes , não ao mesmo duas vezes.Respostas:
Retina,
62 61 56 5352 bytesMais golfe e explicação vem mais tarde.
As 4 etapas de substituição fazem o seguinte:
Experimente online aqui.
3 bytes salvos graças a Martin Büttner.
fonte
.
vez de\+
, pois esse é o único caractere permitido na frente de uma letra maiúscula ou depoisI
.JavaScript (ES6), 130 bytes
Explicação
Teste
Mostrar snippet de código
fonte
Perl 5, 67 bytes
79 bytes, na verdade, mas há um bônus de 15%.
fonte
Python
159153 bytesEDIT : Obrigado @ Pietu1998
Esta é uma tradução direta da resposta Javascript ES6:
Experimente aqui
fonte
s
não precisa ser uma variável e você pode remover a linha e o espaço extras entre as linhasfor
er=
. Além disso, convém verificar se isso pode ser mais curto como uma função.Ruby,
150136131119 119111 bytesRecurso de bônus: lida com várias expressões na mesma linha de comando.
fonte