Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz MacCaine #859 üzenetére

    Először is kell egy táblázat, ami minden billentyűhöz megmondja a szomszédait. Aztán szépen rekurzívan bejárod adott hosszig, ügyelve, hogy ismétlődés ne legyen (már ha ez feltétel). Például valahogy így:

    #! /bin/bash

    len=3
    declare -A layout
    layout["a"]=qwsxz
    layout["s"]=wedcxzaq
    layout["d"]=erfvcxsw
    layout["f"]=rtgbvcde
    # ...

    function process
    {
    local text="$1"
    local options="$2"
    local i
    local letter
    local newtext
    local next

    for ((i=0; i<${#options}; i+=1))
    do
    letter=${options:i:1}
    if [ "${text/$letter/}" = "${text}" ]
    then
    newtext="${text}${letter}"
    if [[ ${#newtext} == $len ]]
    then
    echo "$newtext"
    else
    next=${layout[$letter]}
    if [[ ${#next} > 0 ]]
    then
    process "$newtext" "$next"
    fi
    fi
    fi
    done
    }

    for i in "${!layout[@]}"
    do
    process "" "$i"
    done

    Jester

Új hozzászólás Aktív témák