curriculum/challenges/english/blocks/daily-coding-challenges-python/6821ebce237de8297eaee790.md
Given two strings representing your army and an opposing army, each character from your army battles the character at the same position from the opposing army using the following rules:
a-z have a strength of 1-26, respectively.A-Z have a strength of 27-52, respectively.0-9 have a strength of their face value.For each battle, the stronger character wins. The army with more victories, wins the war. Return the following values:
"Opponent retreated" if your army has more characters than the opposing army."We retreated" if the opposing army has more characters than yours."We won" if your army won more battles."We lost" if the opposing army won more battles."It was a tie" if both armies won the same number of battles.battle("Hello", "World") should return "We lost".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("Hello", "World"), "We lost")`)
}})
battle("pizza", "salad") should return "We won".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("pizza", "salad"), "We won")`)
}})
battle("C@T5", "D0G$") should return "We won".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("C@T5", "D0G$"), "We won")`)
}})
battle("kn!ght", "orc") should return "Opponent retreated".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("kn!ght", "orc"), "Opponent retreated")`)
}})
battle("PC", "Mac") should return "We retreated".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("PC", "Mac"), "We retreated")`)
}})
battle("Wizards", "Dragons") should return "It was a tie".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("Wizards", "Dragons"), "It was a tie")`)
}})
battle("Mr. Smith", "Dr. Jones") should return "It was a tie".
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(battle("Mr. Smith", "Dr. Jones"), "It was a tie")`)
}})
def battle(my_army, opposing_army):
return my_army
def get_strength(soldier):
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
if soldier.isdigit():
return int(soldier)
elif soldier in letters:
return letters.index(soldier) + 1
else:
return 0
def battle(my_army, opposing_army):
if len(my_army) > len(opposing_army):
return 'Opponent retreated'
if len(opposing_army) > len(my_army):
return 'We retreated'
my_wins = 0
their_wins = 0
for my_soldier, their_soldier in zip(my_army, opposing_army):
my_strength = get_strength(my_soldier)
their_strength = get_strength(their_soldier)
if my_strength > their_strength:
my_wins += 1
elif their_strength > my_strength:
their_wins += 1
if my_wins > their_wins:
return 'We won'
elif their_wins > my_wins:
return 'We lost'
else:
return 'It was a tie'