बैकस्टोरी: मैं एक कोड-अनुमान लगाने वाला गेम बना रहा हूं। उपयोगकर्ता को 4 अंक दर्ज करने होंगे जिनकी तुलना वास्तविक कोड से की जाएगी। प्रोग्राम सही जगह पर सही ढंग से अनुमानित अंकों की मात्रा और गलत जगह पर कितने सही अंक आउटपुट करता है। जब अनुमान में एक अंक कोड में एक अंक के साथ सही ढंग से मेल खाता है, तो सरणी varr गलत में बदल जाती है।

 varr= [code(0), code(1), code(2), code(3)]

इसके लिए मुझे दो लूप बनाने होंगे। "अनुमान में प्रत्येक अंक के लिए जो कोड से मेल खाता है ..." और "सरणी में शेष अंकों के लिए"

मैं इसे पायथन में कैसे लिखूं?

0
user9581642 2 अप्रैल 2018, 13:15

2 जवाब

सबसे बढ़िया उत्तर

मैं मुख्य कोड दिखाने के लिए सूची और उपयोगकर्ता इनपुट भाग बनाने के कोड को अनदेखा करता हूं:

from collections import Counter


def main():
    answers = [1, 2, 3, 4]
    guesses = [3, 5, 6, 4]

    answers_counter = Counter(answers)
    guesses_counter = Counter(guesses)
    diff_counter = answers_counter - guesses_counter
    number_of_all_correct_digits = len(answers) - len(diff_counter.values())

    number_of_correct_digits_in_correct_place = len(
        list(filter(lambda x: x == 0, [a - g for a, g in zip(answers, guesses)])))

    number_of_correct_digits_in_wrong_place = number_of_all_correct_digits - number_of_correct_digits_in_correct_place

    return number_of_correct_digits_in_correct_place, number_of_correct_digits_in_wrong_place


if __name__ == "__main__":
    r1, r2 = main()
    print(r1)
    print(r2)

और यह परिणाम देता है, सही जगह पर सही अंकों की संख्या: 1 (अंक 3), गलत जगह पर सही अंकों की संख्या: 1 (अंक 4)

0
Arya McCarthy 2 अप्रैल 2018, 10:50

शायद कुछ इस तरह की कोशिश करो:

import random

first_lock = random.randint(1, 50)
second_lock = random.randint(1, 50)
third_lock = random.randint(1, 50)
fourth_lock = random.randint(1, 50)

combination_dict = {
  'one': lambda one, cd, wd: (cd + 1, wd) if first_lock == one else (cd, wd + 1),
  'two': lambda two, cd, wd: (cd + 1, wd) if second_lock == two else (cd, wd + 1),
  'three': lambda three, cd, wd: (cd + 1, wd) if third_lock == three else (cd, wd + 1),
  'four':  lambda four, cd, wd: (cd + 1, wd) if fourth_lock == four else (cd, wd + 1)
}

def combination_lock(one, two, three, four):
  cd = 0
  wd = 0
  cd, wd = combination_dict['one'](one, cd, wd)
  cd, wd = combination_dict['two'](two, cd, wd)
  cd, wd = combination_dict['three'](three, cd, wd)
  cd, wd = combination_dict['four'](four, cd, wd)

  return cd, wd


def game_start():
  correct_digits = 0
  wrong_digits = 0

  locked = True
  while locked:
    correct_digits = 0
    wrong_digits = 0

    one = int(raw_input("First Lock: "))
    two = int(raw_input("Second Lock: "))
    three = int(raw_input("Third Lock: "))
    four = int(raw_input("Fourth Lock: "))

    correct_digits, wrong_digits = combination_lock(one, two, three, four)

    if (first_lock == one) and (second_lock == two) and (third_lock == three) and (fourth_lock == four):
      locked = False
      print "Congratz you escaped the locked room!"
    else:
      print "Right digits: ", str(correct_digits)
      print "Wrong digits: ", str(wrong_digits)

game_start()
0
Floaterz 2 अप्रैल 2018, 11:30