Keresés

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

  • Jester01

    veterán

    válasz ngabor2 #1726 üzenetére

    Összedobtam egy kis progit, de nem shell script :N

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <limits.h>
    #include <stdbool.h>

    #define ELEMENT char
    #define EQUAL(a, b) ((a) == (b))
    #define OFFSET int
    #define NOTE_DELETE(ctx, xoff) note_delete(ctx, xoff)
    #define NOTE_INSERT(ctx, xoff) note_insert(ctx, xoff)
    #define EXTRA_CONTEXT_FIELDS
    #undef MIN
    #undef MAX
    #define MIN(a, b) ((a) <= (b) ? (a) : (b))
    #define MAX(a, b) ((a) >= (b) ? (a) : (b))

    struct context;
    static void note_delete(struct context* ctxt, int xoff);
    static void note_insert(struct context* ctxt, int xoff);

    #include "diffseq.h"

    static int cost = 0;
    static void note_delete(struct context* ctxt, int xoff)
    {
    cost += 1;
    }

    static void note_insert(struct context* ctxt, int xoff)
    {
    cost += 1;
    }

    int main(int argc, char** argv)
    {
    struct context ctxt;
    int len1 = strlen(argv[1]);
    int len2 = strlen(argv[2]);
    int diags = len1 + len2 + 3;
    ctxt.fdiag = calloc(2 * diags, sizeof(*ctxt.fdiag));
    ctxt.bdiag = ctxt.fdiag + diags;
    ctxt.fdiag += len2 + 1;
    ctxt.bdiag += len2 + 1;
    ctxt.too_expensive = len1 + len2;
    ctxt.xvec = argv[1];
    ctxt.yvec = argv[2];
    compareseq(0, strlen(ctxt.xvec), 0, strlen(ctxt.yvec), false, &ctxt);
    printf("%d\n", cost);
    return (cost == 0) ? 0 : 1;
    }

    A diffutils-ból kell hozzá a diffseq.h fájl.

    $ ./a.out ablak ablak
    0
    $ ./a.out ablak albak
    2
    $ ./a.out ablak alak
    1

    [ Módosította: ngabor2 ]

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

Hirdetés