44 lines
1.1 KiB
BQN
44 lines
1.1 KiB
BQN
⟨ListVariations, ClearRefs, Variation, Squeeze, Info⟩ ← •internal
|
||
u ← •UnixTime@
|
||
# u ↩ 1648896733
|
||
|
||
r ← •MakeRand •Show u
|
||
|
||
TestVars ← { w𝕊a‿b:
|
||
n ← ¬w
|
||
(ListVariations a) {
|
||
¬⍟n (𝕨 Variation a) ≡ (𝕩 Variation b)? @;
|
||
•Out ∾"fail for "‿𝕨‿"/"‿𝕩‿", expected "‿(w⊑"0"‿"1")‿":"
|
||
•Out •Repr a
|
||
•Out •Repr b
|
||
•Out •Repr a≠b
|
||
•Exit 1
|
||
}⌜ ListVariations b
|
||
ClearRefs@
|
||
}
|
||
|
||
(1 TestVars ⋈˜)¨ ⟨⟨⟩ ⋄ "" ⋄ ↕0⟩
|
||
|
||
# types: u1,i8,i16,i32,f64,c8,c16,c32
|
||
szs ← 2∾(2⋆8‿16‿32)∾0∾(2⋆8‿16)∾1114111
|
||
off ← 0∾(2⋆7‿15‿31)∾¯0.5∾0‿0‿0
|
||
chr ← 0‿0‿0‿0‿0‿1‿1‿1
|
||
RandVal ← {
|
||
Squeeze @+⍟(𝕩⊑chr) (𝕨 r.Range 𝕩⊑szs) - 𝕩⊑off
|
||
}
|
||
|
||
Do ← { 𝕊:
|
||
at ← r.Range 8
|
||
l ← 1 + r.Range (at=0)⊑100‿700
|
||
a ← l RandVal at
|
||
1 TestVars a‿a
|
||
{ 𝕊:
|
||
p ← r.Range l
|
||
v ← RandVal ⊢◶⟨r.Range∘5 ⋄ 5+r.Range∘3⟩ at≥5
|
||
exp ← v = p⊑a
|
||
b ← Squeeze v⌾(p⊸⊑) a
|
||
exp TestVars a‿b
|
||
}⍟100 @
|
||
}
|
||
|
||
@∘Do⍟1000 @ |