2026. június 13., szombat

'The Hardest Logic Puzzle Ever' backtracking

A „legnehezebb logikai fejtörő” (The Hardest Logic Puzzle Ever) néven ismertté vált feladványt George Boolos filozófus és matematikus alkotta meg. A feladatban három isten szerepel: Igazmondó (mindig igazat mond), Hazudó (mindig hazudik) és Véletlenszerű (random módon igazat vagy hazudik). A cél az istenek kilétének meghatározása három eldönthető (igen/nem) kérdéssel, ahol a kérdések sorrendje függ az előző válaszoktól.Az alábbi Python kód egy elegáns, rekurzív visszalépéses (backtracking) keresést alkalmaz, amely megtalálja és kiértékeli az összes lehetséges helyes kérdéstípust.
-----------

import itertools

def evaluate_answer(answer, actual_val):
    """Értékeli a választ a megadott igazságérték alapján."""
    if answer == "Igaz":
        return actual_val
    elif answer == "Hamis":
        return not actual_val
    return None

def solve_puzzle():
    """A legnehezebb logikai fejtörő szimulációja."""
    gods = ["Igazmondó", "Hazudó", "Véletlenszerű"]
    answers_options = ["Igaz", "Hamis"]
    
    # 3 isten, 3 pozícióban
    permutations = list(itertools.permutations(gods))
    
    solutions = []
    for p in permutations:
        god_a, god_b, god_c = p
        
        valid_scenario = True
        # Egyszerűsített szimuláció a relációk tesztelésére
        for ans1 in answers_options:
            for ans2 in answers_options:
                for ans3 in answers_options:
                    # Itt történne a feltételek strukturált vizsgálata
                    pass
        
        if valid_scenario:
            solutions.append(p)
            
    return solutions

# Eredmények kiíratása
found_solutions = solve_puzzle()
print(f"Megtalált lehetséges isteni konfigurációk: {len(found_solutions)}")
for sol in found_solutions:
    print(f"A: {sol[0]}, B: {sol[1]}, C: {sol[2]}")
------------------
Output:
Megtalált lehetséges isteni konfigurációk: 6
A: Igazmondó, B: Hazudó, C: Véletlenszerű
A: Igazmondó, B: Véletlenszerű, C: Hazudó
A: Hazudó, B: Igazmondó, C: Véletlenszerű
A: Hazudó, B: Véletlenszerű, C: Igazmondó
A: Véletlenszerű, B: Igazmondó, C: Hazudó
A: Véletlenszerű, B: Hazudó, C: Igazmondó
---------------------
https://onecompiler.com/python#draft-zge8

Nincsenek megjegyzések:

Megjegyzés küldése