Mastermind: Difference between revisions
Content added Content deleted
(→{{header|Python}}: Edited Python example to match rules as discussed under the section about the Julia implementation) |
|||
Line 2,167: | Line 2,167: | ||
def encode(correct, guess): |
def encode(correct, guess): |
||
output_arr = [''] * len(correct) |
output_arr = [''] * len(correct) |
||
correct_list = list(correct) |
|||
for i, (correct_char, guess_char) in enumerate(zip(correct, guess)): |
for i, (correct_char, guess_char) in enumerate(zip(correct, guess)): |
||
if |
output_arr[i] = 'X' if guess_char == correct_char else 'O' if guess_char in correct else '-' |
||
output_arr[i] = 'X' |
|||
correct_list.remove(guess_char) |
|||
for i, guess_char in enumerate(guess): |
|||
if output_arr[i] != '': |
|||
continue |
|||
elif guess_char in correct_list: |
|||
output_arr[i] = 'O' |
|||
correct_list.remove(guess_char) |
|||
else: |
|||
output_arr[i] = '-' |
|||
return ''.join(output_arr) |
return ''.join(output_arr) |
||
Line 2,203: | Line 2,191: | ||
print("You will need to guess a random code.") |
print("You will need to guess a random code.") |
||
print("For each guess, you will receive a hint.") |
print("For each guess, you will receive a hint.") |
||
print("In this hint, X denotes a correct letter, and O a letter in the original string but a different position.") |
print("In this hint, X denotes a correct letter, and O a letter in the original string but in a different position.") |
||
⚫ | |||
print("X's and O's will only be given for a letter as many times as that letter occurs in the code.") |
|||
⚫ | |||
number_of_letters = safe_int_input("Select a number of possible letters for the code (2-20): ", 2, 20) |
number_of_letters = safe_int_input("Select a number of possible letters for the code (2-20): ", 2, 20) |
||
Line 2,215: | Line 2,202: | ||
while True: |
while True: |
||
print( |
print() |
||
guess = input(f"Enter a guess of length {code_length} ({letters}): ").upper().strip() |
guess = input(f"Enter a guess of length {code_length} ({letters}): ").upper().strip() |
||
Line 2,242: | Line 2,229: | ||
For each guess, you will receive a hint. |
For each guess, you will receive a hint. |
||
In this hint, X denotes a correct letter, and O a letter in the original string but a different position. |
In this hint, X denotes a correct letter, and O a letter in the original string but a different position. |
||
X's and O's will only be given for a letter as many times as that letter occurs in the code. |
|||
Select a number of possible letters for the code (2-20): 4 |
Select a number of possible letters for the code (2-20): 4 |
||
Line 2,249: | Line 2,235: | ||
*omitted first guesses* |
*omitted first guesses* |
||
Enter a guess of length 4 (ABCD): |
Enter a guess of length 4 (ABCD): cdaa |
||
------------------------------------ |
------------------------------------ |
||
1: A A B B => O |
1: A A B B => O O - - |
||
------------------------------------ |
------------------------------------ |
||
2: |
2: C D A A => O X X O |
||
------------------------------------ |
------------------------------------ |
||
Enter a guess of length 4 (ABCD): |
Enter a guess of length 4 (ABCD): ddac |
||
Your guess |
Your guess DDAC was correct! |
||
</pre> |
</pre> |
||