-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathj.h
51 lines (39 loc) · 1.12 KB
/
j.h
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
#pragma once
#include<stdlib.h> //malloc
#include<stdio.h> //fgets printf
#include<string.h> //strlen
typedef void _;typedef char C,*S;typedef long long J;typedef struct a{J t,r;J d[3];J p[2];}*K;static K st[26];
#define O printf
#define R return
#define W(a...) while(({a;})) //!< while
#define N(n,a...) {J _n=(n),i=-1;W(++i<_n){a;}} //!< no stinking loops
#define P(b,a...) if(b)R({a;}); //!< "bail early" predicate aka panic
#define Z(b,a...) if(b){a;}else //!< be sure to terminate dangling else
#define K1(f) K f(K x)
#define K2(f) K f(K x,K y)
#define xt x->t
#define xr x->r
#define xd x->d
#define xp x->p
#define yt y->t
#define yr y->r
#define yd y->d
#define yp y->p
#define zt z->t
#define zr z->r
#define zd z->d
#define zp z->p
#define rt r->t
#define rr r->r
#define rd r->d
#define rp r->p
#define ft f->t
#define fr f->r
#define fd f->d
#define fp f->p
#define Ax (!xr) //!< atom?
#define xn (xr?*xd:1) //!< length
#define Ay (!yr)
#define yn (yr?*yd:1)
K2(over);K2(scan);K ex(K*e);
//:~