BeardedPC Ответов: 1

Попытка создать игру mastermind с использованием списков в Python


Я делаю игру mastermind (ту, где вы должны угадать пароль, и она говорит вам, сколько кодов вы получили правильно, когда попытались). БУУУУУТ, я делаю свое с одним словом, а не с несколькими словами или цветами

пример:
answer = "this"
given = "that"

print(str(answer - given) + "/4 correct")
>>> "2/4 correct"

Мне нужно найти способ найти количество символов, которые переменные имеют таким образом, основываясь на порядке их расположения.

Вот оригинальная программа, в которой код пытается работать, если это необходимо:
https://repl.it/@BeardedPC/recreation

Что я уже пробовал:

Я пробовал использовать:

crct = len([i for i, j in zip(a,b) if i == j])
      gmtxt("> Entry denied \n> "+str(crct)+"/4 correct.")

но он либо появляется как "0", либо ошибка.

Я также пытался превратить переменные в списки, и это, кажется, ближе всего подходит мне, но это все еще не работает, как я надеялся.

Richard MacCutchan

Я только что попробовал ваше первое утверждение, и оно правильно сообщает ответ как 2. Что такое gmtxt что вы используете, чтобы попытаться отобразить результат?

BeardedPC

пожалуйста, проверьте исходный код, если у вас есть вопросы о переменных

Richard MacCutchan

У меня нет вопросов о переменных величинах. Прочтите мой комментарий еще раз: ваш код дает ответ 2, который является правильным. Я не знаю что именно gmtxt есть, или то, что он должен делать.

BeardedPC

В вопросе, который я разместил ссылку на оригинальную программу, вы можете найти определение для всех переменных там

1 Ответов

Рейтинг:
0

OriginalGriff

Во-первых, у mastermind есть две разные оценки: черная и белая.
Черный - это когда буква правильная, и в нужном месте.
Белый - это когда буква правильная, но в неправильном месте.
Таким образом, "это" и "то" будут 2 черными, 0 белыми.
А "это" и "здесь" - это 0 черных, 1 белый.
Так что делайте это в два этапа:
1) сопоставьте каждый входной символ за символом.
1.1) если они одинаковы, добавьте один к вашему количеству черных
1.2) В противном случае скопируйте Буквы в выходные массивы.
1.3) после цикла проверьте количество черных. Если он соответствует длине, он выиграл.
2) вроде как выходной массивы. (Это делает жизнь намного проще)
2.1) Сравните два выходных массива символ за символом, используя два индекса.
2.2) если они одинаковы, добавьте один к вашему количеству белых и увеличьте оба индекса.
2.3) в противном случае проигнорируйте самый низкий и увеличьте этот индекс.
2.4) после цикла выведите черно-белые отсчеты.

Попробуйте - это должно быть довольно просто!


BeardedPC

@OriginalGriff я знаю об этом, но я сосредотачиваюсь только на правильных буквах в правильном месте. Это мне не помогает, мне нужен пример кодирования чего-то, чтобы приблизиться к моей цели.

OriginalGriff

Тогда просто используйте первый этап ...

BeardedPC

Мне нужно знать, каков будет код для этого!

OriginalGriff

Нет, вы хотите, чтобы вам дали код, чтобы вы могли передать его как свою собственную работу.
Что вам нужно, так это написать его самостоятельно - мы не делаем за вас домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!