Puntuación mínima después de voltear las cartas

Dadas N tarjetas que tienen números enteros positivos impresos en el anverso y el reverso de cada tarjeta (posiblemente diferentes). Se puede voltear cualquier número de cartas, y después de eso, elegimos una carta del mazo. Si el número X escrito en el reverso de la tarjeta elegida no está en el anverso de ninguna tarjeta, decimos que el número X es bueno. La tarea es encontrar el número más pequeño que sea bueno. Si ningún número es bueno, imprima 0 .

Nota: Al voltear se intercambian los números del anverso y el reverso presentes en la tarjeta, es decir, el valor del anverso ahora está en el reverso y viceversa.

Ejemplos:

Entrada: frentes = [1, 2, 4, 4, 7, 8], reversos = [1, 3, 4, 1, 3, 9]
Salida: 2
Si volteamos la segunda carta, los frentes son [1, 3 , 4, 4, 7, 8] y los reversos son [1, 2, 4, 1, 3, 9].
Ahora, elegimos la segunda carta, que tiene el número 2 en el reverso y no está en el anverso de ninguna otra carta, por lo que el 2 está bien.

Entrada: frentes = [1, 2, 3, 4, 5], reversos = [6, 7, 8, 9, 10]
Salida: 1

Acercarse:

  • Si una carta tiene el mismo valor K escrito en el anverso y el reverso, entonces K no puede ser la respuesta, ya que no importa cuántas veces arrojes la carta, el resultado será el mismo.
  • Todas las demás cartas que tienen números diferentes escritos en el anverso y el reverso son candidatas para la respuesta, ya que no importa cuántas veces se repita el número Kfront en la array, simplemente voltee todas las cartas y ya no habrá una carta que tenga K escrito . el anverso, entonces simplemente podemos elegir cualquier tarjeta (mínimo) que tenga K escrita en su reverso y es la respuesta.
  • Ahora el problema se reduce a encontrar todos los números K1, K2,…, Kn tal que no se repitan en ninguna tarjeta y luego entre todos los números escritos en el reverso de K1, K2,…, Kn hallar el mínimo.
  • Si el resultado no es posible, imprima 0 .

A continuación se muestra la implementación del enfoque anterior:

# Python3 iomplementation of the approach
import itertools
  
MAX = 9999
  
def flipgame(fronts, backs):
  
    same = {k for i, k in enumerate(fronts) if k == backs[i]}
      
    # Initialize answer to arbitrary value
    ans = MAX
      
    for k in itertools.chain(fronts, backs):
        if k not in same:
            ans = min(ans, k)
  
    # Return final answer
    return ans % MAX
  
# Driver Code
fronts = [1, 2, 4, 4, 7]
backs = [1, 3, 4, 1, 3]
print(flipgame(fronts, backs))
Producción:

2

Publicación traducida automáticamente

Artículo escrito por Sanjit_Prasad y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *