aboutsummaryrefslogtreecommitdiff
path: root/src/alg.c
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2022-02-27 12:11:07 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2022-02-27 12:11:07 +0100
commitde0352a2926b0708400a9629c1da813455a6f442 (patch)
treeb0bab5511cea4d9c2910e144d1ebf53c984f786b /src/alg.c
parent75bd848e9e0cd9a14ca82018edac0b414fa4db44 (diff)
downloadnissy-de0352a2926b0708400a9629c1da813455a6f442.tar.gz
nissy-de0352a2926b0708400a9629c1da813455a6f442.zip
Changed unniss() to return an Alg*. Addedd inplace() to run a function on an alg in place.
Diffstat (limited to '')
-rw-r--r--src/alg.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/alg.c b/src/alg.c
index 4f5079a..52bebc0 100644
--- a/src/alg.c
+++ b/src/alg.c
@@ -219,6 +219,16 @@ free_alglistnode(AlgListNode *aln)
219 free(aln); 219 free(aln);
220} 220}
221 221
222void
223inplace(Alg * (*f)(Alg *), Alg *alg)
224{
225 Alg *aux;
226
227 aux = f(alg);
228 copy_alg(aux, alg);
229 free(aux);
230}
231
222Alg * 232Alg *
223inverse_alg(Alg *alg) 233inverse_alg(Alg *alg)
224{ 234{
@@ -459,27 +469,23 @@ swapmove(Move *m1, Move *m2)
459 *m2 = aux; 469 *m2 = aux;
460} 470}
461 471
462void 472Alg *
463unniss(Alg *alg) 473unniss(Alg *alg)
464{ 474{
465 int i; 475 int i;
466 Alg *aux; 476 Alg *ret;
467 477
468 aux = new_alg(""); 478 ret = new_alg("");
469 479
470 for (i = 0; i < alg->len; i++) 480 for (i = 0; i < alg->len; i++)
471 if (!alg->inv[i]) 481 if (!alg->inv[i])
472 append_move(aux, alg->move[i], false); 482 append_move(ret, alg->move[i], false);
473 483
474 for (i = alg->len-1; i >= 0; i--) 484 for (i = alg->len-1; i >= 0; i--)
475 if (alg->inv[i]) 485 if (alg->inv[i])
476 append_move(aux, inverse_move(alg->move[i]), false); 486 append_move(ret, inverse_move(alg->move[i]), false);
477 487
478 for (i = 0; i < alg->len; i++) { 488 return ret;
479 alg->move[i] = aux->move[i];
480 alg->inv[i] = false;
481 }
482 free(aux);
483} 489}
484 490
485void 491void

Generated with cgit - Back to sebastiano.tronto.net