Hirdetés

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

  • Jester01
    veterán

    Írtam egy kis awk scriptet:

    BEGIN {

    for (r=1; r<=8; r++){
    for (c=1; c<=8; c++) {
    if ((r+c) % 2 == 0) TABLA[r,c]='' ''; else TABLA[r,c]=''*''
    }
    }

    }

    TABLA[$3,$2]=$1;

    END {

    for (r=1; r<=8; r++){
    printf ''|'';
    for (c=1; c<=8; c++) {
    printf TABLA[r,c]
    }
    print ''|'';
    }

    }


    Ennek egy ilyen input fájl kell:


    B 1 1
    H 2 1
    F 3 1
    B 8 1
    F 4 3
    f 4 4
    g 3 5
    g 7 5
    g 4 7


    Az első karakter a sakkbábu, nagybetűvel a fekete, kicsivel a fehér. Gyalogot is jelölni kell!
    A második oszlop az oszlop sorszáma, harmadik a sor.


    És ez az eredménye:

    |BHF* * B|
    |* * * * |
    | * F * *|
    |* *f* * |
    | *g* *g*|
    |* * * * |
    | * g * *|
    |* * * * |

    Ugyanez bash shell script formájában:

    for ((r=1; r<=8; r++))
    do
    for ((c=1; c<=8; c++))
    do
    if [[ $(( (r+c) % 2 )) == 0 ]]
    then
    TABLA[$((r * 8 + c))]='' ''
    else
    TABLA[$((r * 8 + c))]=''*''
    fi
    done
    done

    while read f c r
    do
    TABLA[$((r * 8 + c))]=''$f''
    done

    for ((r=1; r<=8; r++))
    do
    echo -n ''|''
    for ((c=1; c<=8; c++))
    do
    echo -n ''${TABLA[r * 8 + c]}''
    done
    echo ''|''
    done


    Azt hiszem magától értetõdõ, leszámítva, hogy kevésbé olvasható.
    Annyit fûznék még hozzá, hogy bash-ban nincs 2 dimenziós tömb (illetve asszociatív - az awk-ban ez van) ezért ki kellett lapítani egy dimenziósra a sakktáblát.

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