blob: aeea29f45a877a3720837c4e0a4a6588c65cf0b2 (
plain)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#!/usr/bin/env dbqn
impl β "
Β» β {!1β€=π© β ( β π©)β(1β0βπ©)βΎπ©} β {!π¨1βΈββΈβ€β=π© β ( β π©)βπ¨βΎπ©}
Β« β {!1β€=π© β (-β π©)βπ©βΎ(1β0βπ©)} β {!π¨1βΈββΈβ€β=π© β (-β π©)βπ©βΎπ¨}
#β
# LAYER 4: Operators
_ranks β {β¨2β©ββ¨1,0β©((β£-1+|)Λββ βΒ¨<ββ’)β₯βπ½}
_depthOp_β{
negβ0>nβπ¨πΎ_ranksπ© β Fβπ½
_dβ{
Rβ(π+neg)_d
π¨(2β₯(negβ§πβ₯0)β¨(0βπ)β₯ββ<ββ‘)βΆ(β¨RΒ¨βRβπ©Β¨ββ£β©ββ¨(π¨Rβ’)Β¨ββ’βFβ©)π©
}
π¨ n _d π©
}
β β _depthOp_
#β
# LAYER 5: Structural functions
NatβIsArrayβΆβ¨0βΈβ€β§ββΈ=,0β©
Windowsβ{
! IsArray π©
! 1β₯=π¨
! π¨β€ββ β’π©
! β§Β΄NatΒ¨β₯π¨
sβ(β π¨)ββ’π©
! β§Β΄π¨β€1+s
π¨{(βΎβ(π¨β βΈββ’π©)ββ’β₯>)<Β¨βΈββπ©Β¨s(Β¬+ββββ’)β₯π¨}β(0<β π¨)π©
}
β β© β β Windows
#β
# LAYER 6: Everything else
Joinβ(1β =)βΆβ¨β¨Β΄1β =β,1β©βΆ{
# List of lists
iβjβΒ―1 β eββ¨β© β aβπ©
{{eβ©aβΛiβ©π©βjβ©Β―1}β(iβΈβ )π©β(jβ©j+1)βe}β/β βπ©
}βΏ{
# Multidimensional
! IsArray π©
nββ zββ₯π© β sββ’βz β dββ 0βs
! β§Β΄d=β βs
! dβ₯=π©
qβ1 β lβ(β’π©){mβπ©βΈββs β rβββmβqΓβπ¨ β !mβ‘nβ₯rβ£ββq β qΓβ©π¨ β r}Β¨ββ½β=π©
tβ(=π©)β0βs
! β§Β΄(tβ‘(=π©)βΈβ)βs
iβ<0 β qβ©<1
{sβ0βpβ{oβsβs+β©π©βo}βπ© β jββs β iβ©(jβ’βi)+(j-π©/p)Γβq β qΓβΛβ©π©/π©}βl
i(0<β t)βΆβ¨βββ₯Β¨,{tiβtβ₯βtpβΓΒ΄tβ((tpΓπ¨)+βti)βββ₯Β¨π©β£βti}β©(β½l)/π©
}β(0<β ββ₯)
βΎ β© Join β βΎ
# Searching
IndexOfβ(1<ββ=)βΆββΏ{
cβ1-Λ=π¨
! 0β€c
π¨ (0<β π¨)βΆβ¨0βcββ’,(+Λβ§`)β’βcβcβΏββ© π©
}
UniqueMaskβ{
! 1β€=π©
uβ0βπ©
{(β u)>βu IndexOf π©}βΆ{uβ©uβΎπ©β1}βΏ0Λπ©
}
Findβ{
rβ=π¨
! rβ€=π©
π¨ β‘βr (β’π¨) ββr π©
}
β β β β IndexOf
β β UniqueMask β (βΛ<β ββ’)
β· β ββΈ/ β Find
OccurrenceCount β βΛ(β’-β)βββ
ProgressiveIndexOf β {π¨ββ(βΛβOccurrenceCountπ¨βΈβ)π©}
β β OccurrenceCountβ ProgressiveIndexOf
"
raw β {β}
X β {F:β€4}
{v:
chrsββ¨
"»«βΎβββββ·"
""
"β"
β©
nc β β Β¨chrs
chr β βΎchrs
itr β 0β₯Λβ chr
init β " "βΈβΎΒ¨(/β"_"Β¨nc/0βΏ1βΏ1)βΎΒ¨(nc/"FMD")βΎΒ¨(nc+Β΄βΈββ₯"AB"βΎββ’a)
post β βΎβ" "Β¨/β"_"Β¨nc/0βΏ0βΏ1
names β initβΎΒ¨'0'βΎΒ¨post
Inc β {
iββchrβπ©
nβ0 β itrβ©{nβ©1+π©}βΎ(iββ’)itr
namesβ©((iβinit)βΎ('0'+n)βΎiβpost)βΎ(iββ’)names
}
# built-in assumptions
Mod β {((βchrβπ¨)βnames) βΎ " β " βΎ π©}
RawΒ¨ β¨
"IsArray β 0β β‘"
β©βΎModββ₯Β¨ "ββΎβ"
# checks if line is a builtin redefinition
E_isdef β (3β€β )βΆβ¨0,β§Β΄β¨chr," ","ββ©"β©βΛΒ¨3βΈββ©
# removes comments and replaces built-ins with names
E_proc β {
lββ chr
qββ `π©β"""'" β fβΒ¬β¨`qΒ¬βΈβ§π©='#'
βΎ (((lΓf/q)+chrβΈβ) (β₯βl)βΆβ¨ββnames,β₯ββ’β©Β¨ β’) f/π©
}
E_redef β { # handles [fmd] [ββ©]
tail β E_proc 3βπ© # must use old def
Inc βπ©
(E_proc 1βπ©) βΎ "β" βΎ tail
}
lf β @+10
pre β E_isdefβΆE_procβΏE_redefΒ¨ lf((β’-ΛΒ¬Γ+`)β=ββ’)impl
ExecFileβ{
path β "dot_pathβ" βΎ '"' (β£βΎβ£βΎΛ(1+=)/β’) (β¨`βΎβ½'/'=π©)/π©
src β "β’path"β’_r_"dot_path"βE_procΒ¨ β’LNS π©
Raw βΎ βΎβlfΒ¨ path <βΈβΎ src
}
Xβ©RawβE_proc
Raw βΎ βΎβlfΒ¨ pre
β βΆ(XΛ)βΏ{ExecFile βπ©}βΏ{ExecFile βπ© β X 1βπ©} β’args
}
|