-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdead_fish.js
88 lines (88 loc) · 2.06 KB
/
dead_fish.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
function dead_fish(code,input){
var max_size=0;
var code_split=code.split('\n');
for(let i of code_split){
max_size=Math.max(max_size,i.length);
}
for(let i=0;i<code_split.length;i++){
var k=code_split[i].length;
for(let j=0;j<max_size-k;j++){
code_split[i]+=' ';
}
}
var ipx=0,ipy=0,ipdx=0,ipdy=1,p=0,output='',x=0;
while(ipx<code_split.length&&ipx>=0&&ipy<max_size&&ipy>=0){
var cmd=code_split[ipx][ipy];
switch(cmd){
case 'i':{
x=(x+1)&255;
break;
}
case 'd':{
x=(x-1)&255;
break;
}
case 's':{
x=(x*x)&255;
break;
}
case 'o':{
output+=String.fromCharCode(x);
break;
}
case 'n':{
output+=x+'\n';
break;
}
case 'l':{
if(p<input.length){
x=input.charCodeAt(p);
p++;
}else{
x=0;
}
break;
}
case '^':{
ipdx=-1;
ipdy=0;
break;
}
case 'v':{
ipdx=1;
ipdy=0;
break;
}
case '<':{
ipdx=0;
ipdy=-1;
break;
}
case '>':{
ipdx=0;
ipdy=1;
break;
}
case '?':{
if(!x){
ipx+=ipdx;
ipy+=ipdy;
}
break;
}
case ';':{
return output;
}
case ' ':{
break;
}
default:{
output+='Nope.';
return output;
}
}
ipx+=ipdx;
ipy+=ipdy;
}
return output;
}