Advertisement
rtcv

lontra-py

Jan 27th, 2022 (edited)
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.98 KB | None | 0 0
  1. # ********************************************************************************
  2. # OBJETIVO: Mova a lontra e encontre o seu par
  3. # TEST CASES:
  4. #     1. Encontre seu par
  5. #        - Você deve comandar os movimentos da lontra para encontrar a próxima lontra;
  6. #        - Esse test case é determinístico, ou seja, a solução será sempre a mesma;
  7. #        - Neste test case, NÃO HÁ cristais a serem coletados.
  8. #     2. Colete 5 Cristais e encontre seu par
  9. #        - Você deve comandar os movimentos da lontra para encontrar a próxima lontra;
  10. #        - Esse test case é determinístico, ou seja, a solução será sempre a mesma;
  11. #        - Neste test case, você DEVERÁ capturar 5 cristais e encontrar a próxima lontra.
  12. #     3. Modo obstáculos aleatórios: Colete 5 Cristais e encontre seu par
  13. #        - Você deve comandar os movimentos da lontra para encontrar a próxima lontra;
  14. #        - Esse test case NÃO É determinístico, ou seja, a posição dos obstáculos e cristais são aleatórios;
  15. #        - Sempre haverá um obstáculo + um cristal na mesma posição vertical.
  16. #        - Neste test case, você DEVERÁ capturar 5 cristais e encontrar a próxima lontra.
  17. # COMO JOGAR:
  18. #     1. Considerar que o jogo possui 3 pistas, TOP, CENTER E BUTTOM;
  19. #     2. Considerar que o jogo possui os comandos de movimentos:
  20. #       - "up": mover a lontra para pista acima
  21. #       - "down": mover a lontra para pista inferior
  22. #       - "keep": manter-se a mesma pista
  23. #       - "upt": mover a lontra para 2 (duas) pistas a acima
  24. #       - "downt": mover a lontra para 2 (duas) pistas abaixo
  25. #     3. Você receberá como INPUT a variável ITEMS do tipo ARRAY, com:
  26. #       - "A": significa que a pista TOP (mais próxima ao céu) contém um OBSTÁCULO;
  27. #       - "B": significa que a pista CENTER (ao centro) contém um OBSTÁCULO;
  28. #       - "C": significa que a pista BUTTOM (mais distante do céu) contém um OBSTÁCULO;
  29. #       - "W": significa que a pista TOP (mais próxima ao céu) contém um CRISTAL;
  30. #       - "Y": significa que a pista CENTER (ao centro) contém um CRISTAL;
  31. #       - "Z": significa que a pista BUTTOM (mais distante do céu) contém um CRISTAL;
  32. #     4. Para você comandar a lontra, adicione seus movimentos (passo 3) ao array MOVIMENTS.
  33. #     5. Lembre-se que, a qualquer momento no seu código, você pode contar com o recurso
  34. #         de DEBUGAR os valores das suas variáveis na BOX CONSOLEM da IDE.
  35. # ********************************************************************************
  36.  
  37.  
  38.  
  39. # ***************************************************************************
  40. # Este comando captura da plataforma Wisecode o INPUT do jogo
  41. # NÃO REMOVER ESTA LINHA
  42. # ***************************************************************************
  43. import sys
  44. import math
  45. import json
  46. items = input()
  47. arritems = json.loads(items)
  48.  
  49. # ***************************************************************************
  50. # Variável de MOVIMENTS empty para adicionar os movimentos da lontra
  51. # ***************************************************************************
  52. moviments = []
  53.  
  54. # ***************************************************************************
  55. # EXEMPLO do comando para apresentar no CONSOLE da IDE o valor da variável
  56. # items posição 0
  57. # ***************************************************************************
  58. #debug:print(arritems[0], file=sys.stderr, flush=True)
  59.  
  60. # ***************************************************************************
  61. # Adicionei aqui a lógica de programação para ganhar o jogo
  62. # ***************************************************************************
  63.  
  64. pos = 'B'
  65.  
  66. for i in range(0,len(arritems),2):
  67.     togo = 'ABC'
  68.  
  69.     togo = togo.replace(arritems[i], '').replace(arritems[i+1], '')
  70.  
  71.     if arritems[i+1] == 'W':
  72.         togo = togo.replace('B', '')
  73.         togo = togo.replace('C', '')
  74.     if arritems[i+1] == 'Y':
  75.         togo = togo.replace('A', '')
  76.         togo = togo.replace('C', '')
  77.     if arritems[i+1] == 'Z':
  78.         togo = togo.replace('A', '')
  79.         togo = togo.replace('B', '')
  80.    
  81.     if togo == 'A':
  82.         moviments.append('upt')
  83.         pos = 'A'
  84.     if togo == 'C':
  85.         moviments.append('downt')
  86.         pos = 'C'
  87.     if togo == 'B':
  88.         if pos == 'A':
  89.             moviments.append('down')
  90.         if pos == 'C':
  91.             moviments.append('up')
  92.         if pos == 'B':
  93.             moviments.append('keep')    
  94.  
  95.  
  96.     debug:print('togo:', togo, file=sys.stderr, flush=True)
  97.  
  98.  
  99. # ***************************************************************************
  100. # EXEMPLO do comando para adicionar o movimento "down" ao array de MOVIMENTS
  101. # ***************************************************************************
  102.  
  103.  
  104. # ***************************************************************************
  105. # Este comando informa a plataforma Wisecode o array MOVIMENTS
  106. # NÃO REMOVER ESTA LINHA
  107. # ***************************************************************************
  108. print(json.dumps(moviments))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement