RosettaCodeData/Task/Find-the-missing-permutation/Aime/find-the-missing-permutation.aime

35 lines
629 B
Text
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
void
2018-06-22 20:57:24 +00:00
paste(record r, index x, text p, integer a)
2017-09-23 10:01:46 +02:00
{
2018-06-22 20:57:24 +00:00
p = insert(p, -1, a);
x.delete(a);
if (~x) {
x.vcall(paste, -1, r, x, p);
2017-09-23 10:01:46 +02:00
} else {
2018-06-22 20:57:24 +00:00
r[p] = 0;
2017-09-23 10:01:46 +02:00
}
x[a] = 0;
}
integer
main(void)
{
record r;
list l;
index x;
2018-06-22 20:57:24 +00:00
l.bill(0, "ABCD", "CABD", "ACDB", "DACB", "BCDA", "ACBD", "ADCB",
2017-09-23 10:01:46 +02:00
"CDAB", "DABC", "BCAD", "CADB", "CDBA", "CBAD", "ABDC", "ADBC",
"BDCA", "DCBA", "BACD", "BADC", "BDAC", "CBDA", "DBCA", "DCAB");
2018-06-22 20:57:24 +00:00
x['A'] = x['B'] = x['C'] = x['D'] = 0;
2017-09-23 10:01:46 +02:00
2018-06-22 20:57:24 +00:00
x.vcall(paste, -1, r, x, "");
2017-09-23 10:01:46 +02:00
2018-06-22 20:57:24 +00:00
l.ucall(r_delete, 1, r);
2017-09-23 10:01:46 +02:00
2018-06-22 20:57:24 +00:00
o_(r.low, "\n");
2017-09-23 10:01:46 +02:00
return 0;
}