Python, qatorning keyingi qismida bir xilligini tekshiring

Detslarni aylantirish uchun python skriptini qilmoqdaman. Har bir narsaga ishlayman, birgina bitdan tashqari. Kimdir ketma-ket 4, 4 marta siljitsa, u yana 4 ditsni siljishi kerak Asosan, bir qatordagi keyingi to'rtta raqam "combo" ni tekshirish uchun avvalgi holatlar bilan bir xil yoki yo'qligini tekshirmoqchiman.

Misol uchun:

[4, 4, 4, 4] to'g'ri va to'rtta tasodifiy tamsay qatorga qo'shiladi

[4, 3, 1, 4] yolg'ondir.

Buni men bilamanmi?

Oldindan rahmat!

1
Iltimos, juda qiyin vaqt o'tkazayotgan kodning bir qismini ko'rsating. Bir namunali kirish va aniq aniq chiqishni taqdim eting va joriy kodingizda qanday qiyinchiliklarga duch kelayotganingizni tushuntiring.
qo'shib qo'ydi muallif idjaw, manba
Nima uchun oxirgi 4ta rulonni saqlash kerak?
qo'shib qo'ydi muallif Ignacio Vazquez-Abrams, manba
Ha, afsuski, men bu erda savollar berishni juda istardim, kelajakda qilaman.
qo'shib qo'ydi muallif Raphaël Bunck, manba

6 javoblar

to'siqni ishlatish ishlatilishi kerak:

list1=[4,4,4,4]
list2=[4,4,3,4]
comparison= set(list1).intersection(list2)
if len(comparison) > 1:
    print("No Combo found")
    #or a whatever you require to be done here to show no combo
0
qo'shib qo'ydi

Siz etishmayotgan parcha, tushunish uchun qo'llaniladigan barcha funktsiyasidir. Bir narsa

if all([rolls[i+n] == rolls[i] for n in range(4)]):
    # Perform 4 more rolls

Tushunish (ro'yxatning ifodasi ichidagi loop uchun) to'rtta boolean natijalar hosil qiladi; barcha barcha elementlarning rost bo'ladimi-yo'qligiga qaror qiladi. FYI, hammasi ning "yoki" versiyasi har qanday funksiyasi.

0
qo'shib qo'ydi

Siz faqat oxirgi 4 rulonni chiqarib olishingiz mumkin, ularni to'plamga aylantirasiz va bu erda faqat bitta element mavjudmi.

True kodini [4,4] uchun qaytarmaslik uchun kamida 4 ta rulo mavjudligiga ishonch hosil qilishingiz kerak. Masalan:

def test_last_four(rolls):
    if len(rolls) >= 4 and len(set(rolls[-4:])) == 1:
        return rolls[-1]

print(test_last_four([1, 4, 4, 4, 4]))
#=> 4
print(test_last_four([1, 4, 3, 1, 4]))
#=> None
print(test_last_four([4, 4]))
#=> None
0
qo'shib qo'ydi
def checkForBeingTheSame(listOfRoles):
    if listOfRoles[-1]==listOfRoles[-2]:
        if listOfRoles[-2]==listOfRoles[-3]:
            if listOfRoles[-3]==listOfRoles[-4]:
                return True
    return False

Siz shunday bir narsa qidiryapsizmi? (Yuqori) Bunga o'xshash yana to'rt tasodifiy raqamni qo'shishingiz mumkin. (Bottem)

def checkForBeingTheSame():
    global listOfRoles
    if listOfRoles[-1]==listOfRoles[-2]:
        if listOfRoles[-2]==listOfRoles[-3]:
            if listOfRoles[-3]==listOfRoles[-4]:
                for i in range(4):
                    listOfRoles.append(randint(1,6))
                return True
    return False
0
qo'shib qo'ydi
a = [1, 2, 4, 4]
print a.count(4) == len(a)

a = [4, 4, 4, 4]
print a.count(4) == len(a)

qaytaradi

False
True
0
qo'shib qo'ydi

Savolingizdan nimalarni to'plashimni tekshirish kerak

  • ro'yxatingizdagi barcha elementlar bir xil
  • agar bo'lsa, qaysi qiymat ro'yxatda.

Menimcha, Pythonning eng yechimlari sizning ro'yxatingizni to'siq sifatida ko'rsatishdir

if set(dice_rolls) == {4}:
    # roll logic
0
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming