Lembrar de novo?

9

Introdução

Já ouviu falar de Remind? Não? Nem eu até cerca de 2 anos atrás. A premissa básica é que os professores enviem lembretes e se comuniquem com seus alunos. Bem arrumado, certo? Ele ainda permite enviar emoticons e reagir a mensagens! O que eu faço diariamente.

Porém, uma coisa sobre o Remind é que os professores sempre enviam a mensagem "Faça sua lição de casa!" "Se não, você receberá um F!". Mas também existem coisas úteis, como "Teste na terça-feira" ou o ocasional "Tenha um bom dia!". Eu quase sempre respondo feliz com o polegar para cima, mas às vezes tenho que colocar o polegar para baixo.

Desafio

Sua tarefa hoje é descobrir se uma mensagem tem uma certa conotação. Se tiver uma conotação positiva, responda com um polegar para cima. Se tiver uma conotação negativa, responda com um polegar para baixo.

Como devo detectar conotações?

Uma conotação positiva normalmente terá três palavras. As 3 palavras são: Feliz, Bom e Aprovado .

Uma conotação negativa terá 3 também. Aqueles 3: Teste, Falha e Trabalho de Casa .

Para que estou testando?

Você está testando para ver se uma mensagem contém conotações positivas, negativas ou ambas .

Se uma mensagem tiver conotações positivas, vá em frente e retorne o ponto de código unicode para o polegar para cima (U + 1F44D).

Se ele tiver conotações negativas, retorne o ponto de código unicode para os polegares para baixo (U + 1F44E).

Se a mensagem tiver conotações negativas e positivas, retorne o ponto de código para uma face neutra (U + 1F610).

Se, por algum outro motivo, ele não tiver nenhuma das conotações, retorne um bom e velho encolher de ombros (¯ \ _ (ツ) _ / ¯). Se o encolher de ombros não aparecer direito, aqui está o link Emojipedia para o encolher de ombros

Restrições

  • O programa deve receber uma mensagem como entrada.
  • As conotações positivas devem retornar o ponto de código positivo (U + 1F44D)
  • As conotações negativas devem retornar o ponto de código negativo (U + 1F44E).
  • Se a mensagem tiver ambas as conotações, retorne o ponto neutro do código de face (U + 1F610).
  • Se a mensagem não tiver conotações, retorne o encolher de ombros (¯ \ _ (ツ) _ / ¯).
  • Isso é , bytes mais curtos ganham

Casos de teste.

Input -> Output
Happy Good Friday! -> U+1F44D
Congrats, you just played yourself -> ¯\_(ツ)_/¯
You failed the test. -> U+1F44E
Good job on the test. -> U+1F610
KuanHulio
fonte
Você precisa escapar dele #
Rod Rod
está tudo bem, o caso de teste está encolhendo os ombros
KuanHulio 26/05
11
"Se a mensagem tiver ambas as conotações, retorne o ponto neutro do código de face (U + 1F610)." E não, não diferencia maiúsculas de minúsculas.
KuanHulio
Para esclarecer: se a sequência contiver os dois tipos de palavras, retorne neutro, independentemente de haver mais de um tipo que o outro?
Shaggy
@ Shaggy sim, basta retornar neutro #
KuanHulio

Respostas:

2

Python 3 , 182 166 159 159 151 bytes

c=input().lower().count
print((["¯\_(ツ)_/¯"]+list("👍👎😐"))[any(map(c,["good","happy","passed"]))+any(map(c,["fail","test","homework"]))*2])

Experimente online!

Martmists
fonte
você pode inserir os dois anys dentro da impressão:d[any(<positive>)+any(<negative>)*2]
Rod
11
Recebo 182 bytes UTF-8 em vez de 169
user41805
O utf sempre me faz esquecer bytes extras, geralmente apenas uso a função len () do python no meu código. Editará
Martmists
"👍👎😐"funciona bem para mim. em qual versão do python você está?
Martmists
Eu não testei, mas acho que você poderia fazer em print(d[("good"in m or"happy"in m or"passed"in m)+("bad"in m or"test"in m or"homework"in m)*2])vez disso
James
0

JavaScript, codificado em UTF-8, 100 bytes

s=>['¯\_(ツ)_/¯',...'👎👍😐'][2*/happy|good|passed/i.test(s)+/test|fail|homework/i.test(s)]

Casos de teste:

GOTO 0
fonte
0

Powershell, 190 bytes

"$($s=Read-host;"$s ->";$1=("Test","Fail","Homework"|?{$s-match$_});$2=("Happy","Good","Passed"|?{$s-match$_});if($1-and$2){"😐"}elseif($1){"👎"}elseif($2){"👍"}else{"¯\_(ツ)_/¯"})"

Exibe a entrada e a saída próximas uma da outra.

Feliz sexta-feira! -> 👍

Parabéns, você acabou de se jogar -> ¯ \ _ (ツ) _ / ¯

Você falhou no teste. -> 👎

Bom trabalho no teste. -> 😐

Mike
fonte
0

PowerShell, 187 bytes

read-host|%{$s=$_;$f=0;0..5|?{$s.indexof((-split'Happy Good Passed Test Fail Homework')[$_],0,$s.length,3)+1}|%{$f=$f-bor(1,2)[$_/3]};$s+' -> '+('¯\_(ツ)_/¯','👍','👎','😐')[$f]}
Andrei Odegov
fonte