Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
15
Task/100-doors/ECL/100-doors-1.ecl
Normal file
15
Task/100-doors/ECL/100-doors-1.ecl
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Doors := RECORD
|
||||
UNSIGNED1 DoorNumber;
|
||||
STRING6 State;
|
||||
END;
|
||||
|
||||
AllDoors := DATASET([{0,0}],Doors);
|
||||
|
||||
Doors OpenThem(AllDoors L,INTEGER Cnt) := TRANSFORM
|
||||
SELF.DoorNumber := Cnt;
|
||||
SELF.State := IF((CNT * 10) % (SQRT(CNT)*10)<>0,'Closed','Opened');
|
||||
END;
|
||||
|
||||
OpenDoors := NORMALIZE(AllDoors,100,OpenThem(LEFT,COUNTER));
|
||||
|
||||
OpenDoors;
|
||||
30
Task/100-doors/ECL/100-doors-2.ecl
Normal file
30
Task/100-doors/ECL/100-doors-2.ecl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
Doors := RECORD
|
||||
UNSIGNED1 DoorNumber;
|
||||
STRING6 State;
|
||||
END;
|
||||
|
||||
AllDoors := DATASET([{0,'0'}],Doors);
|
||||
|
||||
//first build the 100 doors
|
||||
|
||||
Doors OpenThem(AllDoors L,INTEGER Cnt) := TRANSFORM
|
||||
SELF.DoorNumber := Cnt;
|
||||
SELF.State := 'Closed';
|
||||
END;
|
||||
|
||||
ClosedDoors := NORMALIZE(AllDoors,100,OpenThem(LEFT,COUNTER));
|
||||
|
||||
//now iterate through them and use door logic
|
||||
|
||||
loopBody(DATASET(Doors) ds, UNSIGNED4 c) :=
|
||||
PROJECT(ds, //ds=original input
|
||||
TRANSFORM(Doors,
|
||||
SELF.State := CASE((COUNTER % c) * 100,
|
||||
0 => IF(LEFT.STATE = 'Opened','Closed','Opened')
|
||||
,LEFT.STATE);
|
||||
SELF.DoorNumber := COUNTER; //PROJECT COUNTER
|
||||
));
|
||||
|
||||
g1 := LOOP(ClosedDoors,100,loopBody(ROWS(LEFT),COUNTER));
|
||||
|
||||
OUTPUT(g1);
|
||||
23
Task/100-doors/ECL/100-doors-3.ecl
Normal file
23
Task/100-doors/ECL/100-doors-3.ecl
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
DoorSet := DATASET(100,TRANSFORM({UNSIGNED1 DoorState},SELF.DoorState := 1));
|
||||
SetDoors := SET(DoorSet,DoorState);
|
||||
|
||||
Doors := RECORD
|
||||
UNSIGNED1 Pass;
|
||||
SET OF UNSIGNED1 DoorSet;
|
||||
END;
|
||||
|
||||
StartDoors := DATASET(100,TRANSFORM(Doors,SELF.Pass := COUNTER,SELF.DoorSet := SetDoors));
|
||||
|
||||
Doors XF(Doors L, Doors R) := TRANSFORM
|
||||
ds := DATASET(L.DoorSet,{UNSIGNED1 DoorState});
|
||||
NextDoorSet := PROJECT(ds,
|
||||
TRANSFORM({UNSIGNED1 DoorState},
|
||||
SELF.DoorState := CASE((COUNTER % R.Pass) * 100,
|
||||
0 => IF(LEFT.DoorState = 1,0,1),
|
||||
LEFT.DoorState)));
|
||||
SELF.DoorSet := IF(L.Pass=0,R.DoorSet,SET(NextDoorSet,DoorState));
|
||||
SELF.Pass := R.Pass
|
||||
END;
|
||||
|
||||
Res := DATASET(ITERATE(StartDoors,XF(LEFT,RIGHT))[100].DoorSet,{UNSIGNED1 DoorState});
|
||||
PROJECT(Res,TRANSFORM({STRING20 txt},SELF.Txt := 'Door ' + COUNTER + ' is ' + IF(LEFT.DoorState=1,'Open','Closed')));
|
||||
Loading…
Add table
Add a link
Reference in a new issue