Discussão
· Maio 31

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

  1. 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
        }
    
    }
    
  2. É 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).
  3. É 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)
    }
    
  4. O uso de $ZWPACK e $ZWBPACK também é desencorajado.

  5. 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)
        }
    
    }
    

Discussão (0)1
Entre ou crie uma conta para continuar