Bucket
Jump to navigation
Jump to search
Bucket is a set of languages involving 3 basic operations invented by User:A. The language variant is described by the tuple (a,b), where a<=b.
What you can do is:
- Empty the bucket a or b
- Fill the bucket a or b
- Pour units of liquid from a to b or vice versa, until the former is empty or the latter is full (whichever one happens first)
"a" or "b" means the maximum amount of that bucket is a or b.
Commands
Where a is less than or equal to b in the tuple (a,b): f: fills a F: fills b e: empties a E: empties b p: pours from a to b P: pours from b to a
Examples in (3,4)
All values are stored in the "4" bucket.
0
No code is necessary. It was set to 0.
1
FP
2
FPePFP
3
fp
4
F
Increment bucket 4
PFP
Decrement bucket 4
fpEp
Hello World! program in Bucket for debugging in integers (derivative (1,119))
fpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfp fpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpOfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpOfpfpfpfpfpfpfpOOfpfp fpOPePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePeP ePePePePePePePePePePePePeOPePePePePePePePePePePePeOfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpf pfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpfpf pOPePePePePePePePeOfpfpfpOPePePePePePeOPePePePePePePePeOPePePePePePePePePePePePePePePePePePePePePePePePePePePePe PePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePePeO
Implementation in C (provided output instructions just for debugging)
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fp=fopen(argv[1],"r");
char *code,c;
for(int i=0;(c=fgetc(fp))!=EOF;i++)
code[i]=c;
int a,b;
printf("Enter the tuple (a,b): ");
scanf("%d %d",&a,&b);
int x=0, y=0;
for(int i=0;code[i]!='\0';i++) {
while(x>a) {
x--;
y++;
}
while(y>b) {
y--;
x++;
}
while(x<0) {
x++;
y--;
}
while(y<0) {
y++;
x--;
}
if(code[i]=='f')
x=a;
else if(code[i]=='F')
y=b;
else if(code[i]=='e')
x=0;
else if(code[i]=='E')
y=0;
else if(code[i]=='p')
while(x>0||y<b) {
x--;
y++;
}
else if(code[i]=='P')
while(x<a||y>0) {
y--;
x++;
}
else if(code[i]=='o')
printf("%d\n",x);
else if(code[i]=='O')
printf("%d\n",y);
}
return 0;
}
Here is an implementation competition.