Logik

Písmenkový Logik je hra pro dva hráče, která má následující pravidla:
1. První hráč si myslí pětipísmenné slovo, v němž se žádné písmeno ne-
opakuje.
2. Druhý hráč napíše nějaké pětipísmenné slovo.
3. První hráč odpoví dvěma čísly — první číslo udává, kolik písmen na-
psaného slova se shoduje s myšleným slovem, tzn. stojí také na správ-
ném místě; druhé číslo udává, kolik písmen napsaného slova je obsa-
ženo v myšleném slově, ale nestojí na správném místě.
4. Kroky 2 a 3 se opakují, dokud druhý hráč myšlené slovo neuhodne.
Záznam jedné hry dvou kamarádů vypadal následovně:
SONET 1 2
MUDRC 0 2
PLAST 0 2
KMOTR 0 4
ATOLY 1 1
DOGMA 0 2

V následujícím tahu bylo myšlené slovo uhodnuto. Určete, které slovo
to bylo.

Poznámka:
Námi uváděné řešení obsahuje program v jazyce PHP, který danou kombinaci písmen vyřeší - metodou hrubé síly, rychle a bezbolestně.

Správná odpověď:

x = STROM

Postup správného řešení:

x = STROM
function match($s1, $s2, $q, $w)
{
    $a = $b = 0;
    for($i=0;$i<5;$i++)
    {
        if($s1{$i} == $s2{$i})
        {
            $a++;
        }
        else
        {
            $b += strpos($s2, $s1{$i})!==false;
        }
    }

    return $a == $q && $b == $w;
}

for($a=65; $a<91; $a++)
{
    for($b=65; $b<91; $b++)
    {
        for($c=65; $c<91; $c++)
        {
            for($d=65; $d<91; $d++)
            {
                for($e=65; $e<91; $e++)
                {
                    $s=chr($a).chr($b).chr($c).chr($d).chr($e);
                    if(!match($s,"SONET", 1, 2)) continue;
                    if(!match($s,"MUDRC", 0, 2)) continue;
                    if(!match($s,"PLAST", 0, 2)) continue;
                    if(!match($s,"KMOTR", 0, 4)) continue;
                    if(!match($s,"ATOLY", 1, 1)) continue;
                    if(!match($s,"DOGMA", 0, 2)) continue;

                    echo $s;
                    exit;
                }
            }
        }

    }
}




Našel jsi chybu či nepřesnost? Klidně nám ji napiš.







Tipy na související online kalkulačky
Viz také naši kalkulačku permutaci.
Chceš si dát spočítat kombinační číslo?

K vyřešení této úlohy jsou potřebné tyto znalosti z matematiky:

Související a podobné příklady: