3

#PlatziCodingChallenge - Piedra, Papel y tijeras

En un juego de piedra, papel o tijera cada juego se representa por un array de dos strings ([‘pi’, ‘pa’], [‘ti’, ‘pa’], [‘pa’, ‘ti’], etc.). Calcula quien es el ganador de la partida o si empataron. Por ejemplo:

piedraPapelOTijera([['pi', 'ti'], ['pa', 'ti'], ['ti', 'pi'], ['pi', 'pa']] -> 'jugador 2'
piedraPapelOTijera([['pi', 'ti'], ['pa', 'ti']] -> 'empate'
piedraPapelOTijera([['pi', 'ti'], ['pi', 'ti'], ['ti', 'pi']] -> 'jugador 1'
Escribe tu comentario
+ 2
Ordenar por:
1
28285Puntos
scores = {'pa-pi','pi-ti', 'ti-pa'}

defwho_won(player1, player2):if f'{player1}-{player2}'in scores:
        return1return2deftest_pipati(trace):
    scores = [who_won(player1, player2) for player1, player2 in trace]
    player1 = 0
    player2 = 0for score in scores:
        if score == 1:
            player1 += 1else: 
            player2 += 1if player1 == player2:
        return"tie"if player1 > player2:
        return"player 1"return"player 2"

print(test_pipati([['pi', 'ti'], ['pa', 'ti'], ['ti', 'pi'], ['pi', 'pa']]))
print(test_pipati([['pi', 'ti'], ['pa', 'ti']]))
print(test_pipati([['pi', 'ti'], ['pi', 'ti'], ['ti', 'pi']]))
1
28285Puntos

Una versión más pythonista y binaria

scores = {'pa-pi','pi-ti', 'ti-pa'}

defwho_won(player1, player2):if f'{player1}-{player2}'in scores:
        return1return0deftest_pipati(trace):
    player1 = sum([who_won(player1, player2) for player1, player2 in trace])
    player2 = len(trace) - player1
    if player1 == player2:
        return"tie"if player1 > player2:
        return"player 1"return"player 2"

print(test_pipati([['pi', 'ti'], ['pa', 'ti'], ['ti', 'pi'], ['pi', 'pa']]))
print(test_pipati([['pi', 'ti'], ['pa', 'ti']]))
print(test_pipati([['pi', 'ti'], ['pi', 'ti'], ['ti', 'pi']]))
1
19943Puntos

Piedra, Papel y Tijeras en JavaScript

// Piedra, papel y tijeras en JavaScriptfunctionpiedraPapelOTijera(juegos) {
  let resultados = juegos.map(juego => {
    if (juego.length === 2) {
      switch (juego[0]) {
        case'pi':
          switch (juego[1]) {
            case'pi': return0case'pa': return2case'ti': return1default: return0
          }
        case'pa':
          switch (juego[1]) {
            case'pi': return1case'pa': return0case'ti': return2default: return0
          }
        case'ti':
          switch (juego[1]) {
            case'pi': return2case'pa': return1case'ti': return0default: return0
          }
        default: return0
      }
    } else {
      return0
    }
  })
  let puntosJ1 = resultados.filter(res => res === 1).length
  let puntosJ2 = resultados.filter(res => res === 2).length
  if (puntosJ1 > puntosJ2) {
    return'jugador 1'
  } elseif (puntosJ1 < puntosJ2) {
    return'jugador 2'
  } else {
    return'empate'
  }
}

console.log(piedraPapelOTijera([['pi', 'ti'], ['pa', 'ti'], ['ti', 'pi'], ['pi', 'pa']])) // jugador 2console.log(piedraPapelOTijera([['pi', 'ti'], ['pa', 'ti']])) // empateconsole.log(piedraPapelOTijera([['pi', 'ti'], ['pi', 'ti'], ['ti', 'pi']])) // jugador 1
1
7689Puntos
let partida1 = [['pi', 'ti'], ['pa', 'ti'], ['ti', 'pi'], ['pi', 'pa']]
let partida2 = [['pi', 'ti'], ['pa', 'ti']]
let partida3 = [['pi', 'ti'], ['pi', 'ti'], ['ti', 'pi']]

function juego(partida) {
  let jugador1 = 0
  let jugador2 = 0
  partida.forEach(par => {
    if ((par[0] === 'pi' && par[1] === 'ti') || (par[0] === 'ti' && par[1] === 'pa') || (par[0] === 'pa' && par[1] === 'pi')) {
      jugador1++
    } else if ((par[0] === 'pi' && par[1] === 'pa') || (par[0] === 'ti' && par[1] === 'pi') || (par[0] === 'pa' && par[1] === 'ti')) {
      jugador2++
    }
  })
  if (jugador1 > jugador2){
    console.log('Gano el jugador 1')
  } else if (jugador1 === jugador2){
    console.log('Empate')
  } else {
    console.log('Gano el jugador 2')
  }
}

juego(partida1)
juego(partida2)
juego(partida3)
1
7689Puntos
6 meses

Resultado

Gano el jugador 2
Empate
Gano el jugador 1
1

En Python 😃

import random

defmain():
    juegos=[]
    resp='si'
    cont1=0
    cont2=0while resp=='si':
        juego=[]
        jug1=input('Ingresa tu arma jugador 1: ')
        jug2=input('Ingresa tu arma jugador 2: ')
        juego.append(jug1)
        juego.append(jug2)
        juegos.append(juego)

        if jug1==jug2:
            passelif jug1=='pi'and jug2== 'pa':
            cont2=cont2+1elif jug1=='pi'and jug2== 'ti':
            cont1=cont1+1elif jug1=='pa'and jug2== 'ti':
            cont2=cont2+1elif jug1=='pa'and jug2== 'pi':
            cont1=cont1+1elif jug1=='ti'and jug2== 'pa':
            cont1=cont1+1elif jug1=='ti'and jug2== 'pi':
            cont2=cont2+1
        resp=input('Desea jugar otra partida:')

    if cont1<cont2:
        print('El ganador es el jugador 2')
    elif cont2<cont1:
        print('El ganador es el jugador 1')
    else:
        print('Hubo empate en ambos jugadores')
    print(juegos)
if __name__ == '__main__':
    menu='''Escoge tu arma:
            si escoges piedra escribe -> pi
            si escoges papel escribe -> pa
            si escoges tijera escribe -> ti'''
    print(menu)
    main()