Functions
subsets.cc File Reference
#include "Singular/libsingular.h"
#include <vector>

Go to the source code of this file.

Functions

void subset (std::vector< int > &arr, int size, int left, int index, std::vector< int > &l, std::vector< std::vector< int > > &L)
 
BOOLEAN subsets (leftv res, leftv args)
 
int SI_MOD_INIT() subsets (SModulFunctions *p)
 

Function Documentation

◆ subset()

void subset ( std::vector< int > &  arr,
int  size,
int  left,
int  index,
std::vector< int > &  l,
std::vector< std::vector< int > > &  L 
)

Definition at line 5 of file subsets.cc.

6 {
7  if(left==0)
8  {
9  L.push_back(l);
10  return;
11  }
12 
13  for(int i=index; i<size;i++)
14  {
15  l.push_back(arr[i]);
16  subset(arr,size,left-1,i+1,l,L);
17  l.pop_back();
18  }
19 }
int i
Definition: cfEzgcd.cc:125
static int index(p_Length length, p_Ord ord)
Definition: p_Procs_Impl.h:592
int size(const CanonicalForm &f, const Variable &v)
int size ( const CanonicalForm & f, const Variable & v )
Definition: cf_ops.cc:600
void subset(std::vector< int > &arr, int size, int left, int index, std::vector< int > &l, std::vector< std::vector< int > > &L)
Definition: subsets.cc:5

◆ subsets() [1/2]

BOOLEAN subsets ( leftv  res,
leftv  args 
)

Definition at line 26 of file subsets.cc.

27 {
28  leftv u = args;
29  if ((u!=NULL) && (u->Typ()==INT_CMD))
30  {
31  leftv v = u->next;
32  if ((v!=NULL) && (v->Typ()==INT_CMD) && (v->next==NULL))
33  {
34  int n = (int)(long) u->Data();
35  int k = (int)(long) v->Data();
36  std::vector<int> array(n);
37  for (int i=0; i<n; i++)
38  array[i]=i+1;
39  std::vector<int> ltemp;
40  std::vector<std::vector<int> > lt;
41  subset(array,n,k,0,ltemp,lt);
42 
44  Lt->Init(lt.size());
45  for (unsigned i=0; i<lt.size(); i++)
46  {
47  std::vector<int> lti = lt[i];
49  Lti->Init(k);
50  for(unsigned j=0; j<lti.size(); j++)
51  {
52  Lti->m[j].rtyp = INT_CMD;
53  Lti->m[j].data = (void*)(long)lti[j];
54  }
55  Lt->m[i].rtyp = LIST_CMD;
56  Lt->m[i].data = (void*) Lti;
57  }
58 
59  res->rtyp = LIST_CMD;
60  res->data = (void*) Lt;
61  return FALSE;
62  }
63  }
64  WerrorS("subsets: unexpected parameter");
65  return TRUE;
66 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
sleftv * m
Definition: lists.h:46
int j
Definition: facHensel.cc:105
Class used for (list of) interpreter objects.
Definition: subexpr.h:82
Definition: tok.h:96
Definition: lists.h:23
#define FALSE
Definition: auxiliary.h:94
#define TRUE
Definition: auxiliary.h:98
void WerrorS(const char *s)
Definition: feFopen.cc:24
int k
Definition: cfEzgcd.cc:92
int Typ()
Definition: subexpr.cc:1033
void * data
Definition: subexpr.h:88
int i
Definition: cfEzgcd.cc:125
leftv next
Definition: subexpr.h:86
INLINE_THIS void Init(int l=0)
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
#define NULL
Definition: omList.c:12
slists * lists
Definition: mpr_numeric.h:146
int rtyp
Definition: subexpr.h:91
void * Data()
Definition: subexpr.cc:1176
Definition: tok.h:118
omBin slists_bin
Definition: lists.cc:23
void subset(std::vector< int > &arr, int size, int left, int index, std::vector< int > &l, std::vector< std::vector< int > > &L)
Definition: subsets.cc:5

◆ subsets() [2/2]

int SI_MOD_INIT() subsets ( SModulFunctions p)

Definition at line 70 of file subsets.cc.

71 {
72  p->iiAddCproc("subsets.so","subsets",FALSE,subsets);
73  return (MAX_TOK);
74 }
#define FALSE
Definition: auxiliary.h:94
Definition: tok.h:216
int(* iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
Definition: ipid.h:69
BOOLEAN subsets(leftv res, leftv args)
Definition: subsets.cc:26