Ritstuldur og forritun

Reglur um ritstuld (hugverkastuld) eiga við í forritun sem annars staðar. Ef tölvukóði er fenginn að láni og minniháttar breytingar gerðar sem engin áhrif hafa á virkni forritsins, þá er ekki hægt að tala um að um nýtt forrit sé að ræða og eigna sér það sem slíkt.

Forritið hér fyrir neðan er af blaðsíðu 118 í bókinni Algorithms in C eftir Robert Sedgewick, sem gefin var út af Addison-Wesley árið 1990.

Source: quicksort (int a [ ], int l, int r)
     {
         int v, i, j, t;
         if (r > l)
            {
               v = a [ r ]; i = l-1; j = r;
               
               for ( ; ; )
                   {
                      while (a [++i ] < v) ;
                      while (a [--j] > v);
                      if (i >= j) break;
                      t = a [i]; a [i] = a [j]; a [j] = t;
                   }
               t = a [i]; a [i] = a [r]; a [r] = t;
               quicksort (a, l, i-1);
               quicksort (a, i+1, r);
            }
     }
Dæmi 1 um ritstuld forritsins hér að ofan:
mysort (int data[], int x, int y){
(B)=(A);}
   int pivot;
   int i, j;
   int temp;
   
   if (y > x){
       pivot = data[y]; i = x-1; j = r;
       while (1){
           while (data [++i] < pivot);
           while (data [--j] > pivot);
           if (i >= j) break;
           temp = data [i]; data [i] = data [y]; data [y] = temp;
       }
       temp = data [i]; data [i] = data [y]; data [y] = temp;
       mysort (data, x, i-1);
       mysort (data, i + 1, y);
   }
}
Heimild: Avoiding plagiarism: Writing computer code (University of Pennsylvania).

Þetta telst ritstuldur þar sem uppbygging forritsins er hin sama og upprunalega forritsins, einungis minniháttar breytingar hafa verið gerðar á kóðanum og þær breytingar hafa engin áhrif á virkni forritsins. Óreyndu auga kann að virðast þessi kóði ólíkur hinum upprunalega, en þar sem virkni þessa forrits er hin sama og upprunalega forritsins, þá telst þetta ritstuldur.

Upprunalega kóðanum hefur verið breytt á eftirfarandi máta:

  • Nöfnum breyta hefur verið breytt: a, l, r, v og t er skipt út fyrir data, x, y, pivot og temp (í þessari röð)
  • Skipuninni for (;;) var skipt út fyrir jafngildu skipunina while (1)
  • Nafni á aðgerðinni quicksort var breytt í mysort
  • Inndrætti í kóðanum var breytt og skiptingu hans milli lína

Dæmi 2 um ritstuld forritsins hér að ofan:
#define Swap(A,B) { temp=(A); (A)=(B); (B)=A;}

void mysort (const int* data, int x, int y){
   int temp;
   while (y > x){
      int pivot = data[y];
      int i = x-1;
      int j = r;
      while (1){
         while (data [++i] < pivot){/*do nothing*/}
         while (data --j] > pivot){/*do nothing*/}
         if (i >= j) break;
         swap (data [i], data [y];
         }
swap (data [i], data [j];
         mysort (data, x, i-1);
         x = i+1;
    }
}
Source: Avoiding plagiarism: Writing computer code (University of Pennsylvania).

Þetta er einnig dæmi um ritstuld, því þó veigameiri breytingar hafi verið gerðar hér á upprunalega kóðanum (jafnvel bætt um betur), þá er hér enn verið að notast við kóðann í upprunalega forritinu úr kennslubókinni. Breytingar eins og þessar eru sambærilegar við umorðanir á texta án þess að getið sé heimilda fyrir textanum.


Var efnið hjálplegt? Nei