Página 1 de 1

Qual a soma dos pontos de um jogo de dominó?

Enviado: 14 Mai 2023 23:15
por mauricioportela
Ola!

Me perguntaram qual era a soma dos pontos de um jogo de dominó. Eu pensei como resolver isso e cheguei a essa conclusão:

Código: Selecionar todos

FUNCTION Main()
    LOCAL aDomino, nSomaTotal := nSomaFaixas := nSomaPecas := 0
    // Representacao de um jogo de domino
    aDomino := {{{0,0}, {0,1}, {0,2}, {0,3}, {0,4}, {0,5}, {0,6}},;
                {{1,1}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}},;
                {{2,2}, {2,3}, {2,4}, {2,5}, {2,6}},;
                {{3,3}, {3,4}, {3,5}, {3,6}},;
                {{4,4}, {4,5}, {4,6}},;
                {{5,5}, {5,6}},;
                {{6,6}}}

    CLS
    ? "Quanto Pontos tem um Domino?"
    ? ""
    FOR f := 1 TO LEN(aDomino) // faixas
        nSomaFaixas := 0
        ? "Faixa: " + ALLTRIM(STR(aDomino[f,1,1])) + " "
        FOR p := 1 TO LEN(aDomino[f]) // pecas
            nSomaPecas := aDomino[f,p,1] + aDomino[f,p,2]
            ?? "[" + ALLTRIM(STR(aDomino[f,p,1])) + "|" + ALLTRIM(STR(aDomino[f,p,2])) + "] "
            nSomaFaixas += nSomaPecas
        NEXT
        ?? "Total: " + ALLTRIM(STR(nSomaFaixas))
        nSomaTotal += nSomaFaixas
    NEXT
    ? ""
    ? "Um domino com 28 pecas tem " + ALLTRIM(STR(nSomaTotal)) + " pontos."
RETURN Nil
Foi bom pra praticar o uso de matrizes multidimensionais.

Att.
Mauricio Portela

Qual a soma dos pontos de um jogo de dominó?

Enviado: 15 Mai 2023 10:41
por JoséQuintas
Com FOR/EACH

Código: Selecionar todos

FUNCTION Main()

   LOCAL aDomino, nTotal, nTFaixa, nTpeca, aFaixa, aPeca

   // Representacao de um jogo de domino
   aDomino := {{{0,0}, {0,1}, {0,2}, {0,3}, {0,4}, {0,5}, {0,6}}, ;
      {{1,1}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}}, ;
      {{2,2}, {2,3}, {2,4}, {2,5}, {2,6}}, ;
      {{3,3}, {3,4}, {3,5}, {3,6}}, ;
      {{4,4}, {4,5}, {4,6}}, ;
      {{5,5}, {5,6}}, ;
      {{6,6}}}

   CLS
   ? "Quanto Pontos tem um Domino?"
   ?
   nTotal := 0
   FOR EACH aFaixa IN aDomino
      ? "Faixa: " + Str( aFaixa:__EnumIndex - 1, 1 )
      nTFaixa := 0
      FOR EACH aPeca IN aFaixa
         nTPeca := aPeca[ 1 ] + aPeca[ 2 ]
         ?? " " + Transform( Str( aPeca[ 1 ], 1 ) + Str( aPeca[ 2 ], 1 ), "@R [9|9]" )
         nTFaixa += nTPeca
      NEXT
      ?? " Total: " + AllTrim( Str( nTFaixa ) )
      nTotal += nTFaixa
   NEXT
   ?
   ? "Um domino com 28 pecas tem " + AllTrim( Str( nTotal ) ) + " pontos."
   Inkey(0)

   RETURN Nil