Code Golf: Sorrisos
Hoje é Sexta-feira e tem um longo fim de semana pela frente, então vamos para uma rodada de code golf!
Hoje em dia é difícil achar uma mensagem de texto sem pelo menos um emoji. 😃😄😎🙂😊😀😁😆😂
Mas algum tempo atrás, as pessoas tinham que ter a criatividade de expressar suas emoções em texto. Elas usavam emoticons, que são símbolos feitos de caracteres do teclado. :^) =] ) B).
Nosso desafio hoje é criar uma função que receba uma string como argumento e retorne o número total de carinhas sorridentes. Cada carinha deve ter uma boca sorridente, que deve ser marcada com ), ], }, D ou >.
Um rosto sorridente pode ter um par de olhos, mas não é necessário. Caracteres válidos para olhos são :, ;, 8, B ou =.
Um nariz é opcional, e pode ser representado por esses caracteres: -, ^, c, o e~.
Exemplos válidos de carinhas felizes:
:) :D ;-D :~) :‑) :-] =)
:] :-> :> 8-) :D 8‑D )
8) :-} :} :o) :c) :^) =]
:‑D 8D =D B^D
Input
"conte quantas carinhas felizes tem aqui :)"
Output
1
Nota
Regras
-
A assinatura da entrada da competição DEVE ser:
Class codeGolf.SmileyFace Extends %RegisteredObject { ClassMethod Count(i As %String) As %Integer { q 0 // Sua solução aqui } } -
É proibido mudar a classe/assinatura, incluindo, mas não limitado a:
- Adicionar herança
- Definir valores de argumentos padrão
- Adicionar elementos na classe (Parâmetros, métodos, Includes, etc).
-
É proibido fazer referência a códigos que não sejam do sistema da sua entrada. Por exemplo, essa não é uma entrada válida:
ClassMethod Build(f As %Integer) { W ##class(myPackage.myClass).test(a) } -
O uso de
$ZWPACKe$ZWBPACKtambém é desencorajado. -
Você pode usar esse caso de teste:
Class codeGolf.unittests.SmileyFace Extends %UnitTest.TestCase { Method TestSolutions() { Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count(")s).:D :~) ;~D :) xD"), 7) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count(""), 0) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count(":):(':D:O:;"), 2) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count("let's put a smile on that face :o)"), 1) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count("(smiley)"), 1) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count("12 weirds :] :-> :> 8-) 8) :-} :} :o) :c) :^) =] =)"), 12) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count(";] ;) ;-) winky"), 3) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count("B^D 8D X‑D Laughing :D"), 4) Do $$$AssertEquals(##class(codeGolf.SmileyFace).Count("Sadness >:( :[ :{ :("), 0) } }