Initial commit

This commit is contained in:
Dimitri Lozeve 2024-11-12 21:43:32 +01:00
commit f242d2b0df
420 changed files with 62521 additions and 0 deletions

1
2022/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*\~

1
2022/README.org Normal file
View file

@ -0,0 +1 @@
* [[https://adventofcode.com/2022][Advent of Code 2022]]

7
2022/day01/day01.bqn Normal file
View file

@ -0,0 +1,7 @@
P(10×+˜´0-'0') # string->number, 0 for empty string
iP¨¨(+`0=¨)•FLines"input" # parse input as list of lists
# Alternative version, with bqn-libs
#str ← •Import"../bqn-libs/strings.bqn"
#i ← str.ToNats¨ (2⥊@+10) str.Split •FChars"input"
•Show ´+´¨i # part 1
•Show +´3+´¨i # part 2

3
2022/day01/day01.jl Normal file
View file

@ -0,0 +1,3 @@
ll = [[parse(Int, x) for x in split(s)] for s in split(read("input", String), "\n\n")]
println(maximum(sum(l) for l in ll))
println(sum(sort([sum(l) for l in ll])[end-2:end]))

3
2022/day01/day01.py Normal file
View file

@ -0,0 +1,3 @@
l = [sum(map(int, x.splitlines())) for x in open("input").read().split("\n\n")]
print(max(l))
print(sum(sorted(l)[-3:]))

25
2022/day01/day01.rkt Normal file
View file

@ -0,0 +1,25 @@
#lang racket
(require threading)
(define (read-input filename)
(for/list ([s (string-split (file->string filename) "\n\n")])
(for/list ([n (string-split s "\n")])
(string->number n))))
(define (sum l)
(apply + l))
(define part1
(lambda~>> (map sum)
(apply max)))
(define part2
(lambda~> (map sum _)
(sort _ >)
(take _ 3)
(apply + _)))
(define input (read-input "input"))
(displayln (part1 input))
(displayln (part2 input))

2254
2022/day01/input Normal file

File diff suppressed because it is too large Load diff

14
2022/day01/test Normal file
View file

@ -0,0 +1,14 @@
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000

6
2022/day02/day02.bqn Normal file
View file

@ -0,0 +1,6 @@
in|>"AX"-¨02¨•FLines•args
ShapeScore{+´1+1˘𝕩}
WinScore{+´3×3|1+-˜´˘𝕩}
•Show (ShapeScore+WinScore)in
in2(3|˘in+¯1+)(1˘)in
•Show (ShapeScore+WinScore)in2

52
2022/day02/day02.rkt Normal file
View file

@ -0,0 +1,52 @@
#lang racket
(require threading)
(define (read-input filename)
(for/list ([l (in-lines (open-input-file filename))])
(map string->symbol (string-split l))))
(define (win-score round)
(~> (- (cadr round) (car round))
(+ 1 _)
(modulo _ 3)
(* 3 _)))
(define (shape-score round)
(+ 1 (cadr round)))
(define (read-play s)
(match s
['A 0]
['B 1]
['C 2]
['X 0]
['Y 1]
['Z 2]
[_ (error "unrecognized symbol" s)]))
(define (part1 in)
(for/sum ([round in])
(let ([round (map read-play round)])
(+ (shape-score round) (win-score round)))))
(define (choose-play round)
(define them (read-play (car round)))
(define us
(modulo
(match (cadr round)
['X (- them 1)]
['Y them]
['Z (+ them 1)]
[_ (error "unexpected symbol" (cadr round))])
3))
(list them us))
(define (part2 in)
(for/sum ([round in])
(let ([round (choose-play round)])
(+ (shape-score round) (win-score round)))))
(define in (read-input "input"))
(displayln (part1 in))
(displayln (part2 in))

2500
2022/day02/input Normal file

File diff suppressed because it is too large Load diff

3
2022/day02/test Normal file
View file

@ -0,0 +1,3 @@
A Y
B X
C Z

4
2022/day03/day03.bqn Normal file
View file

@ -0,0 +1,4 @@
in•FLines•args
Score{+´58|'&'-˜𝕩}
•Show Score¨(´/)¨ <˘¨2¨in
•Show Score¨(/)´¨3(÷˜())in

28
2022/day03/day03.rkt Normal file
View file

@ -0,0 +1,28 @@
#lang racket
(define (read-input filename)
(map string->list (file->lines filename)))
(define (score items)
(for/sum ([it items])
(cond
[(char-lower-case? it) (- (char->integer it) 96)]
[(char-upper-case? it) (+ 27 (- (char->integer it) 65))])))
(define (part1 in)
(score
(for/list ([l in])
(define-values (a b) (split-at l (/ (length l) 2)))
(car (set-intersect a b)))))
(define (part2 in)
(let lp ([l in]
[res '()])
(match l
['() (score res)]
[(list-rest a b c rest)
(lp rest (cons (car (set-intersect a b c)) res))])))
(define in (read-input "input"))
(displayln (part1 in))
(displayln (part2 in))

300
2022/day03/input Normal file
View file

@ -0,0 +1,300 @@
shzsFcPssFhjFssBzdpRcNHNZrpdJdJVJZ
fwvMCntfCCbSbSbtDgDNrDtDtJHZVH
GbCwwbwwnGrLhBzjFFFsWPhL
PpCqRsqqmmtCwMJC
LHFrLLHDSNHlfWNhDzmjzzJlJzPJMvPJjQ
SGSWDNrhZhPDSWDZLgVVRgbRppgpGVnpnn
GRRjbVjmJZlgMRzzrN
FpDptHpfHfnpPTvDFTWpFPnPcMfNCClNrzcVcrMMzVsCZlsZ
TFTQDnvLHPFDtVbLwbjdGjdwwJ
lhljvvhCjjzhjszzBPmnmGVZMGzG
FbTcTwbtSFdtcMPnTBPQVnnBZT
SFMpHDtNDSSbSdwppvgJWjJCJJgWgvlJHH
wzNCWpzCzJnWWpRRNdJrgHLhjfbLrHrchV
lBMStmPmmLQDPQZlshrdhgrfrcrrddgHgs
mvGDGQSvDPBlGMLGCvCWpNvpzRWFwqRw
stBttBThtDZqPWssPWZp
gRggwwggCGFSBBvPRpHZZrHdZLZq
ccFJGCNJmmGQzbTDhnQhBBnB
HJqMqtZbJMmJTqtLtVMqhpfphNdQfhfzzjhhlHll
rWSBrnwFwWCvwWCwBgPgCgzjQccQhhgRzcdQzjfcNfzR
CWBCwCvCvvwssWLMtJJGMdMZJsGV
nFwSFQwsNrrsssSwCrhrCNnfcCRgJRMJTJcMfRzMCMCRvW
DdbGdLZLttllWWvTzgzzgR
ZqGzPdLtDjBjDZGPZVmnhQFwqrFQhVFnss
sNNpCjttjsJjSpgpWjslCTnqqSVffrnhSfDhmhrhfm
dBwcGzbPBHbbwZcwJbcTTFDFFFDVrdVmFdnDqf
HzGcczQPHGwzPzGHRctWlvRgtvJlvNlJvRNj
cFNCFdvcCHvFBCZcwBfRSpttGhDmCghGShmSRt
QjLnTTzQVzTTnLMqhDgPhGDDSjGPrgSh
TTJGnJJlLQdNWZWJNBJZ
WHBpHcMDZHLDbHLtGCnmRmLNGmRqvsCC
PzTFzPPTJzrSbGsvnmqfsqfqRz
dJSQQdVFQgjTrjQPWcWHbBVcZVccZtWp
JDtnRtJzNzTTNlHc
rQPJFrLPGMMwrGPFwjFMVLjSTWHdWBTdSWdWZlcWTHlZ
MGFrCvLLwrwPFVVhvLMGGtnqfsmRJgDnqbRgfbqmfC
jnTtFjcSSvctJjznzvFmpqqPMqQDRVpRqPzqQzVQ
bhHBfrWpfHsfGNllRrRCPqDCqPqq
gsGZZpbWgbwHWGNgfZNjvLSTTjtnTgjSSSSJmL
RLQNdVNnRQdQHVVLGpspNqvtsqptqpTtsp
MlRWwbRBBFMFjCTFTTFDvj
WmlWBmBwwmrndnmLRHRQ
WnftJWlfnWSHGCjWWWSCFqFGBDqBwMcDmmMmGmqD
pTNhpTrPhhhRPzbhrppLhThLgqDmwccwqPBmMMqnFBcwwmBB
ZrhQTpzdjSVVtnvZ
jgtnJtBjtlTdJBZJVQBngQGDCGWpPGCcPWCbWdWMbcpP
wHstNNttSHPDmHcMCp
rrFFSvLLNfsFtNSqrtfrhsNjjVTBVgVvnTBvTQvjTgjVZz
qhZwlqFqFwlJwrDHqHcDvgcNzv
RCCTQmjCbQTBtRTbjJRDpBrgDHPPpPDvHccDPc
VmjVWstQJhlJlGVJ
GggpGwZmgvgJMvbJFQQDbDFbBbFCQDCW
rtrLzNLtNSPnNqDSQDcQCWlqBQ
VtzdRPtztLtVRtZmmMTRwCGZpMwp
vtvqjsCqtshfjcWFHWGjGFJj
zGrnzDDMpPcTHcSTVTJP
DbDwMbZRDrZdBBnMznZMGZDfwtlgQhsqCttClsqvsLfCff
JLzLtLsrzsQdvrWRwMHwcc
qPmCTzlPjljjFTZmWwcwwvHMMRWwHvMm
PFqZnVCqTCNjCzNgQsbGBLzLQQ
CBnppDHllVpPCBshBHpjDTSmZcSrfwvmJcDDTJfw
dFRLdLFQzNSTBTSNmBJv
FzFFzRMBFWtQlPlsjjPVMnhC
CVCfwnfdVvBdBbTNTT
LNzsHPNWsDjTZqDHqT
PtLgQsGQLSzWLstPgGWcgQLSNrpplffrnrNhpVCwlGVlrwMn
jPPVqPsHffzVnHzvSgMcCJGGMSVCll
pdbpDpBLNmNNppJgcvgSllGjDSGQ
hrbBwLpjLhhhNZLhNrhZZLHzfsztFzzsrtHfRFnFfRHf
tdjBdbmSfdHBdHHmZlWjFrnlWQlqvMFvFn
pDNDJhLhPVPLLLJphJLwNcwnQTcWWTqTrqMWTZvqMrlvFM
gpVLhNwpgZJCghCLDNwphgmsBdzHHHmSstmfggzdbR
TfMpfMBVftLMDBSjWDHgzHbgwLgHHvdzggzs
QJnZcFFnZRHdHjJvwgdg
RjjRRnmNmmZNjZqZnQcVffBrWqVTqrtffTSTVV
fZTdTVcVjrjdBzdTnGtgnnGSHHNFGn
thMWPtPMslmGnWnNnS
thvbMvQMRphhLCjrzBjZVdcQfC
MpmgZFgMGdrFrBCVnJ
JsbJlTTlvLQbVffRRvBBRVjd
LWlbhHlJhLTJmmGcMMHNmNgN
bhvmhPrbhqNqQRRGzQjVvvRL
wTwBZDBTwwggfnngcDfdsVVFQCdzCzDVRsFdQs
pngWMcgzMgpZWncnMpWNrbNHrNbmHhltWlbl
nPndBjLPscWSccBVGnScsSzMdhMppMthdMgpMgrzvhhp
CCFTFDwqZqCCJmhvpDzztVzDNztp
qQFJTbRVbmCfwTwfmnnssWBGnLnWlRLSGn
JRlJDSvLRRCdvmDSvdlbZNVBSWZGNgWsZGNgZBVs
QrjPMqMnLzzjLjFnNNgBpsgtgGGGVZ
hrjrFqjqFrQfMHPhQzDvvCLJdwwwmvbJbwDH
HDGrDDDpNsGQNdZQ
jpjgtgjSjpjllfZZtZsvNdtshqqq
cbgMfjclWTJcMwjWJfpfmVPLPBnVBHnmVbnmLBbD
rPrMZNsNrsvrwqvFFFdgQWNzLJJzRW
pStppStHmcmHpgVSllVcbVbWWDdLFhdbzdRRFhJFLLRF
cltCHmCBmtSlgjpllgGvTwPZPMfZvPsCMCwZvC
FRQQMdlFMDWRFQRQMQQDWdFbSSSVJSBbJSlBVVBnPJnzJL
rsftPfhsrgwznSzzHSLgJG
fhNsjrjhvsTTvdjcCRMRMRPcCW
tRtJttHFrjtDQHHBQMMBgMBSghhZQb
vqWPLpLvqrmPdmqwvqfmPhNBBBlSnbwbgnlnlhNSZZ
pGpdfzLLspddmqsqPvfvvPpGTVcJJCDRjHrccRtDjcRDFD
GJMHCdTMWJRhSTlhhSPllt
fVvqpfBFrqvqNzzgVDFrpDPmSVtQSlSmhjwltlRtmVhn
pzpBNDBzfDrsNsDRJJRdCssMLdLZWZ
hFfvWWvdpCwwcwFhphpcZCMmllHLfmbQlbrQLBJmGgQrQm
nVSNGjGzzSVNTsjzSJrbSrHBSHlrrmQHJB
PttTNsTRVnNjNqRnzRzRWCCCcpMCWGPMwwFZvFwW
DvZbFnDDsqDBwwRQgNBm
HhWpWWRMWChlChdHLlGlGtQtggSNPSSpgPmNgPJQtw
CMlWGMhhCVHlLCdHTHdrGHdbzjVqnzcvqqjRjFbbzbFFqR
ZZgCNqqBmjZsNgZCqJgNBdrLFHbBrWlPdHWFbPnHPW
TVwTDfzDwSDzmcSTcrzdbllnHPHdFlLzbF
tvDQwVtVvDVmtRsNMgRpJg
BBpDCpNJnmnpnDDmDGGmtTzqHcGTvTTjTbGjHLVcLb
swNNhPwwHzTVwwHw
rPRlPRhSQmmBDpnNfl
pbRhffPzcPDmfcNTpVBLpBjMGBGjZLLg
ssrCsqrszgJjZMqZLQ
SzCwnsllCrssvdrvwzPmDmPPbFRbSThPTPDD
QWLfcfczQQpcDTpLPfdZRRvRRVqbFWvZbvtqvv
NsGGJBhCmNdZVqsbdssZ
rMwwwBBJMrdzPfQMpzMnLQ
rdtCQhrCtQQprtTWQCHFjPgGBPdFPgvBqRRPqB
lsVsSnVSbLmmgBcgTLTFGgvq
wTTDTszsbzMDppJrJhDQ
ZlmsGLBVCBBZFCFFHqcHVvQhqVQSSHpH
dbbTRMrRwwzDfrTbFtMvcptvHFQQpqtc
gdJTDWgfwDwTwmgmNPnNsgFBlZ
PWhWhGFzzzrLdHCPccbJQJcHPD
NRpVTpTgRWVlHJNHMcHQMb
pSRSpVSZWRSTZjgTRTWnFLdZLrrndhdzZvtvzn
LgctLgVBVLhlPjqRhBLVcVlhbDDcGnNGfwCrbNDnrGbGCJNw
HmppHMWWmQmMqZZHWQrDDfDCffJrDGJrCb
qpWZsZZZMZWTLPhTRgTtThRP
hfhQfFQWzBfhfTQdmzdLDtDjtvHLjt
qsgpcqMNRmgpqsCwpCmZDvjwvdddHZHvZDtrrd
SgmNmqScbTSJbhJQ
dvMTQvTnZJsrQdbbSvMVZMblDwlflfDGgwwHcfGjPfjjrG
FqBLpBpFpFzRzqNFmgjGlDRHcwPPGwgcgs
tLNtWshsLLqWMJhTQVVbhvJd
bgZLMZgzbbLCcPCbMZbcNMgBqSTqSWVtSzvvTTBTqBvRBW
FhQpJQnGrlhGlrnTqRtTRJqSwDwtVR
FqlnnFnqFHnGHHdNZdbZbCNMdPLMPb
HHFnbftcfnfbbTbTnHTNVZZzJlPQlFrFzVJFZsdr
mvpGCBgwqCvLCqvMQWWzsQQWlPzwzsrV
hpGSGgqSvqbHcnhfVfct
lGVrnHsGcnVHzscrlGjHcrHqqWPlJCPJClTLLqCSPLPdqS
fRbwbtMQZtMMRFMSqfJTTWCTJPJCmd
ggdvtvdbVVGnpDGg
BnBjTcbnvhjjlMnNJJfnDnQDGdNDfP
qwFqVSWwqLpWFmFVCSqFpDDCJNJRQTRfRDGPfdfDQN
zwHwWVVWWFSqqwWTLqzzztHMvBhlcghblMlcttMllh
PFFNPNPmlFllbctNLmcjBstrsVrQHJSSHHSnnB
fddfDhdwGhTWWTDMwMggssjsjndsBsjsnSrVqSVV
MCvvTWvRMwCvGPpzCcmbplpCVC
thTqlPPTNbGNhGdqRRhRrNtFWnDnvvFZDpnFvfQDZtvWvv
HcMzVcVVcHrgHzcMcmmgfQvFQnMjnWDjfnvjQFfQ
VSmHJLHBJrTrJTlT
NjnsHjLLjNRddNdBFBSR
ftsbqfDcDqsrDtqsfSVBhJVFJgdBRVFS
wvDqwtDlsDDczjzjHvLzLQQM
qDwstwDtRfpJfVhBVZBMvnlRvv
zSFzQHFWdgZBVTZhTzrp
NHdggjGjWHQFPWHNPPbpJfPDtCwCtqDqJfbt
pvnbqHvnTvlCCpjsBsMGBGWWPp
RJSJhJCRVJmJwScrhSJdfwFsBGhZBjhGFFFFGgFPGhZW
cdRrdmwtfcdSmLtcSCQlvQNqQTlqqvtTlv
rnSlSrgWjVGpTTRhSffpRd
HtgHPsNNgNHszPcTBphMdhHhBcTc
JNNbZPZZsszNmtDbPgsmJlwFvWVnCwrlmWlnjnGvCC
WrVBVgVGGQCrSTTqvVjDqDjv
FmwRRwwRQhhLFMjFMzdqSSzS
RcJtbnnLtQWrGHcfrP
vpzssjmVjVZWNZzzQwtQwccpQhgtQCct
qDdfLMnMrrTbBLqTqltlTfbGQnghgRwggGgRnhhccCJJcG
MtdLfSSSddMftlrjjzsSWVSjFvjNvs
qTRPpRPzJglzGJzpGRHWHljwDtbwffjtbhjfwNfHmwwf
SZLVdsvrrdFdBcdZvsBdDCNtbmftNwfNbNhCNvtz
MLzzddLsQRppRlQGPq
PDDpdJgtpppGgttgdGdgJFzLjVcvVnnCTrVrRPTLvwnTTC
ZSbHBsSNlZcsfNnnvRrnVjrHwvCC
NmSmsfsfhmzcDmctJW
NbrLfrrLqpqWQHtBzbFttJgcgB
CmwjPPjjjShPvljwvwwjPBFttBtcHzFJcHTRHJRRmT
CCljjDGhvPCVdVSCdPvrrNfnnQsGqMpqqMqnFW
bdPdbcDZlddsZbHjrrgrmZmCZhCGjv
BffLfLVFVMMBRfwMpfzhFGFhGWvWvrhNvvNj
RMBpRSnffBJjSbJqdPHsDcbqtl
BgwGwDDZttDDTNND
WzNNnFRWFtTFlFsh
WJjPpPqqzWRbrqnNqvVvgvvdcBwgdrVBZG
FFbMVMFPvJppgvcvrZMjHlCJWHmHHBlqhCmqChCl
RGQVdVVLnLsQnQnnqWBlBmDRBDWWlhBD
SftLzQndGfVgFfjvvM
npvLlFLTWWqdLnJCmBmmpjQjjmjB
tfgDwzwVVVVtgtrsJtrbjSPQjQmjNBCNBNhPHDHC
ggVzVtMRgzMrvJLqFnnRnnRT
gZFZssWgNZTDwHDWzsFwWDQMMpqqpBPMjFtMPSQFqqqM
vrmvhdnVvQpftStnMN
JCdLddhhdJdcCdrrmCGhlgNsWDWDwWsgwHgHLZHW
vSsSGjSPvjvRSGpFprFbqFpppRfp
ZdmlndtBZbwrwfpWFn
JmdHdBBHtgllZldBhJZldLLBjPVQTfvGPNzQQSjjzPgTGNTs
TjTjBjVrTsLRRrMBsMMgzLqGGqgQHQdCQGgpgd
nbZcmNnPNcbNftvhlhZpgQgCqdSpgCHCqPFzSH
WfcNvtmmNmQlvNcbsWWjMwMVMRDVMDJM
hHHnfZSwHDgHcfclSGSnvrnvBCvWWntvzvzbWWVq
dTJTmspFTsFdRRLvtvLzvvVqtPVtrb
VFMNFpRJNTppTpsJVRcMGgfGfgZwghgGfcGh
lLGvwsMJLCMVnTrCrVdHRd
tbzqtDNNBpNWBtqzfRrFFnrVTTdrQVSVGp
tztfzmfzzPDzgWNNBbhGMlJLsvhJJjGJhGmM
rHrVJQVQVJLggDQQLbTvdCCSTdWLLLbCbS
pNtnwPthmZGRpmPFtqbMSzqffFSdTvbSzW
GpvvshwtmwsZDljjssHjVBVj
SmhJdtJhhzQSrzVhtQbtBRNfnFNSnDNGRfFGGMgR
lHwqPjqwTjLHCWLvPpvNrNMvnNGNfNGNBffGRN
lCrPTrwpPZWlqPlqpWWqZjsmJzbzVtVhhdsJcQdddZVJ
QqpCWHdQdVQlWcQCqcfRjnZZZPDnSPqPhhqZ
tmmzgWGgwJwwStSZZDRnZssR
GbFbLLvgmMMwGgmLCrppQrWVlWrFTHHd
qdqCgSVdVSVqfwsdZhpJspZsph
RjZBbmRlrlmmJwLNNNhLpwhB
vZlRrtTZCzCMfSPT
JBjhCNwjrlJlHJJRsscZrTcvLLgTsLPP
dDztmntCSgbLgqTzgc
fGVWnSMFtVGMNNNQllBjWHJC
dSDhVVdVZtnSgHQGThQvFNQQqF
LcfLRpMpcBpbrJfsbsscBNWRNPRGHvqPdTGPGqPWFH
spmrCcrdJJpLLmcmLLLDlzSzCCjVwZVtgnSZzn
ZJtgPTHtZPZQGbtNzzprVWWVrbrpCD
BRlfcRmBhSMVBqSVfBvNWrDrjWCjjzprCDCl
LfMRSmfqfSLcnnMqVSfccnhZwJFHZFTGZQGFLggwZTZGPJ
BChWddRRRcfmDbfhDP
MgpMFFsvMfGwvLgPjQPzPPmDcztDtw
NFgJpqvpLgqFnWWVNSfnNSCR
zMMMRmMfJpfhpzQJLMVtjtjPntgBtlZlVgJP
SdNbZvZbvbHTNbZbSWTdrTVBglBDlWBjDPDgntPqBDPt
rrNcrFwNdSrfzwMzZMLQQs
JPmCSfHTGJdTCbHgpgqLgRhghhffhg
ZWSSFVSVFQghQvwpphgh
lsDtZjVMMSdCNdbGCbjb
PBQPvDvVVRvQDqLDzJTlzwjz
tGcZTcdgGcncdrFrsTjzJSJqJqqwHSzzSZwq
CgtgdFgcFCMnMgsGFGGQWPQpQTCBvbNpNVVWVT
FHVFWMHMgVhnLWWMpnppfcdZNcPplnfn
RSvSCBSqGgDRjqCpPlPpppTpPjlcNP
zRzsGgJDqJwLVWVFwM
ThhWhNthVWTWqbWbFWbTdBtWSdMlHSlGlCGCdsCMClmnSlMn
DPPpvvfDHfLgDHvzpvPDsssMsmmzsMcClScMMcGG
rgPLHHJJHgZfvvZQQZfrpfFqBBwFBTNTBNBwtthQwVqt
JJgSWDSmSDQCFrhbRLSwLS
VznqzVNsMsZLdqslbRChtbHdHRrwHb
LVfNLMsLTmWDpBpf
cbTsnNpcnnchllFQlMRgJhRP
WddmdMVSBMWSBWjwCJVCPRwPFCQRRC
DWSSfjdSrTpDnHHMbZ
fgsVqqwQQtHhCrDfJH
pvbnBZWBbvWbTdthrJbDmqrmHq
TvZSNSNNSvFMBpqpnLnTBZBFGQwlQFggcFzcVGRlswsRll
zfMcQHzPtRNvlllc
BLnMhbZMLJLNNVtCdNgZgt
BJGFpqMBhBLLMqnwBhbrbhLssjFzssjfDzsmFmjmQFQPjT
JPBJPnpBFrqBJHtjlCjHJcCthM
wQZggQWQGfZFVmmGfDRjlvvNcvlNDhcNttlctt
SfmWfwVFwVGZWQVGSTdTbBpTPSqBbLnnrn
RJqBRJbqpqqJGvqHMmcfczfcjvHQfm
llgVnSWSlsssTnlWjhTcsZMcZcZMZMcccMNmcH
TnFhhllnWCnVCTllLnhhVSrbDDPrdpjRRqjBPRBBpbFJ
mRwRRNDjNTqwDNjNnNRTsQLcQWpQWZJLlLpQWs
PMFGCSzzgbBVzCGShVQZcgWsQLLftttQtlZZ
SlGVldCGGbBPMhPCVSBrNNdjRqjDrNmDnmrRwN
mqGGqGHnqGBCMrnGCbbbLgTTFFNNghHNTj
SdRfcsDPPcDdRzWPWltSlscwTSbShhgpQhgbFLbTQFjwhN
DPWWZzzztsDDtfzlscsPdcWZnVMNVqqGJnBrVqCrMrVvZnBJ
ZgglFCrrrlrWCJswHmwRVmFSwSsP
zhzqBLcjjnpzMzjhTtcqnVGbwssVRmqbHNPbwPsVNH
ftBjzLtptRWdvZlQQZQf
nGpsMncVRMGSnfsBllZdppwrTljZrQ
gcgHmtbCthHWhwBFBWZBlWlWrd
bCDDqHhcqbbtqcqtvJMzsGRsvVfPsfnzJV
TclPvSGZsPZRjhjWDgjp
JtnwHFtJqtwfQfgWgRWhdhjtgdRM
JBwnHwgFFqVJrsGmPvNTPsVvSN
ZJnfZNnDNZJLzNntDtDNNzNWTVBPrrvRRGdBcVRfPPcvfdMr
CFgjFmggQSQQmSggVMMvRdTvBVRjrdrc
mbsqQFqFgwwmgmSbwQWWLDWzpLcLnzZzLbLL
PnwSFSLSTwbbHdtstW
RrDZVVfJNZCmDCfVDVlblZHbddtHScbWbMjt
NmzqhzCCqmzffhCCqrhhLLnPvpnTPPgpGTTBSL
ShhfLSDDFMPQddpMrDgNbjzffqqqzgcjbqZR
sCstmwJwVBtmTltVmTVbRbcbcRvqvrZvBRvZbR
VwCnwnVrrrWShWPHHDdQFL
pbpDpWjZMmFCmmmb
jTjtJLJgJncCFmnJFC
LvhvhTQhBSdRNtLNsSszlGrHSGjZDlGf
JrhvTNJJhhCrtVtcrNLwDBSBwqzDwQVbBLQS
RnCgHmHHGMdPsGMfDlDqlSQbQnQQDbzD
RdPMPsmWHmjfMffPcCWrptcprpFTFrFp

6
2022/day03/test Normal file
View file

@ -0,0 +1,6 @@
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw

4
2022/day04/day04.bqn Normal file
View file

@ -0,0 +1,4 @@
str•Import"../bqn-libs/strings.bqn"
in22>str.ToNats¨•FLines•args
•Show +´2|+´˘(×-)˝˘in
•Show +´(´(´00)¨())˘in

1000
2022/day04/input Normal file

File diff suppressed because it is too large Load diff

6
2022/day04/test Normal file
View file

@ -0,0 +1,6 @@
2-4,6-8
2-3,4-5
5-7,7-9
2-8,3-7
6-6,4-6
2-6,4-8

22
2022/day05/day05.bqn Normal file
View file

@ -0,0 +1,22 @@
str•Import"../bqn-libs/strings.bqn"
stacksproc(@+210)str.Split•FChars•args
stacks¯1>(@+10)str.Split stacks
stacks' '/¨<˘((stacks)0100)/stacks
proc>str.ToNats¨¯1(@+10)str.Split proc
# •Show stacks
Move{
stacks𝕊n,x,y:
xy ¯1+
cratesnxstacks
stacks(n)(x)stacks
stacks(crates)(y)stacks;
𝕨𝕊x,y: 𝕨𝕊1,x,y
}
stacks1 (<stacks) Move` <˘(˘/1˘)proc
•Out ´¨¯1stacks1
stacks2 (<stacks) Move` <˘proc
•Out ´¨¯1stacks2

513
2022/day05/input Normal file
View file

@ -0,0 +1,513 @@
[B] [L] [S]
[Q] [J] [C] [W] [F]
[F] [T] [B] [D] [P] [P]
[S] [J] [Z] [T] [B] [C] [H]
[L] [H] [H] [Z] [G] [Z] [G] [R]
[R] [H] [D] [R] [F] [C] [V] [Q] [T]
[C] [J] [M] [G] [P] [H] [N] [J] [D]
[H] [B] [R] [S] [R] [T] [S] [R] [L]
1 2 3 4 5 6 7 8 9
move 8 from 7 to 1
move 9 from 1 to 9
move 4 from 5 to 4
move 4 from 6 to 1
move 3 from 8 to 5
move 6 from 5 to 9
move 1 from 5 to 1
move 4 from 4 to 9
move 7 from 3 to 7
move 6 from 7 to 3
move 1 from 8 to 7
move 2 from 7 to 6
move 1 from 8 to 9
move 1 from 6 to 3
move 4 from 3 to 5
move 5 from 1 to 3
move 1 from 1 to 8
move 2 from 3 to 4
move 1 from 4 to 1
move 7 from 9 to 2
move 1 from 6 to 3
move 2 from 1 to 9
move 20 from 9 to 7
move 6 from 4 to 9
move 1 from 2 to 9
move 6 from 9 to 4
move 1 from 4 to 6
move 1 from 8 to 6
move 1 from 4 to 7
move 5 from 2 to 3
move 2 from 6 to 4
move 3 from 9 to 5
move 5 from 3 to 5
move 3 from 3 to 8
move 3 from 5 to 6
move 1 from 9 to 8
move 5 from 4 to 5
move 3 from 4 to 9
move 1 from 8 to 2
move 2 from 8 to 2
move 11 from 5 to 6
move 16 from 7 to 1
move 2 from 1 to 7
move 14 from 6 to 1
move 11 from 1 to 6
move 2 from 1 to 4
move 4 from 3 to 4
move 9 from 2 to 4
move 2 from 4 to 8
move 2 from 5 to 3
move 9 from 4 to 7
move 2 from 3 to 2
move 1 from 2 to 7
move 1 from 8 to 4
move 4 from 1 to 4
move 1 from 9 to 1
move 7 from 4 to 7
move 2 from 6 to 5
move 1 from 8 to 6
move 1 from 4 to 2
move 10 from 1 to 6
move 5 from 7 to 3
move 1 from 4 to 7
move 2 from 1 to 2
move 2 from 2 to 4
move 4 from 3 to 4
move 18 from 7 to 6
move 6 from 6 to 4
move 1 from 7 to 4
move 1 from 7 to 6
move 11 from 4 to 5
move 14 from 5 to 9
move 1 from 8 to 7
move 8 from 6 to 2
move 2 from 4 to 5
move 7 from 9 to 1
move 6 from 9 to 7
move 5 from 1 to 8
move 1 from 3 to 6
move 10 from 6 to 3
move 1 from 9 to 6
move 1 from 5 to 4
move 4 from 3 to 8
move 1 from 5 to 9
move 9 from 2 to 3
move 1 from 9 to 5
move 4 from 8 to 4
move 1 from 5 to 3
move 5 from 8 to 7
move 5 from 7 to 2
move 3 from 4 to 1
move 8 from 6 to 5
move 1 from 7 to 9
move 4 from 1 to 3
move 2 from 4 to 6
move 5 from 5 to 2
move 4 from 6 to 9
move 1 from 1 to 2
move 1 from 5 to 6
move 7 from 2 to 8
move 5 from 6 to 8
move 4 from 7 to 9
move 15 from 3 to 9
move 1 from 7 to 3
move 1 from 5 to 3
move 6 from 2 to 6
move 1 from 5 to 2
move 2 from 3 to 9
move 1 from 6 to 8
move 5 from 8 to 9
move 2 from 3 to 8
move 3 from 3 to 6
move 11 from 9 to 4
move 1 from 2 to 1
move 2 from 8 to 4
move 1 from 1 to 4
move 7 from 4 to 7
move 9 from 6 to 3
move 4 from 7 to 8
move 4 from 7 to 6
move 19 from 9 to 4
move 7 from 8 to 5
move 5 from 3 to 6
move 6 from 6 to 9
move 3 from 3 to 5
move 1 from 3 to 9
move 8 from 4 to 5
move 2 from 9 to 6
move 3 from 8 to 2
move 1 from 8 to 4
move 1 from 2 to 5
move 19 from 4 to 1
move 2 from 5 to 7
move 2 from 2 to 4
move 13 from 5 to 2
move 1 from 5 to 1
move 2 from 6 to 9
move 1 from 8 to 7
move 9 from 9 to 3
move 2 from 3 to 8
move 1 from 4 to 2
move 5 from 6 to 7
move 1 from 4 to 6
move 2 from 8 to 7
move 7 from 1 to 5
move 1 from 6 to 7
move 10 from 1 to 8
move 1 from 1 to 3
move 1 from 1 to 2
move 6 from 5 to 3
move 4 from 5 to 3
move 5 from 7 to 1
move 3 from 1 to 2
move 4 from 7 to 5
move 8 from 3 to 6
move 2 from 1 to 7
move 4 from 5 to 8
move 7 from 3 to 5
move 3 from 7 to 2
move 1 from 7 to 3
move 12 from 2 to 8
move 23 from 8 to 2
move 16 from 2 to 6
move 1 from 9 to 6
move 7 from 5 to 7
move 7 from 2 to 4
move 2 from 3 to 8
move 1 from 1 to 9
move 5 from 8 to 1
move 2 from 3 to 9
move 2 from 7 to 1
move 4 from 1 to 3
move 4 from 7 to 2
move 2 from 1 to 4
move 11 from 2 to 9
move 3 from 3 to 4
move 1 from 9 to 1
move 2 from 2 to 7
move 4 from 4 to 8
move 2 from 9 to 5
move 2 from 5 to 7
move 4 from 4 to 6
move 1 from 3 to 8
move 1 from 9 to 8
move 4 from 4 to 2
move 2 from 1 to 3
move 1 from 8 to 4
move 2 from 3 to 5
move 3 from 9 to 7
move 2 from 8 to 9
move 1 from 9 to 6
move 2 from 7 to 3
move 2 from 8 to 1
move 1 from 4 to 9
move 18 from 6 to 2
move 1 from 6 to 5
move 1 from 5 to 9
move 18 from 2 to 3
move 1 from 8 to 7
move 2 from 5 to 9
move 1 from 1 to 4
move 3 from 2 to 1
move 9 from 9 to 4
move 7 from 4 to 6
move 2 from 7 to 3
move 2 from 4 to 9
move 7 from 6 to 7
move 3 from 7 to 2
move 7 from 6 to 3
move 2 from 6 to 9
move 24 from 3 to 9
move 2 from 6 to 8
move 1 from 4 to 2
move 2 from 8 to 5
move 31 from 9 to 3
move 6 from 7 to 4
move 35 from 3 to 7
move 1 from 1 to 8
move 1 from 5 to 7
move 1 from 5 to 4
move 1 from 3 to 9
move 1 from 8 to 2
move 3 from 1 to 7
move 7 from 4 to 5
move 1 from 9 to 8
move 4 from 5 to 6
move 2 from 5 to 2
move 6 from 2 to 5
move 2 from 5 to 7
move 2 from 2 to 1
move 2 from 5 to 4
move 1 from 8 to 4
move 3 from 4 to 6
move 4 from 6 to 7
move 1 from 5 to 2
move 2 from 6 to 9
move 1 from 6 to 4
move 1 from 4 to 8
move 2 from 9 to 6
move 1 from 8 to 9
move 34 from 7 to 9
move 6 from 7 to 3
move 1 from 7 to 2
move 1 from 5 to 8
move 1 from 8 to 6
move 6 from 7 to 4
move 1 from 7 to 3
move 7 from 3 to 5
move 6 from 4 to 6
move 31 from 9 to 1
move 3 from 5 to 7
move 24 from 1 to 3
move 1 from 2 to 4
move 3 from 9 to 1
move 14 from 3 to 5
move 1 from 4 to 3
move 1 from 9 to 7
move 8 from 3 to 7
move 1 from 2 to 9
move 7 from 1 to 5
move 3 from 6 to 8
move 3 from 6 to 1
move 1 from 1 to 3
move 4 from 3 to 2
move 4 from 2 to 3
move 2 from 5 to 1
move 9 from 7 to 4
move 1 from 6 to 5
move 1 from 1 to 7
move 3 from 8 to 9
move 5 from 4 to 2
move 3 from 2 to 3
move 1 from 2 to 3
move 2 from 4 to 1
move 2 from 9 to 4
move 1 from 9 to 3
move 1 from 6 to 1
move 1 from 9 to 6
move 25 from 5 to 4
move 4 from 1 to 9
move 2 from 3 to 7
move 2 from 6 to 9
move 2 from 9 to 5
move 6 from 7 to 1
move 5 from 3 to 6
move 10 from 4 to 3
move 10 from 4 to 8
move 2 from 4 to 2
move 5 from 1 to 9
move 2 from 6 to 4
move 6 from 9 to 6
move 7 from 6 to 4
move 3 from 9 to 4
move 3 from 2 to 4
move 4 from 3 to 8
move 2 from 5 to 3
move 10 from 4 to 9
move 4 from 9 to 7
move 5 from 9 to 5
move 4 from 5 to 1
move 9 from 4 to 6
move 10 from 1 to 3
move 1 from 5 to 4
move 3 from 4 to 5
move 2 from 5 to 7
move 1 from 7 to 3
move 1 from 6 to 9
move 11 from 8 to 6
move 14 from 6 to 5
move 1 from 4 to 7
move 7 from 5 to 3
move 3 from 5 to 4
move 2 from 9 to 5
move 2 from 4 to 3
move 2 from 7 to 4
move 11 from 3 to 9
move 2 from 8 to 2
move 2 from 2 to 3
move 1 from 8 to 2
move 1 from 2 to 9
move 3 from 4 to 5
move 2 from 6 to 9
move 1 from 1 to 8
move 10 from 9 to 7
move 2 from 9 to 3
move 23 from 3 to 9
move 4 from 6 to 4
move 9 from 5 to 6
move 1 from 5 to 3
move 5 from 6 to 7
move 1 from 1 to 7
move 1 from 3 to 9
move 4 from 6 to 7
move 1 from 8 to 7
move 1 from 7 to 5
move 1 from 5 to 1
move 12 from 7 to 6
move 9 from 9 to 3
move 6 from 6 to 4
move 8 from 7 to 3
move 3 from 7 to 4
move 6 from 3 to 1
move 10 from 4 to 8
move 10 from 8 to 7
move 2 from 3 to 7
move 9 from 3 to 8
move 2 from 6 to 3
move 10 from 7 to 1
move 3 from 4 to 6
move 5 from 8 to 5
move 3 from 5 to 7
move 1 from 3 to 2
move 1 from 2 to 6
move 6 from 9 to 1
move 12 from 1 to 3
move 3 from 6 to 9
move 3 from 1 to 7
move 1 from 3 to 2
move 7 from 1 to 7
move 1 from 2 to 7
move 2 from 6 to 4
move 1 from 4 to 5
move 3 from 8 to 7
move 2 from 6 to 3
move 2 from 6 to 1
move 1 from 3 to 8
move 5 from 3 to 4
move 2 from 8 to 5
move 14 from 7 to 4
move 1 from 3 to 2
move 1 from 3 to 7
move 7 from 7 to 4
move 2 from 5 to 3
move 2 from 1 to 4
move 9 from 4 to 6
move 1 from 1 to 2
move 4 from 9 to 4
move 8 from 9 to 3
move 2 from 2 to 7
move 13 from 4 to 8
move 4 from 4 to 1
move 2 from 7 to 6
move 12 from 3 to 2
move 11 from 2 to 9
move 6 from 4 to 9
move 18 from 9 to 4
move 2 from 1 to 6
move 6 from 8 to 1
move 13 from 6 to 5
move 8 from 4 to 5
move 1 from 2 to 9
move 8 from 1 to 4
move 7 from 4 to 8
move 4 from 3 to 5
move 10 from 8 to 5
move 13 from 5 to 8
move 12 from 4 to 5
move 2 from 9 to 8
move 29 from 5 to 9
move 24 from 9 to 2
move 23 from 2 to 4
move 5 from 9 to 2
move 7 from 5 to 7
move 1 from 5 to 1
move 7 from 4 to 8
move 14 from 8 to 1
move 5 from 2 to 6
move 16 from 4 to 7
move 8 from 1 to 6
move 1 from 2 to 8
move 20 from 7 to 6
move 11 from 6 to 4
move 3 from 1 to 5
move 3 from 4 to 3
move 8 from 4 to 9
move 8 from 6 to 1
move 2 from 1 to 4
move 3 from 5 to 2
move 12 from 8 to 2
move 1 from 7 to 1
move 1 from 3 to 5
move 1 from 7 to 8
move 1 from 7 to 3
move 12 from 2 to 8
move 13 from 6 to 4
move 2 from 1 to 9
move 3 from 2 to 6
move 3 from 9 to 7
move 5 from 9 to 1
move 4 from 6 to 4
move 2 from 3 to 6
move 1 from 5 to 9
move 1 from 6 to 7
move 9 from 1 to 5
move 11 from 8 to 3
move 1 from 6 to 8
move 3 from 7 to 1
move 1 from 8 to 7
move 2 from 8 to 9
move 7 from 1 to 2
move 17 from 4 to 7
move 1 from 8 to 6
move 4 from 7 to 2
move 4 from 9 to 7
move 4 from 2 to 3
move 1 from 1 to 4
move 2 from 4 to 3
move 9 from 5 to 4
move 1 from 6 to 8
move 6 from 2 to 1
move 5 from 1 to 9
move 9 from 4 to 3
move 1 from 4 to 6
move 2 from 9 to 7
move 1 from 1 to 5
move 1 from 2 to 7
move 1 from 8 to 9
move 1 from 6 to 8
move 1 from 5 to 4
move 1 from 8 to 7
move 23 from 3 to 7
move 36 from 7 to 6
move 33 from 6 to 1
move 1 from 4 to 8
move 7 from 1 to 5
move 1 from 8 to 1
move 3 from 7 to 2
move 24 from 1 to 3
move 7 from 7 to 3
move 3 from 5 to 1
move 4 from 5 to 3
move 1 from 9 to 8
move 2 from 9 to 6
move 1 from 8 to 5
move 3 from 2 to 5
move 30 from 3 to 5
move 1 from 6 to 7
move 6 from 1 to 8
move 7 from 3 to 2
move 1 from 7 to 5
move 2 from 3 to 2
move 2 from 6 to 8
move 1 from 6 to 1
move 7 from 5 to 8
move 8 from 8 to 7
move 20 from 5 to 8
move 2 from 9 to 7
move 8 from 2 to 1
move 7 from 7 to 3
move 1 from 2 to 1
move 3 from 7 to 9
move 4 from 8 to 3
move 5 from 5 to 6
move 1 from 5 to 9
move 4 from 9 to 4
move 1 from 5 to 9
move 2 from 3 to 6
move 1 from 5 to 8
move 7 from 6 to 3
move 1 from 4 to 1
move 7 from 3 to 2
move 3 from 3 to 5
move 2 from 4 to 7

9
2022/day05/test Normal file
View file

@ -0,0 +1,9 @@
[D]
[N] [C]
[Z] [M] [P]
1 2 3
move 1 from 2 to 1
move 3 from 1 to 3
move 2 from 2 to 1
move 1 from 1 to 2

3
2022/day06/day06.bqn Normal file
View file

@ -0,0 +1,3 @@
F{𝕨+1˘𝕨𝕩}
•Show 4 F •args
•Show 14 F •args

4
2022/day06/day06.py Normal file
View file

@ -0,0 +1,4 @@
f = lambda n, t: next(i+n for i in range(len(t)-n) if len(set(t[i:i+n])) == n)
inp = open("input").read()
print(f(4, inp))
print(f(14, inp))

1
2022/day06/input Normal file
View file

@ -0,0 +1 @@
czfztznzpnpqpfftcftcchfhjjsqsvvffhwfhhqnhqqmlldpdcdnnfvvmpmzpmmrsrwssqbsbsmmdjdssfqfllclcdczdccppvzvtzznpnfpnnljnnpcphpjprrdhddsgdssbqqghqqmgqgccjffdtdcdmdjdcctltdddvhdhfhnnrffwjfjpjnpnpddhbbrrflrldlqlrlqqwssqsrswrrrmcmrcrfrwfwpfpdfppslsjsjhhjjqhqwwzzhttcvvzrrrnlrlmljlrjrsshwwndnnzwzpzcpcllfrrsjsnjncjcvcllrhrbhhdsdqdpqpffmppdzztggvpvnvwvpvdvqddznzrzppznnpnhhwjjrpjpvvqvpvrvfvjvzjvzjzqzlqqwsqqrsrprqpqmmbhbffbnnlzzhszhznnhzhmzzfhflfccvvbnbtnnlcnndjjcvjjshhssfjfcjjpzpqpmmdqmqmmbbldlwwvdwvddznncwcqwcwdwbdwwgzzzqvqqlqlttbppgtptlldldblbbjcbcttbpbvvhlhggghvvqsshjhjjzqzwwcggsfgsgjjgbjgbbgllhhmqmggmsggzszvvzggdngnznlzlrlprpjpgjgvgppfhhbqqcddvvbhbqqmlmsssbbszzfdzzznssjllwlplttdgtdttsmspmpvpgpspqpdqdppfvpvvmggrwwgswswmmmnppmttqppvttrvrllcmctcqqlvvpwwghhlmhmwhmmpfmfvfwwbgbqqdbqblqqclljcljccnhhghbgbrrnrppchhmpmdmfmvffvqqtnqqfccgcfgcgwgcwggvgzvvbwbgbjbwbcbgbzztbbsbdbvddzrdrjjlqqlslrssjddhbddzbzvbvhhrjhhrtrltljljwljjrnjjjlpjphjphjhjvjgjbbwfwcctgtmtmdttjhthphhchfcfnnqlqhqvvjcclczlzwlzlhzlzdlzlbzbvbmbcmcjcncwncntndtntbbgqqbrbsrssrnnrcrmrlmmrqqddhzdhhnqqvccbmbpbwpbwbrwwwgdgnnhzzhphbhwhwzwhhvhqqnmqnmnjmnjjjjztzvzvbzbbvcvggcdchhhhbfbttmmtsmsgmmqvqdvdrvrqrdqqrhqqpsqqfnntsnnslsggcqqrnrmrfffmgmsmgggrdgdrgddzfzqfqfcqfcfrfwrrrgglwlmlmlgmlmrlljzlzglzztllgnndhdthtwwdrrjnncssdsnszsggdhdpprnnqzzltzlzznlzlflgfgbfggqtggfbbccchdcdrrnwnbnhbnbjjpzjpzzwjwcwggfqfccdzzfddmbddgbgrgllnttrwrjwrrbsrsbbwqwmmlggzqgzqzrqzzffmcmssgjjjcdcssndsdfsfddcffbrrcvccwhhzzlglhhsccvdvjjdldndrrvlrrbwrrbqqcbcjcjpjggngvnndtdvttlrlmmcbcggbtbhthjttdggtvtmmlgmlgmmdwdndmmldlttjlmbtrwfnvmnzggqfqwnppbrnjmpjfppwltpqfstgnnjwmbffgfbjmfhqngnswftgrqvpljsmghszclhhprscrgtmsgbwnbrfhwdsbjrdlhdcqfthwfggpzhjrvmprcjjgrlbmdqczmsltnpnlpldvnsjbdjzbrglpsmbwdhhphcdmjqmssdlgjtmphhjvpjqcdvmdtszldnjtbcffhwrbqpsrsmmsqsbbrnhsrvfhhcmwgcpsfhrfcpvldrwstqtgrcgrqttvdnstlbdblnbtcgdgpbcjdlvwpplsslqdsbpncbwzcmlglbhnrtbwvnbfsgrdlpzszhzmzqtztzgjjjszmjgggdnslqqqrrlwcghpvzwpndbjbhhhpbbtvjvjvjhntqggtmqwdnrtswcchsqpdwnvmfqrgpvbtjpttfhmlgtnsgnpcrhbswfblwrbflqlgtmvzvwprtfntshjcpzshnlnqthvqgpzffsbdbvbhpghwjhqpjwjfbsrzgttsnrpmfrvlwrjrfplrtzpntjbvhdjjfjjzrrvrsrctrtldrsgcgvntgvmtrnqbtmpzvlbwnddbnldbhfcpncqclzqgmbjcnnfdfsmdjdgtmtzbpwqrhrlggrfjhvrrqpjptqdzpwffwnfwmfhfhmcpljmhttbltgltqjhtvbdzgwrppzjwhctnncqthnlrhzgtnffpwnnqqgddjtgtczfmwvbccgvmdfvggdghmssjlflptzrpdncbjcsdlbqjfzmnzdggwdczghfpldsbnvzdjzsbsdnmwptgngmnbqmwbrzqgnqbmfvbzzmsvlswbtvfllqzsjdlvzjmbmlbnljwwjsqzqvfwhzmfdgttfqsdttnjmvspsgvpzwczpvdbvhjjrttghjddrgffqdsmzspnssztjjmwtsrtlrmbqhfbvpzsmnqthssbqrjhvqllrbbpjjllszmnjvzmfsbjtvvvgzrvjwldlbzjdbrsvvgmmjrgsbvtvthjbcqlzqhjqfvbzzvlpmrlmphftwbsvvwnwqfwvsnlvlcdgqjspprmwptcjhbjplzrqlhmvzmbfvwwvgvtqlvgfvzqdprfcjqsnndwqmbhlvfvhdhghtsrhbcrrshlsdtlbwntbcvvjhlcscfcnhbdnngtsccrnfbbqbfggvwnmlfhmqbdqpnzvzcvngcctbrshsdvhstcnwvjgwchzdndgbgjnddrmfgftvvjtdnqhfjmpjcjjtmgztvnwnrjjgmcgcqclnwvclngrtjggrprmfpqcsmdtbswhwrgwgfflqldtpnfdhdltrnhdvqqdsshcrnncdpvbhvlcbjlznjjzsdcjjpqprnzpmvqvrfnhdvhgrsmlcgtbsmrgqqtmblqmqcnmnmbcmmjvnptzbbqmcpwbflhccpfrjvfzmcsttfjtjgrnjbtwbncrsjjgjwdpmvfpqmzqwgjvgvfnpbhgzlzhfsnwmjjjsgcjjcwcfbzrmfzwdmhffqnzscbnfmpnbdbccrsjgqgvftszdbqbstwtwmwfzbtmvdmwvshlcpqnsqfwqlfclmjdjvgszsdblwvnhtwtrjcwsmpgflhdqmndrjvqlhqclmwhscnznmhjtqjlnglpbmgvptjnrpnjlqslssfnbdwlrwrdrtfspsjwzvwzfjpflqgmfnbvzqglrrccsnqtchnhlnrwlwqmqdvwsjmbjbvczvqcgfrrtftcgqsnvzhjlshnlvqmvrjljpsvmdzwqgltmccnplbmplhpvvflhmgfzmhczpwffbzhzhhggzgwtpmlzgrbpfgcnmfdbgcwrbgdpzpwmtwgmjtpmqzzgclmcpjgzdrwqfdwqzzqszrwmbwcqzcjdphqtwlbqmnddsdthgjrlshhmzgrqlhghrbqgzppqbdmmlnthhhmtdcdnbqfvbwdrdgbbpbhtrflwmhwjmzdtwmzhjndbrvbtbqnzbsrrbfdrrdnjltdtsjnpddmqzzbzblzvwctpdhfqgqntczwlgqbvvmhjblztlpptqjscztlrvrglrbsbfdjdfbwjltjcdgmqzgtjqjfgjnnpqgfhsrcggrszhbgfhtjmlgmmvshcpjwmcwcvwhnbjzrzfwtnlsnmdgfpbhvgfrhmhmsmtrnblsmnjclqzfgttrdmvpsvlcvnhmgmltfhffzllfrmdqdpzdmjdmsnmpwbwvrdvwvrcdsfwftfbfvmzjttrqgqlqqdtmcpdpfqfsclcmcdzhjwqrbhmzjjsvpbjzzgfwbjbqmzmtrnflwrqgnbgqnpntqmlngmgcrflgvhpznvrfwzlwrswbdsldfdbhvwvcbwhmpcslhmmbjdzvmgrjwzqqzlrrgddpssqcshzrsvrrzzcbsgvfmrlcgjrcpphctdwtjbmrlnrmrbgsqbjnmnsbjfhszcgdqfflcwvrvnwtvcnhcffvphwmzqpwnwncrbnzrnvjzsrnlzlfdbgztrhvlvpczzqnwsvwvnhgnclhndjsgqdgznjzrtmslmgnjzpj

78
2022/day07/day07.rkt Normal file
View file

@ -0,0 +1,78 @@
#lang racket
(struct tree
(name parent type (size #:mutable) (children #:mutable))
#:transparent)
(define (read-input filename)
(define t (tree "/" #f 'dir #f '()))
(let lp ([current-dir t]
[lines (cdr (file->lines filename))])
(unless (null? lines)
(match (string-split (car lines))
[(list "$" "ls")
(lp current-dir (cdr lines))]
[(list "$" "cd" "..")
(lp (tree-parent current-dir) (cdr lines))]
[(list "$" "cd" name)
(let ([child (findf (lambda (x) (equal? name (tree-name x)))
(tree-children current-dir))])
(if child
(lp child (cdr lines))
(let ([child (tree name current-dir 'dir #f '())])
(set-tree-children! current-dir (cons child (tree-children current-dir)))
(lp child (cdr lines)))))]
[(list "dir" _)
(lp current-dir (cdr lines))]
[(list size name)
(let ([child (tree name current-dir 'file (string->number size) '())])
(set-tree-children! current-dir (cons child (tree-children current-dir)))
(lp current-dir (cdr lines)))])))
(compute-sizes! t)
t)
(define (compute-sizes! t)
(if (tree-size t)
(tree-size t)
(begin
(set-tree-size! t (apply + (map compute-sizes! (tree-children t))))
(tree-size t))))
(define (display-tree t (level 0) (out (current-output-port)))
(fprintf out "~a- ~a (~a, size=~a)~n"
(make-string (* 2 level) #\ )
(tree-name t)
(tree-type t)
(tree-size t))
(for ([child (sort (tree-children t) string<=? #:key tree-name)])
(display-tree child (+ 1 level) out)))
(define (file? t)
(eq? 'file (tree-type t)))
(define (directory? t)
(eq? 'dir (tree-type t)))
(define (all-directories t)
(define child-dirs (filter directory? (tree-children t)))
(append* child-dirs (map all-directories child-dirs)))
(define (part1 t)
(apply + (map tree-size
(filter (lambda (d) (< (tree-size d) 100000))
(all-directories t)))))
(define (part2 t)
(define unused-space (- 70000000 (tree-size t)))
(define required-space (- 30000000 unused-space))
(define dir-to-remove
(car (sort (filter (lambda (d) (>= (tree-size d) required-space))
(all-directories t))
<=
#:key (lambda (d) (tree-size d)))))
(tree-size dir-to-remove))
(module+ main
(define t (read-input "input"))
(displayln (part1 t))
(displayln (part2 t)))

988
2022/day07/input Normal file
View file

@ -0,0 +1,988 @@
$ cd /
$ ls
dir bqc
dir mwmlf
dir ngn
143562 nrwjb
78449 qqvdcclf
dir qrnm
dir smfzmmhc
116085 tvrms
dir vrdrsj
$ cd bqc
$ ls
5693 qqvdcclf
$ cd ..
$ cd mwmlf
$ ls
dir cmfphpc
dir lqqshq
dir mwmlf
dir rlf
dir smfzmmhc
$ cd cmfphpc
$ ls
235620 tprth.gjn
82743 vrdrsj.fbl
$ cd ..
$ cd lqqshq
$ ls
94188 crswqlvd.nsj
dir dttthls
60078 lbsfsspm
dir lqp
74624 nrwjb
247709 tjhcqw.wrq
267693 tvrms
dir zshrcgfn
$ cd dttthls
$ ls
109072 nrwjb
31512 qqvdcclf
$ cd ..
$ cd lqp
$ ls
237917 nrwjb
45489 vrdrsj.ntw
$ cd ..
$ cd zshrcgfn
$ ls
185533 smfzmmhc.zzd
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
dir bbvhpmsj
dir mwmlf
83589 qqvdcclf
$ cd bbvhpmsj
$ ls
232123 hrvlgmjb.wrv
137190 rlf
21785 tghvbj.mfr
25344 vrdrsj.swp
$ cd ..
$ cd mwmlf
$ ls
dir wnn
$ cd wnn
$ ls
dir thd
$ cd thd
$ ls
36125 lgt
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd rlf
$ ls
dir fps
128272 lggpfj.gnr
146745 lrdq.zgm
dir mwmlf
266383 mwmlf.wnp
dir ncrlvggp
dir qpgmrj
$ cd fps
$ ls
dir rqjt
dir wpqvmn
$ cd rqjt
$ ls
175784 pcdtdblc.znj
185424 wmstvdt.lhn
$ cd ..
$ cd wpqvmn
$ ls
141743 ljslzhjl
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
169015 rlf
$ cd ..
$ cd ncrlvggp
$ ls
81450 fqtrpm.mqr
146399 jtbr
dir nnqgqqj
288302 qqvdcclf
$ cd nnqgqqj
$ ls
dir fvbhh
$ cd fvbhh
$ ls
121112 zmn.fjz
$ cd ..
$ cd ..
$ cd ..
$ cd qpgmrj
$ ls
dir hrvlgmjb
dir pbc
$ cd hrvlgmjb
$ ls
7858 czvpvwz
$ cd ..
$ cd pbc
$ ls
150816 tprth.gjn
$ cd ..
$ cd ..
$ cd ..
$ cd smfzmmhc
$ ls
dir jwvw
184385 spbjrlv.spt
dir trpdgl
201578 zzhz
$ cd jwvw
$ ls
47747 nrwjb
$ cd ..
$ cd trpdgl
$ ls
136682 mwmlf
$ cd ..
$ cd ..
$ cd ..
$ cd ngn
$ ls
dir fqbph
282363 lscdth.lbj
dir mwmlf
273281 qbpmcqs
7547 qdffbp
223960 tprth.gjn
$ cd fqbph
$ ls
dir bgtbmzj
dir lzjf
12361 nrwjb
dir pdsdttz
150218 pfvtwr.pbf
dir rlf
158227 sfhsszcq.tzv
183244 smfzmmhc.drh
$ cd bgtbmzj
$ ls
dir gvqhtfg
dir jmvzv
194008 ldpfs.qhr
dir mtztr
11099 nfqmvqcm.ftd
dir szp
153379 zrtsd.jwg
$ cd gvqhtfg
$ ls
dir ntq
dir rlf
62076 rlf.nlc
$ cd ntq
$ ls
dir wdtzhz
$ cd wdtzhz
$ ls
dir tlqcbp
$ cd tlqcbp
$ ls
102930 smfzmmhc
$ cd ..
$ cd ..
$ cd ..
$ cd rlf
$ ls
185079 tjhcqw.wrq
$ cd ..
$ cd ..
$ cd jmvzv
$ ls
dir hfmtzbhf
61556 jzbvmc
dir scjpjp
237487 sgh
dir smfzmmhc
$ cd hfmtzbhf
$ ls
dir ldt
136126 tvrms
$ cd ldt
$ ls
dir smfzmmhc
dir wrhpzrfm
dir zbcfv
$ cd smfzmmhc
$ ls
86537 tjhcqw.wrq
$ cd ..
$ cd wrhpzrfm
$ ls
263122 smfzmmhc.shv
73772 tvrms
$ cd ..
$ cd zbcfv
$ ls
dir vrdrsj
$ cd vrdrsj
$ ls
220800 zwdbh
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd scjpjp
$ ls
38282 rlf
93306 rlf.blz
$ cd ..
$ cd smfzmmhc
$ ls
dir gqms
dir mwmlf
21587 nrwjb
184621 zvq.lvr
$ cd gqms
$ ls
dir frbs
dir rlf
$ cd frbs
$ ls
dir mpdll
82901 zdmnm.wlc
$ cd mpdll
$ ls
dir mgqd
dir mrljj
$ cd mgqd
$ ls
75558 vrdrsj.zwc
$ cd ..
$ cd mrljj
$ ls
dir qmsgj
128171 qqvdcclf
245942 rlf.hgt
dir zzvbt
$ cd qmsgj
$ ls
7382 mwmlf
$ cd ..
$ cd zzvbt
$ ls
285714 zltjmn
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd rlf
$ ls
43731 gttgwfgf.cpd
dir hvtn
112018 jdhb.ssj
195239 rlf.gvd
200476 spsstb
$ cd hvtn
$ ls
dir zzsfgzc
$ cd zzsfgzc
$ ls
116544 vrdrsj
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
dir hmpvn
dir shlnfcpz
$ cd hmpvn
$ ls
55892 qqvdcclf
$ cd ..
$ cd shlnfcpz
$ ls
144766 fnrhmbbm.rnp
2622 tjhcqw.wrq
219884 tprth.gjn
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd mtztr
$ ls
dir plngmzl
dir qbwzhr
$ cd plngmzl
$ ls
153434 dhjv.pfn
$ cd ..
$ cd qbwzhr
$ ls
26553 mcb.djg
$ cd ..
$ cd ..
$ cd szp
$ ls
37741 qqvdcclf
dir vrdrsj
$ cd vrdrsj
$ ls
dir hznmsclb
13218 mwmlf.vhs
102602 rggt
228549 rlnf.qrt
$ cd hznmsclb
$ ls
17957 mwmlf.lsv
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd lzjf
$ ls
40821 lfgh.jwg
dir rplfgb
$ cd rplfgb
$ ls
301639 zmrpm.pqn
$ cd ..
$ cd ..
$ cd pdsdttz
$ ls
294779 tprth.gjn
$ cd ..
$ cd rlf
$ ls
37853 qst.zgc
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
dir dqvhgnj
dir fvjtnl
dir jfsgp
230725 tjhcqw.wrq
2872 tvrms
dir zszcsbl
$ cd dqvhgnj
$ ls
214328 bph
138045 tjhcqw.wrq
$ cd ..
$ cd fvjtnl
$ ls
62568 sllvfsf
286839 tjhcqw.wrq
241004 zvqrg.bsg
$ cd ..
$ cd jfsgp
$ ls
116677 tprth.gjn
151347 vtbt
$ cd ..
$ cd zszcsbl
$ ls
97786 hrvlgmjb.wzz
$ cd ..
$ cd ..
$ cd ..
$ cd qrnm
$ ls
70534 nrwjb
292701 qqvdcclf
153174 sjqvgh.nvt
$ cd ..
$ cd smfzmmhc
$ ls
dir gjrqmcjl
63451 hrvlgmjb
dir mwmlf
dir ncgjsjj
246754 nrwjb
dir pvnbj
dir sjqwr
dir vrdrsj
dir vwfnglr
$ cd gjrqmcjl
$ ls
283020 gwcrpgc
36180 ltmzzz
dir tpsr
$ cd tpsr
$ ls
51208 nscwcztf.wlh
121548 smfzmmhc
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
263186 mwmlf.fqd
$ cd ..
$ cd ncgjsjj
$ ls
204801 nrwjb
116293 rdrmctwg.nqc
36548 tjhcqw.wrq
$ cd ..
$ cd pvnbj
$ ls
dir cfmn
dir cnhmcjp
231615 ctllrm
dir czmw
dir drfzgwtz
135330 jsm
dir jtjzwjh
dir nfg
279734 qqvdcclf
220762 tvrms
35964 vrdrsj.jqj
$ cd cfmn
$ ls
300636 frn.ccd
dir qmtc
dir sfvd
$ cd qmtc
$ ls
267669 jwvjslwp.vsp
180586 tvrms
$ cd ..
$ cd sfvd
$ ls
169064 cgzmwg.rgr
dir hsz
270729 qgmmc.sqq
dir qpzbffd
92811 shcpdlm.nwz
dir sstdzdf
dir thrzw
dir wscsr
$ cd hsz
$ ls
301584 qqvdcclf
$ cd ..
$ cd qpzbffd
$ ls
264911 mwmlf.rvg
dir rlf
32109 svhwhw.fdp
155713 tjhcqw.wrq
dir vrdrsj
$ cd rlf
$ ls
32357 tvrms
$ cd ..
$ cd vrdrsj
$ ls
93501 nrwjb
$ cd ..
$ cd ..
$ cd sstdzdf
$ ls
241812 mgrvcbjc.rqb
dir mwmlf
273819 nvrssljz
156873 tvrms
$ cd mwmlf
$ ls
133649 wdfvctwp
$ cd ..
$ cd ..
$ cd thrzw
$ ls
67552 smfzmmhc
$ cd ..
$ cd wscsr
$ ls
132663 dnbvw.zwd
dir ffthd
293463 hrvlgmjb.fwh
dir lhjvfdh
194357 nrwjb
dir smj
56668 tprth.gjn
303099 tvrms
dir vrdrsj
$ cd ffthd
$ ls
84952 nrwjb
192566 rlf
dir slbg
78478 srzz
250044 tprth.gjn
97100 tvrms
$ cd slbg
$ ls
203375 nrwjb
39137 qqvdcclf
$ cd ..
$ cd ..
$ cd lhjvfdh
$ ls
1747 rtphln.pgc
163505 tjhcqw.wrq
76891 tprth.gjn
$ cd ..
$ cd smj
$ ls
6853 hhtdhzgn
158303 pmsflvrn.hnh
$ cd ..
$ cd vrdrsj
$ ls
dir jdlc
263568 vrdrsj
dir vvtl
$ cd jdlc
$ ls
12435 hqggp.lrq
292141 ntbcht.zbw
$ cd ..
$ cd vvtl
$ ls
118913 qqvdcclf
291087 tjhcqw.wrq
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd cnhmcjp
$ ls
263233 tjhcqw.wrq
$ cd ..
$ cd czmw
$ ls
dir gdsgw
dir gfd
3390 mwmlf.zss
$ cd gdsgw
$ ls
298839 dbwsmwnb.svt
170672 tprth.gjn
$ cd ..
$ cd gfd
$ ls
193212 tld
$ cd ..
$ cd ..
$ cd drfzgwtz
$ ls
257122 tprth.gjn
$ cd ..
$ cd jtjzwjh
$ ls
dir jhpp
274740 lnrwrpjj
35217 ptzmfsmr.pwc
67549 qpdj.pfc
$ cd jhpp
$ ls
40279 jgstzhw.cbq
$ cd ..
$ cd ..
$ cd nfg
$ ls
126237 mqfl.flt
$ cd ..
$ cd ..
$ cd sjqwr
$ ls
53423 bngqncqn
dir lblv
178935 nrwjb
188826 tprth.gjn
dir vrdrsj
286449 vrdrsj.svn
$ cd lblv
$ ls
dir bptgd
215281 jjvcgb.nwc
dir rlf
300004 tvrms
$ cd bptgd
$ ls
19667 mwmlf
$ cd ..
$ cd rlf
$ ls
dir mwmlf
263985 rbhz.plr
$ cd mwmlf
$ ls
254206 smfzmmhc
$ cd ..
$ cd ..
$ cd ..
$ cd vrdrsj
$ ls
dir vrdrsj
$ cd vrdrsj
$ ls
250310 hrvlgmjb.bbf
130543 mwmlf.lbq
$ cd ..
$ cd ..
$ cd ..
$ cd vrdrsj
$ ls
dir mwwr
dir rlf
$ cd mwwr
$ ls
dir lhz
$ cd lhz
$ ls
dir ssz
dir vrdrsj
$ cd ssz
$ ls
107472 hcnsgjhj
$ cd ..
$ cd vrdrsj
$ ls
303694 rlf
$ cd ..
$ cd ..
$ cd ..
$ cd rlf
$ ls
299875 nrwjb
$ cd ..
$ cd ..
$ cd vwfnglr
$ ls
dir mtvgvvcr
114118 mzhgbj.zvv
273343 tprth.gjn
28259 wgrp
$ cd mtvgvvcr
$ ls
218927 bvlv.npm
64283 hrf.czg
dir mnmqqqgh
103691 qtb.fnb
dir smfzmmhc
252712 zjlgc.sfg
$ cd mnmqqqgh
$ ls
231583 hrvlgmjb.mtq
$ cd ..
$ cd smfzmmhc
$ ls
dir dzjfd
dir jjslqwn
264128 nrwjb
257359 tvrms
$ cd dzjfd
$ ls
dir smfzmmhc
237116 zzgr
$ cd smfzmmhc
$ ls
230613 qqvdcclf
91615 smfzmmhc
$ cd ..
$ cd ..
$ cd jjslqwn
$ ls
98708 mwmlf.qtq
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd vrdrsj
$ ls
dir bfgbvlcd
131293 fgh.djg
125876 lcwjtdf.sbl
dir pnds
263022 tvrms
$ cd bfgbvlcd
$ ls
276134 vrdrsj
$ cd ..
$ cd pnds
$ ls
dir bffz
dir jwcjpt
dir pvnbz
$ cd bffz
$ ls
194315 dndbj.gww
115061 lspnmhml.fdb
239758 tjhcqw.wrq
124732 wjcbcvfd
$ cd ..
$ cd jwcjpt
$ ls
dir dcmcgc
dir llt
dir rfh
dir scljqqq
127542 tvrms
$ cd dcmcgc
$ ls
dir fhdvgvtz
dir hrvlgmjb
dir rlf
dir smfzmmhc
$ cd fhdvgvtz
$ ls
33684 lcl
dir lrsjg
203352 npvgs.qdw
6985 tvrms
102991 wmnrjw.chn
162852 wrcjmll.rlb
$ cd lrsjg
$ ls
dir jgfpvdc
84338 mwmlf.vdw
147349 nrwjb
dir sblp
dir vrdrsj
$ cd jgfpvdc
$ ls
265563 chlgpdsp.hrv
dir dsc
dir gvrg
dir mwmlf
dir qrqvl
100762 rlf
300872 sjvgwmdg.qhg
164004 tzqmh
300736 zhgmdcl.bfq
$ cd dsc
$ ls
284520 rtt.qps
263890 smfzmmhc
$ cd ..
$ cd gvrg
$ ls
dir hzclphlb
dir vcnlmdp
$ cd hzclphlb
$ ls
295429 mcdjsms.zss
$ cd ..
$ cd vcnlmdp
$ ls
dir wrlhqh
$ cd wrlhqh
$ ls
41526 tmf.ctw
$ cd ..
$ cd ..
$ cd ..
$ cd mwmlf
$ ls
dir cwsrt
dir grqng
$ cd cwsrt
$ ls
dir ztmtjwj
$ cd ztmtjwj
$ ls
17063 svdm
$ cd ..
$ cd ..
$ cd grqng
$ ls
216391 tvrms
$ cd ..
$ cd ..
$ cd qrqvl
$ ls
1835 hrvlgmjb
43155 mwmlf.sng
238089 ngjg.zmc
$ cd ..
$ cd ..
$ cd sblp
$ ls
178768 bgfnqf
$ cd ..
$ cd vrdrsj
$ ls
255854 qrrc.bbc
178991 smfzmmhc
$ cd ..
$ cd ..
$ cd ..
$ cd hrvlgmjb
$ ls
dir fjnp
70585 hrvlgmjb
dir qsrgzrdf
43606 rmjzzgrs
dir vds
dir vrdrsj
35098 wthtcg.wgd
$ cd fjnp
$ ls
19740 qqvdcclf
dir smfzmmhc
$ cd smfzmmhc
$ ls
dir nnbc
$ cd nnbc
$ ls
100360 mwmlf
$ cd ..
$ cd ..
$ cd ..
$ cd qsrgzrdf
$ ls
279143 fgthp.qmg
$ cd ..
$ cd vds
$ ls
247595 gnclhrw.mwt
303125 pcdnbq.zbs
38092 tprth.gjn
dir vrdrsj
$ cd vrdrsj
$ ls
dir tnjg
$ cd tnjg
$ ls
37395 brcbr
$ cd ..
$ cd ..
$ cd ..
$ cd vrdrsj
$ ls
94639 tjhcqw.wrq
$ cd ..
$ cd ..
$ cd rlf
$ ls
dir btqjc
108141 dnplntn.mwr
31100 lmfsgd
263849 lpbdq.vdp
109813 smfzmmhc.wsr
dir vrdrsj
$ cd btqjc
$ ls
31933 nwszgpm.qqr
106249 rjqvhccg
16766 vgzqz
$ cd ..
$ cd vrdrsj
$ ls
dir bfv
dir jtnqr
19593 mwmlf
220657 rggqjp.pnt
$ cd bfv
$ ls
48210 tdgd.ppw
232603 tjhcqw.wrq
$ cd ..
$ cd jtnqr
$ ls
dir bct
202702 grstm.ltj
dir mwmlf
258253 tvrms
$ cd bct
$ ls
131860 fwfzsc.pls
42452 thp
$ cd ..
$ cd mwmlf
$ ls
284648 vdjh.dct
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd smfzmmhc
$ ls
dir fvtlvtlq
108335 jdbdb
dir vrdrsj
$ cd fvtlvtlq
$ ls
237419 ctwllbmc
36570 qqvdcclf
dir rlf
92173 smfzmmhc
$ cd rlf
$ ls
89469 dtg.bvl
88361 mqrr
$ cd ..
$ cd ..
$ cd vrdrsj
$ ls
47472 fftpd
53118 qqvdcclf
$ cd ..
$ cd ..
$ cd ..
$ cd llt
$ ls
98255 hnvqtbcn
$ cd ..
$ cd rfh
$ ls
29828 hgwh.tnl
dir rchll
dir smfzmmhc
$ cd rchll
$ ls
240042 rdj.wrv
$ cd ..
$ cd smfzmmhc
$ ls
45192 clnbddrh.lbq
105827 ndzjnttr
140925 nmnr.lct
dir rlf
238998 tprth.gjn
dir vrdrsj
$ cd rlf
$ ls
115973 mnnr.smj
75630 zld.hzv
$ cd ..
$ cd vrdrsj
$ ls
302512 phmvhpvb.fwh
dir tjrpwhc
$ cd tjrpwhc
$ ls
13802 hrvlgmjb
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd scljqqq
$ ls
228515 hrvlgmjb.nhn
246019 mwmlf
9535 mwmlf.nvm
$ cd ..
$ cd ..
$ cd pvnbz
$ ls
dir hrvlgmjb
279877 mwmlf
dir zdqprndl
278221 zwwtflb
$ cd hrvlgmjb
$ ls
dir vggpr
$ cd vggpr
$ ls
270197 cpzj
$ cd ..
$ cd ..
$ cd zdqprndl
$ ls
197398 tprth.gjn

23
2022/day07/test Normal file
View file

@ -0,0 +1,23 @@
$ cd /
$ ls
dir a
14848514 b.txt
8504156 c.dat
dir d
$ cd a
$ ls
dir e
29116 f
2557 g
62596 h.lst
$ cd e
$ ls
584 i
$ cd ..
$ cd ..
$ cd d
$ ls
4060174 j
8033020 d.log
5626152 d.ext
7214296 k

12
2022/day08/day08.bqn Normal file
View file

@ -0,0 +1,12 @@
inp>'0'-˜•FLines•args
Vis{>¨`¨<˘𝕩}
•Show +´´,˘,,(˘){𝕎𝕩}¨Vis¨,˘,,˘{𝕎𝕩}¨4<inp
Score{m𝕊x,y:
vxym
upxy˘m
leftyxm
right(y+1)xm
down(x+1)y˘m
×´{(𝕩)1++´`v>𝕩}¨upleftrightdown
}
•Show ´inpScore¨inp

99
2022/day08/input Normal file
View file

@ -0,0 +1,99 @@
020111211022103023211142403044034010412103202221251542233334311102303044440313120021223120332211221
121001110111201102213124201444431204213221413222211111444444412110041144131210002230130121313101010
112010221202200121420032021412024323255214355122345552225213252324112400440302313420323102103100221
211022232121222123201224234031435144114512425232345144523531533222344004011342234110131312300332202
202103101023303021233104321411251553151424242531344221312225231225524421412434024103021300123300121
202122200002211022342141123051132352344252152315525324551424132421225143201002114204223302333232221
011310312223223421431113235421121321152124551441143435255214322514544552225412313011414423301132102
121331322013001133311000223433443341113554412556562564315233144532455221433431002003332002203013201
003201332004241133340023541532333131413153266664363423353232622124454254554345422200200433100333102
230030131344203011040552414515334144165664524445366334422626244444323115333252423443232113432003211
020300112334333142144323414353551436334563654426436625356343222253643212532215422020214344013310331
220002231221003314452445344223355655546325233543653632544634656464243551334233433413423044300230210
111022100242320043435324555421362243363346366346456252353246655455262455415331454531201000441410231
101232013434204241242451442362524554225656254252456532663634445256345634451144555513214431300213021
021113211441142541244515256653533353262654644343347336234522332254544443346322422154143020040021110
002032342223245141521455555365463263562446777664546776637635443223664266645633333231151132112140113
002033421301452414544444345232465536465366346553375665564756366435442422632435555111445311104203133
332303032232445231354236322622423634433537753546335477544636344436526324435436522445155410213401230
214021124335354212514535634245552337436663757533364556376776733565333462254562365531354214423412431
231123230423124441525624265443647673566756453545563655373357453547537663433453433212213223101140424
100211320333154123522263362425466444634667564437776546465446345667366445453365366551352122420231230
024400401554531424535342424657437377754456437376767656436366374765557746355562226364213315421212320
214442223135544515264335435467756354735433346664764464468465443746334373746425422542525455354340110
141333001441254326655252563743544735555378755475567457777687677357576573543344653346551442221242312
022033123224325536562464253467675635635678458757477754757874576653435356676234462564555551451230022
444402313413432333426636637636453646648557685556587678886878777785454364533433543362622525453201222
031024134513414333456224636475357556855564445765756678575486648885765563445546566235352311454320030
341331341415512452344636337436467675565575756658588888477584775646657736366434365523664142235144413
333344214132152543325563654447567486457556845676545687457688885466457333476777342344625323533242333
203124152315365546566375565336778768544768846599686578655665448478657834657533335544343231212251101
200144235323636235437557635373578555545475587655886585897998654658858755534374677344254563233421200
433243323452635426237436445738684446475489658878699879887988684656474746764334543334452565153341241
340411231113223465344733555465744685569658998876796578688888887678657675875533766464362432543531231
132155112416452662274535754677457567869597559977756878779755568868854644586734466764422245333151550
321153454153653654743477667888756477986578656976558879999589975695487876766664653466625262642234421
414524133155254243564664555445778475666688565697596679558768656758547564888437343772346336642515514
321251321324554554436434474754674597576658986766997798688766897876884764444653674674326233445555243
031553412663524646375654566887688857698655696699699989968699659665774657875735457664452362352111522
121541141642244257534355645887786995858959886778688769889987779898696567777567344373632655621545545
334343242432423553675774445756455759676757789677879778999988695976997447856786357655446656351514552
125145532643224566754564678556569669557567799868776897666898866898879866784847777744353546366314141
045114213352452647446647465888875868689699789677897977779999699895556776458746737674746244442322442
132343555663565436365447746478789879798676878686777999789966769777759954677478745673552645533545344
045253354653642556466557766588567888887978866878777776986676768968695857655674556463732652626443441
324411423536354677366485874488885578788769789998797978797888777868996895476778847746764226464355343
355421453642352476436787475855785669696986976979989787787998669696679989555875747556435562425323311
225422326356526465747344444546866698678986799879779799999876866969999686664477767757535635652555421
215234242322226376376776764668889755898766677787987779877967696689565966757675463574434246652622343
214252444222333767567367778585695867987669688798987987789888698888858597545545475573737453632634414
435144324646623745547785547465689576878976877888878988989877866686976879488454664357347554642541254
424224446333664566656688545685586987987699788897978888788999878967887869445474863534753362524653532
234521532264544735666677658457578679997886798878788998987976677895559685784445835563745433436535545
541253562333326733576345574569866788667878789897999998887996866685657897848485475437744246636412312
531515163362265375476387485646556857878999799999999989879989886696789765664474863474462523344554532
134323536435565375644658845476675857999867789999988888799986676978987577885467643356656525623333421
432434326635433776557758756889896978587689688777989999797796888999765958586488873373565325435254453
352344243543664654777655867556767767686778796989888798998697976755779565488844544677343523234525134
023522455223435563774634466685769765877876776996699877886876668865856964846675357575675235445525211
452211123455454466574537744568597875596879779869788776669767986968956557448486336534544244456115451
154255352645344566574476875484685575595898898697799799688669879869766768688476473673634645556554324
153224532366353377543578485765465665577767776999977978876879865565957587758448456773452265664315213
212223354662352476456344644856876756566976677698968768897897866997679566845464663374352444344522513
333134124655526377555445475778655559695856687767878889687866969787796886748547665457422543622531314
114114243655626456537464558857564557866777897897898988696885586978887448448543375665233363532515252
022123225426235336675765546686448888566865666569876966556979869667956845877753374733454555422452344
105112231544246463366336777688875488697685796985999888976956985978664485756743456372244565641412542
243421525526425322655767646868764584599579555769857975877669799998745668566534743565233224245452434
310412235133463356343754335447454467578555798898788997569756589585876868467475435524433556255213522
122253434533466554567356664688567676567976599967878669868967997845484546736534545734455626245154423
313334534424352263526466637778587787868565658999559897596678677574858776343543534432632333531241224
001031252124265545567437743765668445564487997555965858678954577555545545743366457636433553523254344
044305452425444342246365565576568644874888888677955886697487686854588744354437555336664241413533111
110113123534526242542645447354547688467557884774478677887477777586654656653436654455626314334324023
403311355254242426345425533745657486754657454674877454647844866774463676664344325662334351444144012
114043453225323265365363357353773386544675474785655464585675566555543364665665355442555535443420344
234021355512324262426566274773756436677647664566764646854655875476556464746532226425352124354233001
104234323224222234534254555373773666356744475886877868685764755374634533664662562645321154355101301
413312132345313224565423553463467666456365585778746647466885776356666677636556254365513311121044324
010140223145323354554344523347476477547564757555585887484666633663433654743326266555221322431333120
023311233225342421354662654347733666374666336373663635367447753577353743232632663243333251551031321
143043334422453221246324462653756444767736544367544755375437335646557334655533644454121143303220002
101212344011254432246625336226267546745356655577456676377355677475746633565634244145133154032123242
233244204414154431434433222525444454344635736634774576466473546373725623264634363324244114303014300
010103422332213512154554324533443662535535356636747655647737636354525554536436123454141421414030443
203123300244432323224135253642444433566335637575443374634433336553444225543564152215332533001133230
213003230312403552352142145445635666323653353353657647435752235322633623453542112525124011312421020
120004434213011143254452233425222536464236356544634635324242345464353322232141135221424123200431123
331000214011314431233211121223425334456246345226324246526344536556636556453143153253323114441131132
303123142412333143322451153243464566344362342525524265432552566442626262524431454151443133021301210
220100102032004440315125323552226234566265233246334556355333643662354455122325544112124232340231031
112122312031202424345533512342151435534325334444254264542526645645533111234131131223411304322200110
213031212133401330114433121533455425225634422363334633454623522242353342455454511303033230433202120
223232022333401311421344332255311133421254642562465526534445512134533413153142410113101444330132130
020133013100324344342244215442123125243314222446342424421353134352515124333133430431401122202211032
102300310001014311443112031115242425132234255215315523551534154524134344433432201022200432133000302
001233311232134334100401400151532231322435145412132433235254313414243334103312232304403111313321210
110213022233310011220103432114343112114222424442543155552411511144115122143322304023012132213011210
000220123220323122321103444304134551331233141552114422121151224211122042434324042030120133230110110
020120232301110331441234422110132302233413123211331413433254521355004032312110222131010330301222211

5
2022/day08/test Normal file
View file

@ -0,0 +1,5 @@
30373
25512
65332
33549
35390

17
2022/day09/day09.bqn Normal file
View file

@ -0,0 +1,17 @@
ToNats,Split•Import"../bqn-libs/strings.bqn"
Dirs{𝕩'R' ? 10; 𝕩'U' ? 01; 𝕩'L' ? ¯10; 𝕩'D' ? 0¯1}
dn<˘>' 'Split¨•FLines•args
inp(¨ToNats¨n)/Dirs¨´d
Dist´|-
Follow{𝕩+(2𝕩 Dist 𝕨)×(××|)2÷˜𝕨-𝕩}
Move{Follow`𝕩+𝕨}
F{
pos(<𝕨<0,0)Move`𝕩
inds>¯1¨pos
# Disp←{⊑⟜".#"¨(⍉⌽˘(1⊸+⌾(𝕩⊸⊑))𝕨⥊0)}
# •Show (1+(⌈´-⌊´)inds) Disp inds
inds
}
•Show 210 F¨ <inp

2000
2022/day09/input Normal file

File diff suppressed because it is too large Load diff

8
2022/day09/test1 Normal file
View file

@ -0,0 +1,8 @@
R 4
U 4
L 3
D 1
R 4
D 1
L 5
R 2

8
2022/day09/test2 Normal file
View file

@ -0,0 +1,8 @@
R 5
U 8
L 8
D 3
R 17
D 10
L 25
U 20

5
2022/day10/day10.bqn Normal file
View file

@ -0,0 +1,5 @@
ToNums,Split•Import"../bqn-libs/strings.bqn"
lengthsvals<˘>{𝕊i,n: 2, ToNums n; 1, 0}¨" "Split¨•FLines•args
pos(1lengths1)/111+`vals
•Show (20+40×6)(+´×)pos
•Out 1˝(@+10)˘" █"¨1|40(1¯1pos)-40|240

6
2022/day10/day10.py Normal file
View file

@ -0,0 +1,6 @@
import sys, itertools as it
f = lambda s: (1, 0) if s.startswith("noop") else (2, int(s.split()[1]))
lengths, vals = map(list, zip(*[f(x) for x in open(sys.argv[1]).readlines()]))
pos = list(it.chain.from_iterable(it.repeat(x, n) for n, x in zip([1]+lengths+[1], [1]+list(it.accumulate(vals, initial=1)))))
print(sum(i * pos[i] for i in range(20, 6*40, 40)))
print("\n".join("".join(""[-1 <= pos[40*j+i+1] - i <= 1] for i in range(40)) for j in range(6)))

140
2022/day10/input Normal file
View file

@ -0,0 +1,140 @@
noop
noop
noop
addx 4
addx 3
addx 3
addx 3
noop
addx 2
addx 1
addx -7
addx 10
addx 1
addx 5
addx -3
addx -7
addx 13
addx 5
addx 2
addx 1
addx -30
addx -8
noop
addx 3
addx 2
addx 7
noop
addx -2
addx 5
addx 2
addx -7
addx 8
addx 2
addx 5
addx 2
addx -12
noop
addx 17
addx 3
addx -2
addx 2
noop
addx 3
addx -38
noop
addx 3
addx 4
noop
addx 5
noop
noop
noop
addx 1
addx 2
addx 5
addx 2
addx -3
addx 4
addx 2
noop
noop
addx 7
addx -30
addx 31
addx 4
noop
addx -24
addx -12
addx 1
addx 5
addx 5
noop
noop
noop
addx -12
addx 13
addx 4
noop
addx 23
addx -19
addx 1
addx 5
addx 12
addx -28
addx 19
noop
addx 3
addx 2
addx 5
addx -40
addx 4
addx 32
addx -31
noop
addx 13
addx -8
addx 5
addx 2
addx 5
noop
noop
noop
addx 2
addx -7
addx 8
addx -7
addx 14
addx 3
addx -2
addx 2
addx 5
addx -40
noop
noop
addx 3
addx 4
addx 1
noop
addx 2
addx 5
addx 2
addx 21
noop
addx -16
addx 3
noop
addx 2
noop
addx 1
noop
noop
addx 4
addx 5
noop
noop
noop
noop
noop
noop
noop

3
2022/day10/test1 Normal file
View file

@ -0,0 +1,3 @@
noop
addx 3
addx -5

146
2022/day10/test2 Normal file
View file

@ -0,0 +1,146 @@
addx 15
addx -11
addx 6
addx -3
addx 5
addx -1
addx -8
addx 13
addx 4
noop
addx -1
addx 5
addx -1
addx 5
addx -1
addx 5
addx -1
addx 5
addx -1
addx -35
addx 1
addx 24
addx -19
addx 1
addx 16
addx -11
noop
noop
addx 21
addx -15
noop
noop
addx -3
addx 9
addx 1
addx -3
addx 8
addx 1
addx 5
noop
noop
noop
noop
noop
addx -36
noop
addx 1
addx 7
noop
noop
noop
addx 2
addx 6
noop
noop
noop
noop
noop
addx 1
noop
noop
addx 7
addx 1
noop
addx -13
addx 13
addx 7
noop
addx 1
addx -33
noop
noop
noop
addx 2
noop
noop
noop
addx 8
noop
addx -1
addx 2
addx 1
noop
addx 17
addx -9
addx 1
addx 1
addx -3
addx 11
noop
noop
addx 1
noop
addx 1
noop
noop
addx -13
addx -19
addx 1
addx 3
addx 26
addx -30
addx 12
addx -1
addx 3
addx 1
noop
noop
noop
addx -9
addx 18
addx 1
addx 2
noop
noop
addx 9
noop
noop
noop
addx -1
addx 2
addx -37
addx 1
addx 3
noop
addx 15
addx -21
addx 22
addx -6
addx 1
noop
addx 2
addx 1
noop
addx -10
noop
noop
addx 20
addx 1
addx 2
addx 2
addx -6
addx -11
noop
noop
noop

28
2022/day11/day11.bqn Normal file
View file

@ -0,0 +1,28 @@
lf,Split,ToNats•Import"../bqn-libs/strings.bqn"
ms>lfSplit¨(2lf)Split ¯1•FChars•args
itemsToNats¨1¨<˘ms
tests{𝕊d,t,f: {(0=d|𝕩)ft}}˘¨ToNats¨3˘ms
op{𝕩"* old" ? ט; 𝕩"+ old" ? +˜; '*'𝕩 ? (ToNats𝕩)×; '+'𝕩 ? (ToNats𝕩)+}¨23¨2˘ms
mod×´¨ToNats¨3¨<˘ms
MonkeyBusiness{part𝕊items:
inspected(items)0
Inspect{part𝕊i:
opiop
testitests
Throw{
it(part-1)÷3 Op 𝕩,mod|Op 𝕩
itemsit((Test it))items
}
Throw¨ iitems
inspected(iitems)+(i)inspected
items˙(i)items
}
Round{partInspect¨𝕩}
Round((part-1)2010000) items
# •Show inspected
×´2inspected
}
•Show 1 MonkeyBusiness items
•Show 2 MonkeyBusiness items

75
2022/day11/day11.rkt Normal file
View file

@ -0,0 +1,75 @@
#lang racket
(require data/queue
threading)
(struct monkey
(items op test divisor (inspections #:mutable))
#:transparent)
(define (read-input filename worry-reduction)
(for/vector ([mstr (string-split (file->string filename) "\n\n")])
(define infos (string-split mstr "\n"))
(define items (make-queue))
(for ([item (map string->number (string-split (substring (cadr infos) 18) ", "))])
(enqueue! items item))
(define op
(compose1
(lambda (n) (quotient n worry-reduction))
(match (string-split (substring (caddr infos) 23))
[(list "+" "old") (lambda (x) (+ x x))]
[(list "*" "old") (lambda (x) (* x x))]
[(list "+" n) (lambda (x) (+ x (string->number n)))]
[(list "*" n) (lambda (x) (* x (string->number n)))])))
(match-define (list d a b) (map (compose1 string->number last string-split) (cdddr infos)))
(define (test n)
(if (zero? (remainder n d)) a b))
(monkey items op test d 0)))
(define (throw! item to)
(enqueue! (monkey-items to) item))
(define (process-item! ms m (mod #f))
(set-monkey-inspections! m (+ 1 (monkey-inspections m)))
(define item ((monkey-op m) (dequeue! (monkey-items m))))
(when mod
(set! item (remainder item mod)))
(throw! item (vector-ref ms ((monkey-test m) item))))
(define (run-round! ms (mod #f))
(let loop ([i 0])
(cond
[(= i (vector-length ms)) ms]
[(queue-empty? (monkey-items (vector-ref ms i))) (loop (+ 1 i))]
[#t (begin (process-item! ms (vector-ref ms i) mod)
(loop i))])))
(define (run-rounds! ms n (mod #f) (display? #f))
(for ([i (in-range n)])
(run-round! ms mod)
(when display? (display-items ms))))
(define (display-items ms)
(for ([m ms]
[i (in-naturals)])
(printf "Monkey ~a: ~a~n"
i
(string-join (map number->string (queue->list (monkey-items m))) ", "))))
(define (inspection-levels ms)
(vector->list (vector-map monkey-inspections ms)))
(define (monkey-business inspections)
(~> inspections
(sort >=)
(take 2)
(apply * _)))
(module+ main
(let* ([ms (read-input "input" 3)])
(run-rounds! ms 20)
(displayln (monkey-business (inspection-levels ms))))
(let* ([ms (read-input "input" 1)]
[mod (apply * (vector->list (vector-map monkey-divisor ms)))])
(run-rounds! ms 10000 mod)
(displayln (monkey-business (inspection-levels ms)))))

55
2022/day11/input Normal file
View file

@ -0,0 +1,55 @@
Monkey 0:
Starting items: 92, 73, 86, 83, 65, 51, 55, 93
Operation: new = old * 5
Test: divisible by 11
If true: throw to monkey 3
If false: throw to monkey 4
Monkey 1:
Starting items: 99, 67, 62, 61, 59, 98
Operation: new = old * old
Test: divisible by 2
If true: throw to monkey 6
If false: throw to monkey 7
Monkey 2:
Starting items: 81, 89, 56, 61, 99
Operation: new = old * 7
Test: divisible by 5
If true: throw to monkey 1
If false: throw to monkey 5
Monkey 3:
Starting items: 97, 74, 68
Operation: new = old + 1
Test: divisible by 17
If true: throw to monkey 2
If false: throw to monkey 5
Monkey 4:
Starting items: 78, 73
Operation: new = old + 3
Test: divisible by 19
If true: throw to monkey 2
If false: throw to monkey 3
Monkey 5:
Starting items: 50
Operation: new = old + 5
Test: divisible by 7
If true: throw to monkey 1
If false: throw to monkey 6
Monkey 6:
Starting items: 95, 88, 53, 75
Operation: new = old + 8
Test: divisible by 3
If true: throw to monkey 0
If false: throw to monkey 7
Monkey 7:
Starting items: 50, 77, 98, 85, 94, 56, 89
Operation: new = old + 2
Test: divisible by 13
If true: throw to monkey 4
If false: throw to monkey 0

27
2022/day11/test Normal file
View file

@ -0,0 +1,27 @@
Monkey 0:
Starting items: 79, 98
Operation: new = old * 19
Test: divisible by 23
If true: throw to monkey 2
If false: throw to monkey 3
Monkey 1:
Starting items: 54, 65, 75, 74
Operation: new = old + 6
Test: divisible by 19
If true: throw to monkey 2
If false: throw to monkey 0
Monkey 2:
Starting items: 79, 60, 97
Operation: new = old * old
Test: divisible by 13
If true: throw to monkey 1
If false: throw to monkey 3
Monkey 3:
Starting items: 74
Operation: new = old + 3
Test: divisible by 17
If true: throw to monkey 0
If false: throw to monkey 1

33
2022/day12/day12.bqn Normal file
View file

@ -0,0 +1,33 @@
map>•FLines•args
IndexOf{<˘>(𝕨)(÷˜|)/𝕨=𝕩}
se¨mapIndexOf¨"SE"
h-'a'¨'z'(e)'a'(s)map
_fixedpoint{𝔽𝔽_𝕣𝔽𝕩}
Dijkstra{h𝕊s:
vis(h)0
dist0(s)(h)
Neighbors{𝕊n:
nsn+¨(-)¨()01
ns ((´¨(vis)>¨)/) # inside the grid
ns ((´¨0¨)/) # inside the grid
ns({¬𝕩vis}¨ns)/ns # unvisited
(1({𝕩h}¨ns)-nh)/ns # reachable height
}
Visit{
´𝕩 ? 𝕩;
nexts((dist)(¬𝕩)) IndexOf 1
nexts({𝕩dist}¨nexts)nexts
nnexts
{dist (1+ndist)(𝕩)}¨Neighbors n # update distances
¬(n)𝕩 # mark node as visited
}
Visit _fixedpoint vis
dist
}
•Show eh Dijkstra s
ssmap IndexOf'a'
•Show ´ss(-h)Dijkstra e

41
2022/day12/input Normal file
View file

@ -0,0 +1,41 @@
abccccccaaccaaccccaaaaacccccaaaaccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaccccccccccccccccaaaccccccccccccaacccccccccccccccccccccccccccccccccccccccccaaaa
abaaaaccaaaaaccccaaaaaccccccaaaaccccccccccccccccccccaaacccccccccccaaaaaaaaaaaaaaaaaaccccccccccccccccaaaaccccccaaacaaccccccccccccccccccccccccccccccccccccccccaaaaa
abaaacccaaaaaaaacaaaaaacccccaaaaccccccccccccccccccccaaaaacccccccccaaaaaaaaaaaaaaaaacccccccccaaccccaaaaaacccccccaaaaaccccaaccccccccccccccacccccccccccccccccccaaaaa
abaaacccccaaaaaccccaaaaccccccaaacccccccccccccccccccaaaaaccccccccccaaaaaacacaaaaaacccccccccccaaccccaaaaacccccccccaaaaaaccaaaaaaccccccccccaaaccccacccccccccccaaaaaa
abaacccccaaaaaccccaacccccccccccccccaaaaacccccccccccaaaaacccccccccaaaaaaaaccaaaaaaacccccccaaaaaaaaccaaaaacccccccaaaaaaaccaaaaacccccccccccaaacccaaaccccccccccccccaa
abaaacccaaacaacccccccccccccccccccccaaaaaccccccccccccaaaaacccccccaaaaaaaaaccaaccaaacccccccaaaaaaaaccaacccccccccaaaaaaccaaaaaaccccccccccccaaaacaaaaccccccccccccccaa
abaaacccccccaaccccccccccccccccccccaaaaaaccccccccccccaaccccccaacccaaaccaaaaccccccaacccccccccaaaacccccccccccccccaacaaaccaaaaaaaccccccccccccajjjjjjjcccccccccccccccc
abcaacccccccccccccccccccccccccccccaaaaaaccccccccccccccccccccaaaaccccccaaaaccccccccccccccaacaaaaaccccccccccccccccccaaccccaaaaaacccccccccccjjjjjjjjjcccccaaaccccccc
abccccccccccccccccccccccccccccccccaaaaaaccaaccccccccccccccaaaaaacccccccaaacccccccccccaacaaaaaaaaccccccccccccccccccccccccaaccaaccccccccaiijjjjojjjjcccccaaacaccccc
abcccccccccccccccccccccccaaacccccccaaacacaaacccccccccccccccaaaaccccaaccccccccccccccccaaaaaaacccaccccccccccccccccccccccccaacccccccccccaiiijjooooojjkccaaaaaaaacccc
abccccccccccccccccccccccaaaaccccccccccaaaaaccccccccccccccccaaaaacccaaaaaccccccccccccccaaaaaacccccccccccccccccccccccccccccccccccccciiiiiiiioooooookkkcaaaaaaaacccc
abccccccccccccccccccccccaaaaccccccccccaaaaaaaacccccccccccccaacaaccaaaaacccccccaaacccaaaaaaaaccccccccccccccccccccccccccccccccccchiiiiiiiiooooouoookkkccaaaaaaccccc
abcccccccccaaccccccccccccaaaccccccccccccaaaaacccccccccccccccccccccaaaaaccccccaaaacccaaaaacaacccccccccccccaacaacccccccccccccccchhhiiiinnnooouuuuoookkkccaaaaaccccc
abcccccccccaaacccccccccccccccccccccccccaaaaacccccccccccccccccccccccaaaaacccccaaaaccccccaaccccccccccccccccaaaaacccccccccccccccchhhnnnnnnnnouuuuuuppkkkkaaaaaaccccc
abccccccaaaaaaaacccaaccccccccccccccccccaacaaccaacaaccccccccccccccccaacccccccccaaaccccccaacccccccccccccccaaaaacccccccccccccccchhhnnnnnnnnntuuxuuupppkkkkkacccccccc
abccccccaaaaaaaacacaaaacccccccccccccccccccaaccaaaaacccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaacccccccaacccccchhhnnnnttttttuxxxuuppppkkkkkcccccccc
abcccccccaaaaaaccaaaaaaccccccccccaaccccccccccaaaaaccccccccccccccccccccccccaaacccccccccccccccccccccccccccccaaaaccaaccaaacccaaahhhnnntttttttuxxxxuupppppllllccccccc
abcccccccaaaaaacccaaaacccccccccaaaaaaccccccccaaaaaacccccccccccccccccccccccaaacccccccccccccccccccccccccccccacccccaaaaaaacaaaaahhhppntttxxxxxxxxuuuuvpppplllccccccc
abcccccccaaaaaacccaaaacccccccccaaaaaacccccaaaaaaaaaccccccccccccccccccccaaaaaaaacccccccccccccccccccccaaaccccccaacaaaaaaccaaaaahhhpppttxxxxxxxxyuuvvvvvppplllcccccc
abcccccccaaccaacccaacaccaaaaccccaaaaacccccaaaaaaaaaccccccccccccccccccccaaaaaaaacccccccccccccccccccccaaacaaaaaaaccaaaaaaaaaaaaahhppptttxxxxxxyyyyyyvvvppplllcccccc
SbccccccccccccccccccccccaaaacccaaaaacccccccaaaaaaaaacaaaccccccccaacccccccaaaaaccccccccaaaaacccccccccaaaaaaaaaaaaaaaaaaaaaaaaacgggpppttxxxxEzzyyyyyvvvqqqlllcccccc
abccccccccccccccccccccccaaaacccaaaaacccccccaaaaaaaaccaaaccccccccaaacaaccaaaaaaccccccccaaaaacccccccaaaaaaaaaaaaaaaaaaaaaaaaaaacgggpppsssxxxyyyyyyvvvvvqqlllccccccc
abcccaaaccccccccccccccccaaaccccccccccccccccaaaaaaaaaaaaaccccccccaaaaaaccaaaaaacccccccaaaaaacccaaaccaaaaaccaaaaaaaaaaaacccccccccgggppssswwyyyyyyvvvvqqqqlllccccccc
abcaaaaaccccccccccccccccccccccccccccccccccaaaaaaaaaaaaacccccccaaaaaaacccaccaaacccccccaaaaaacccaaacccaaaaaaaaaaaccccaaacccaaaaacgggppsswwwyyyyyyvvqqqqqlllcccccccc
abcaaaaaaccccccccccccccccccccccccccccccccccaaccaaaaaaaaaaaccccaaaaaaacccccccccccccccccaaaaacccaaacaaaacaaaaaaaaccccaaacccaaaaacggpppsswwwywwyyyvvqqqmmmlccccccccc
abcaaaaaacccccccaacaaccccccccccccccccccccccccccaaaaaaaaaaaccccccaaaaacccccccccccccccccaaaccaaaaaaaaaaacccccccaacccccccccaaaaaacggpppsswwwwwwwwyvvqqqmmmcccccccccc
abcaaaaaccccccccaaaaaccccccccccccccccccccccccccccaaaaaaaacccccccaacaaacccccccccccccccccccccaaaaaaaaaccccccccccccccccccccaaaaaagggoossswwwwrrwwwvvqqmmmccccccccccc
abcaaaaacccccccaaaaaccccccccccccccccccccccccccccaaaaaaacccccccccaaccccccccccccccccccccccccccaaaaaaacccccccccccaaaccccccccaaaaagggooosssssrrrrwwwvqqmmmcccaacccccc
abcccccccccccccaaaaaaccccccccccccccccccccaacccccccccaaaccccccccccccccccccccccccccccccccccccccaaaaaaccccccccccccaaaaccccccaaaccgggooosssssrrrrrwwrrqmmmcccaacccccc
abcccccccccccccccaaaacccccccccccccccccccaaaacccccccacaaacccccccccccccccccccccccccccccccccccccaaaaaaacccccccccaaaaaacccccccccccgffoooooosoonrrrrrrrrmmmccaaaaacccc
abcccccccccccccccaccccccccccccccccccccccaaaacccccccaaaaacccccccccccccccccccccccccccccccccccccaaacaaacccccccccaaaaacccccccccccccfffoooooooonnnrrrrrmmmddcaaaaacccc
abccccccccccccccccccccccccccccccccccccccaaaaccccccccaaaaacccccccccccccccccccccccccaaaccccccccaacccccccccccccccaaaaaccccccccccccffffoooooonnnnnnrnnmmmdddaaaaacccc
abcccccccccccccccccccccccccccccccccccccccccccccccccaaaaaacccccccccccccccccaaaaaccaaaacccccccccccccccccccccccccaacccccccccccccccfffffffffeeeennnnnnmmdddaaaacccccc
abcccccccaaaccccccccaccccccccccccccccccccccccccccccaaaaccccccccccccaaaccccaaaaaccaaaaccccccccccccccccccccccccccccccccccccccccccccfffffffeeeeennnnnmddddaaaaaccccc
abcccaaccaaacccccaaaacccccaacccccccccccccccccccccccccaaacccccccccccaaacccaaaaaacccaaaccccccccccccccccccccccccccccccccccccccccccccccffffeeeeeeeedddddddcccaacccccc
abcccaaaaaaacccccaaaaaaccaaacccccccccccccccccccccccccccacccccccccccaaaaccaaaaaaccccccccccccccccccccccccccaacccccccccaaaccccccccccccccaaaaaaeeeeedddddcccccccccccc
abcccaaaaaacccccccaaaacccaaacaaaccccaaaacccccccccaaacaaaccccccaacccaaaacaaaaaaacccccccccccccccccccccccccaaaccccccccaaaacccccccccccccccccccaaaaeeddddccccccccccccc
abccccaaaaaaaacccaaaaaaaaaaaaaaaccccaaaacccccccccaaaaaaacccccaaacccaaaaaaaaaacccccccccccccccccccccccaaacaaaccccccccaaaaccccccccccccccccccccaaaccccccccccccccaaaca
abcccaaaaaaaaacccaacaaaaaaaaaaacccccaaaaccccccccccaaaaaacaaacaaacaaaaaaaaaacccccccccccccccaaacccccccaaaaaaaaaaccccccaaaccccccccccccccccccccaacccccccccccccccaaaaa
abcccaaaaaaaacccccccccccaaaaaacccccccaacccccccccccaaaaaaaaaaaaaaaaaaaaaaaaccccccccccccccccaaaacccccccaaaaaaaaacccccccccccccccccccccccccccccaaacccccccccccccccaaaa
abccaaaaaaacccccccccccccaaaaaaacccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccaaaacccccccaaaaaaaacccccccccccccccccccccccccccccccccccccccccccccccaaaaa

5
2022/day12/test Normal file
View file

@ -0,0 +1,5 @@
Sabqponm
abcryxxl
accszExk
acctuvwj
abdefghi

27
2022/day13/day13.bqn Normal file
View file

@ -0,0 +1,27 @@
Split,lf•Import"../bqn-libs/strings.bqn"
Parse•BQN{'⟩'¨((']'=𝕩)/)'⟨'¨(('['=𝕩)/)𝕩}
inParse¨>lfSplit¨(2lf)Split ¯1•FChars•args
Cmp{
𝕨((0==))𝕩 ? 𝕨(>-<)𝕩;
𝕨((0=))𝕩 ? 0;
0=𝕨 ? ¯1;
0=𝕩 ? 1;
0=𝕨(Cmp)𝕩 ? 𝕨(Cmp(1))𝕩;
0=𝕨 ? (𝕨)𝕊𝕩;
0=𝕩 ? 𝕨𝕊𝕩;
𝕨(Cmp)𝕩
}
•Show +´(×(1+))¯1=Cmp´˘in
_BubbleSort{Cmp _𝕣 in:
Bubble{
1𝕩 ? 𝕩;
1=((𝕩)in) Cmp (1𝕩)in ? (1𝕩)𝕊(𝕩)2𝕩;
(𝕩)𝕊1𝕩
}
Bubble(𝕩)𝕩
}
•Show ×´1+(Cmp _BubbleSort 26in)01

65
2022/day13/day13.rkt Normal file
View file

@ -0,0 +1,65 @@
#lang racket
(require threading
rebellion/base/comparator
rebellion/collection/list
rebellion/streaming/transducer
rebellion/streaming/reducer)
(define read-pairs
(lambda~> file->string
(string-split _ "\n\n")
(map (lambda (s) (string-split s "\n")) _)
(map (lambda (l) (map parse-packet l)) _)))
(define read-all
(lambda~> file->string
string-split
(map parse-packet _)))
(define parse-packet
(lambda~> (string-replace _ "," " ")
(with-input-from-string _ read)))
(define (packet-compare a b)
(match (list a b)
[(list x y) #:when (and (integer? x) (integer? y))
(cond
[(< x y) lesser]
[(> x y) greater]
[else equivalent])]
[(list '() '()) equivalent]
[(list '() _) lesser]
[(list _ '()) greater]
[(list (list* x xs) (list* y ys))
(let ([compxy (packet-compare x y)])
(if (eq? compxy equivalent)
(packet-compare xs ys)
compxy))]
[(list x y) #:when (and (integer? x) (list? y))
(packet-compare (list x) y)]
[(list x y) #:when (and (list? x) (integer? y))
(packet-compare x (list y))]))
(define packet<=>
(make-comparator packet-compare #:name 'packet<=>))
(define (part1 in)
(for/sum ([pair in]
[i (in-naturals)]
#:when (eq? lesser (apply packet-compare pair)))
(+ 1 i)))
(define (part2 in)
(for/product ([el (transduce (list* '((2)) '((6)) in)
(sorting packet<=>)
#:into into-list)]
[i (in-naturals)]
#:when (or (equal? el '((2)))
(equal? el '((6)))))
(+ 1 i)))
(module+ main
(displayln (part1 (read-pairs "input")))
(displayln (part2 (read-all "input"))))

449
2022/day13/input Normal file
View file

@ -0,0 +1,449 @@
[[9,1],[[[8],2,5],10,5],[[],[[0,10,2,10,2],[6]],5],[[10,[]],[],[[5,1,3,10],5],[[],[],[10,0]]],[[4,3],[[],[],[2,8,0,6]],4,[[8,1,7,1],1,[2,9,0],4,4]]]
[[5],[10,[[4,9,6,5,0],1,5,[],[]],[9],7,[]],[0,[[4,3,7,8],[0,1,2,5]]],[[[],[8,7,8,4,1],4,9,1],[[0,8,1],6,[0,7,1,1]],6,7,9]]
[[1,[[],3,[2,7,7,5]],[10,[7,7,7,1]],[[9],4,4,7],[[7],1]],[],[5,10,7],[[0,[],[]]],[]]
[[2,2],[[0,[9,5,0,6],10,[],[8,1,6,6,0]],0,[[],[],[7,3,1,8,1]],10,1]]
[[[2,7,7,[9,0,0]]],[[[1,6,0,1]],[[9,0,3,9,9],10],1,10,9],[[[3],2,[0,3,4],[],[7,4]],10,[8],9,6],[[5,2,6,4,[10,8]],[[0,5,9,10],[9,5],[10,3,4,0],0]],[]]
[[[],10,3,1,[[]]],[9,10],[],[[],3,10,5],[[[],4,3,0],[[],8,9,5,3],[],6]]
[[[8,[],8,3,8],7,[]],[8,0],[7,3]]
[[],[[0,10],[[5],[10,2,2]]],[[6,[6,5,0,7],[],[]],10,5],[[1,[10,4,4]],5,7,5,7]]
[9,9,7,10]
[9,9,7,10,0]
[[0,[3,0]],[0,7,4,10]]
[[[[],[],3,[2]]],[]]
[[],[10,1,[7,8,[10,7,0,8]],[],[0,[1,5,7,6],8,[5]]],[10]]
[[],[],[[[],9,[],9,[2]],[[10,8,1,6],[7,8],[8,2,5,6,9],[]],[],[9,6,2],[[0,4,7],[],3,8,[10,1,0,6,4]]]]
[[6,1],[[],[3,[8,7,5,4,1]],[[9,10,6],[2,1],[4,10,5]],[[2],[8,1,4],3]],[5],[1,[1,7]]]
[[2],[[4],5,9,10],[3,7,9],[]]
[[2,8,[4,[10],3],[],[2]],[0,[[3,0],[5,10,10]],[[10,1],[10,6,5,9,3]]],[],[],[[]]]
[[[10],[[],6,1,7]],[],[[[7],[3,10,8,7]]]]
[[[1,[],[0]],0,[[6,1,10],[4,4,6],3,[0,5,2],5],6]]
[[],[],[[[],4,[],0,[8,7]],7,5],[[8,[],1,1]],[3,7,[],[[6,2,0],9,[0,3],10,4]]]
[[[[9,5,5,1,2],1],9],[[[],3,4],[6,8,[4,3,3,10],[]],4],[[],1],[4]]
[[[[8,10,9,1,9],[],8],[[4,9,10],3],4],[0,9,6,[[9]]],[[[],[3],[],4],9]]
[[7,[[9,8,7,6,10]]],[[[7],[4,9,6,1],[7,2,1],3],8],[[9,[4,4,10,3,1]],[6,0,8,2]],[[[9,7,7,9,6],10,[1,4,0,4,9],[7,3,4],[9,9,8,3]]],[10,[[2],[4,2],[3],6,3]]]
[[[[0,6,6,9],[1],[8,3,5,3,7],[1,4,2,0]],[],[[10],[1],[7,5,5,10],[5,2,8],[0]],[6],[1,5,[],[5,2,7,6]]],[[[4,7,9,9,3],[7,4,5]],3,5],[[9,4,1,[5,1]]],[[4]],[10,[]]]
[[],[[5,[4,7,9,5]],[6,4]]]
[[[[7,1,7,3,2]],2,0,[[6,10]],[3]],[[],[8,[],[3]],[6,[],0,8,[10,5]]],[],[6,9,[[8,3,2,1],6]],[[3],[5,[]],[[0,4,7,0],0],[[1,2,7],[0,3],[10,6,0,5,5],[],4]]]
[[[],[0,[10,1,0]],[0,[5,5,3,5,4],8,[],[2,9,10,0]],[3,4,3],[[10,3],[7,6,5,3],[2]]],[10]]
[[4,[0,6,1,[],[7,8,7,5]],[9]]]
[[3,8,10,7],[[6,7],[[2,7,9,4,9]],0,[],4],[[],[[2],0,4]]]
[[0,[[5,6,9,8],2],2,10,[2]]]
[[3,9,[[],[3]],[[]],5],[],[[[3,5,1]],9,3]]
[[6,1,[]],[[9,9],8,6,[6]],[[],3,4,[2]],[],[3,[],[3,[5,9,8,5,9],5,[]]]]
[[3,[10,[8,3],8,2],[10],[5,4,[5,2,0,6,5],[],[8,10]]],[5,6,6,[]],[]]
[[],[],[[10,1,7,6,3],[[7,1,10,10],7,5,[]],[[],10,[5,2,7],6,[0,0,1]],4,9],[[[6,10,8,4],8,[3,0,5],10,3]],[]]
[[0,[],9,[3]]]
[[],[1,[],3],[[8,5],[1,[5,2,4],[4,9,4]],7,[9,[10,7,6,4,6],6,[9,2,1,3],3],5],[[8,[1,7]],6,8,[[4,3],8]]]
[[],[7],[6,10,[]],[],[[[1,4,7,2],6]]]
[[[],4],[[6,[4,5,4,5,8]],[[3,4],9,7],6,6],[7]]
[[[]],[[5,[]],2,[8,6],[3,[3,0,1,9,5]],[[9,9]]],[[8,[]],[5],[1],[[],[0,1,1],9,[8,2,7,6]]],[[[],9],[4,[7,5],[7,5]]]]
[[[[8,7,4,0],5,[]],[10,10],5,9]]
[[[[10,1,5,7,10],10,[],[1,7]],8,10],[[10,[9,6,10,9]],8,4,[[2,1,0],0],[6,7,8,[6,8],10]],[[],[[],[1,2,1],8],7,[[3,0,2,7,9],9],[5]],[5,[1,1,[]]]]
[[[[8],0,8,[]]],[[7],[[6],6,[9,0,6],[1,2,1,0],2]],[[],2,5,4,[1,[3,8],[5],7]],[[[0,1]],[5,[9,9,7,2,8],4],9],[0,3]]
[[[[0,9],8,[]],2],[],[[[1,2,5,1,4]]],[[[1,7,5,2],4]],[[],9,3]]
[[[],8,[]],[9,8],[3,6,[]],[10,0,4,5]]
[[],[9],[4],[[1,7,2]]]
[[2,1],[[]]]
[[],[],[[8,5,[1,7,2,5],[1,5,9,2],[2,6]],0,[],9,0],[5,[],[9,[0,2,6,0],[8,3,9,0],[2,4,7],[7,2,10]],6],[3,[[7,1,0,5,0],9,[9],[0,10,8]],[]]]
[[[0],[[4,9,5,2],[10,8],8],10,[[3,1],3,[8,10,3,2]],[4]],[]]
[[[[],4,10,5]],[],[[[5,10],6],3,10],[7,0,8,9,[[2,9,6],9]],[10,7,[2,6,10,3]]]
[[[3,3,[2,7,0,10],[9,10,2,7,10],[5,2,7,7,0]],1,5,[[0,5,3,2,7],5,[3,3],[2],10]],[10,[[9,3,0],[1,9,7,4,3],[8,4],[]],8],[[7,8,8,[],2],10,[[0,9],9,5,[7,7,5,4]],1,6]]
[[10,[4]]]
[[1,10],[[[5,5],[],2],2,[],1]]
[[],[[]],[],[5],[0,[],[6,[9,10,2,8,7],[4,7,1]],7]]
[[8],[6,[[4],[7,0],0,10],5],[[[4,10,9],9]],[10,3,[[6,1,5,8,2]]],[[10,2,0],[[5,2,10,6],[],[8,9,6,6],[],[9]]]]
[[9],[[10,[8,4,4,8,10],5],[6],[[5],8,6],4,[[0,6,4]]],[10,2,0],[[[2,5],[1,9,1,1,7],0,[3,4,0,7,7]],5,[],[],0]]
[[[[],[3,8,7,8]],10,9,3],[[],0,[[7,10,10],1,[0,2],2,[1,7,0]],[[2,0,7,4,8],10,[9,4,2,0],[]],8],[[7,[2,2,8]],[[10,4,7,3]],[[8],3,[3]]],[],[[10,[9,6],6,[8,0,10,5]],[[9,10],10]]]
[[[[2]],6,[[2,4],[]],4],[[1,10],[[1,1,7,8],4,[1,4,4],[7,6,8,6],[9,10,7,2]],[2,6,[0,9,2]],[]],[[[1,9,9,3,5]],[],[[2,4],3],[[0,10],8,[9,6],[0,3,4]]],[[[8],[9,1,5,9],3,1,7],[2,[2,0,8],[3,4,9,5,5],[],7]]]
[[[0,[0],3,[8,8,7]],2,9,8,5],[],[[5,4],[3,[4,4,6,4,2],1],0],[[10,5,[2,9]],2]]
[[5,1,5,8],[[5,9,4,0]]]
[[9,8,[5,2,6,[2,4,8,10,1]],10],[6],[[[7,8,2,2,9],9,7],[10,0,0,[],6],[[],3,8,[],[8]],[[3,6],4,3,[]]],[8,10,8,7],[[5],9]]
[]
[[9,5],[5,5,[[3,7,1,6,10]]],[[2,9,[],10]],[3,[4,[3],[0,8]],2],[[1,[7,6,5]],10,[1,[8,0,2,6,7],[4,3],[9,7,10,3],7]]]
[[[[4]]],[9,7],[]]
[[4,1,3,8,[5,[2,5,9,7,9]]],[[1,[0,7,4],[],[6,3,8,1,3]],[8,[8,3,5],9,[7,0,6,10]],7,[[8],10,[5,4,10]]]]
[[[1,[]],9,8,0],[1,[[5,9,10]]],[[[4,6,2,2],[],2],10,4,[6,[],10]]]
[[[5,[9,4,3,0,3]],6],[[3,10,10,[0,5,6,6,9],7],[4,[],10,[1,9,6,7],[9,6,4,2,0]],[3],10,9],[[],[2,[6,7,8,5]]]]
[[[],[[7,4,2],[10],[2,10,6],5],9],[],[[[1,10,2,9]],[],8,[[6,0,8],[10,0,2,9],0,9]],[[6,0,1,[0],8],[1,[10,3],[2,3,5,10],[5,4,4,6,8],[]],[[9,1,10,10],10,[8,3,9],2,5]],[]]
[[8,9,7,[[10,3,2],[8,0,7],9,3],5]]
[[],[],[1,9,0,9,8]]
[[10]]
[[[7,[9,9],8,10],[[],[9,9,7,8]]],[[4,[5,10,4,7]]],[]]
[[],[[3,4,[3,7,5],2,[0,8,5,8]],[6,[6,6]],[3,2,[],[1,7]]]]
[[5,2],[2],[[[7,8],[],[3,5,8],[10]],5],[8,[9,9,3],7,3,[4]],[[],[5,[9],[5,10,10,4],[4,6,3],8],[[9,9,10,3],4,10,[0]]]]
[[0,3,5,[[7,5,3,6,10],3,2]],[],[[10,[5,8,4],8,8,1],[9,5],2,[],[[8,9,0,7],[3,6]]],[3,2,4],[4,5,[[4,0,2],[1],[3],[6,0]]]]
[[6,9,0,3],[],[],[4,[[0,3,8,6,9]]],[2,7,[],[[4,6,9,4],[4,10,8,7,0],[3,5],[6,10,5]],[3,1,[]]]]
[[],[],[[[7,6,8],[6,8,1],[9],[3],8]]]
[[8,[1,4,[5,1,4,8],3,6],[10,[8,2,5,1],10],[0,6,[9,10,6,3,4],[8,6]],7],[1],[]]
[[6,6],[0],[],[1,3,[[7,9],1,6],10,[[8,3,5],[10,7,5,8,10],[10],10,[]]],[5,[[]],6,0]]
[[[10,8],[[2,9,4]]],[[4,2,[7,4,6,7,7],[0,6,7,7],10]],[[2,[7,9],[2,2,0]]]]
[[1]]
[[[7,2],8,[[2],4,5,[0],8]],[]]
[[3,6],[[[2],[6,10,1,5,3],[3,3],9],1,9,0,5],[[8,[4,8,6,9],[9,7],[7,8],[3,7]],10,6],[],[[[5,0],[7,1],[5,4]],5,6,6,[5,3,[2],[10,8,5]]]]
[[[[8,2,4,4]],[],[[8,10,9,3],6,8,[3,9,4,5]],[[],8],[7,[]]],[9,8]]
[[[],[[9,0]],6],[9,[[0,5],8,[6,7,3,6]],[],[[9,4,5,8,10],10,4,[10],5],8]]
[[],[[[],4,[3,9,8],[4,10,7,1]],[],7,3,[2,[8,3],8,7,[6,4,0,6,2]]],[[9,[0,10,0,5,0]],[],[2]]]
[[10,[10,10,0,[0,8,7]],5,5,[[7,4,1,5],[4,2,8,1]]]]
[[],[[[2,2,5],9,1],[2,[4,4],[],5],5,10,[]],[0],[[6,[5],[3],3]],[7,5,5,3]]
[[[9,[0,9,3],[7,1,9,8],7],[6,0,[1]],10],[3,1],[],[[],[],[],3,[[6,6,9,3,7],[6,4]]]]
[[[[6,2],10,8]],[[[0,7,8,4],[],7,4],0,3,3,[2,1]],[[6,[5,2],[8,1,7,3]],2,[[9,4,8],[7,0],[],10],8]]
[[],[1,[],[[4,8],1,7,[0,1,3,4,8],4]]]
[[[[5,7,9],0,[9,7,5]],6,7,[4,9],5],[[0,[7,7,4,0,0],1,5,9]]]
[[4,[7,[10,6],7,10,[]]],[],[[[8],7,[0],7],9,[[1,1,4],[2,10,7]]],[[[9,10,7,2],1,4,6,9],[8]]]
[[3,5]]
[[],[[7],4,9],[[7,[2,10,9],6,8],3,9,[]]]
[[[8,5],[[3,7,7,0],10]],[[],[[],[2,9,0,4]],[[8,3,10,7,1],[]],3]]
[[],[10,6,0,[],6],[[],[5,6,[1,2]],[9],10,[[9,7,6,4],6,6]],[]]
[[10,[9,10,[],[3,5,4,9,5]],7,9,[4,[0,10]]],[[0,[6,2,4,4,2],9,[7,9,4]],[10,[],[8],8]]]
[[4,0,6,6],[1,6,[[2,5,7]],[]],[]]
[[[[0,5,0,9,4]],6,[0],5,4],[[10,[3,10,4,8]],[0,7,1,10,[3,10,8,5]],7,10,4]]
[[9,[9],4,[5]],[],[9,[0],9,[[1,3,0,7,10],[3,0,6,2]]]]
[[[2,[7,6,7,6,0]],[1,[7,2,1,4,9],[7,2],3,[5,6,2]]]]
[[],[[6,[0,8,1,6,0],[4]],0,2,[[0,1],10,[1],2]]]
[[[[2,5,4]],[],4,0],[6,[9,[8,4,9,3],9,4,[2]],[4,[10]],[[5,2,2,1],9,7],[5,[8],[10,8,6,2]]],[8,4,[],[10,0,2],0],[10,5]]
[[],[3],[],[8,4,[[1,10],2,2,[7,4,9]],7]]
[[[],10,10,5,[[7],6]],[[3,[4,6,9,3,2],[10]]],[9,7,[5,10,[2,3,7,3,0],[]],9,[2,2,[6,9,7,0]]],[[0],5,3,[[8,3,10,1]],[[9],[8,10,8,1,6],[9,5,1,10,2]]]]
[[9,[],9]]
[[3],[[[0]]],[],[]]
[[],[],[3,[]],[[2],[8,[6,5],10],[[0,5,4],1],5]]
[[[5,1,8],1,0],[[]],[[8,[2,5,9,3,5],[8,9,5,9,9]],8,[[4,6,5,9]],0]]
[[8,[5,6]],[5,10,1,[10,3,8,10,[0,2]],[1,0]]]
[[[3,1,7,[3,2,2,9,1],4],0,3,[[],[],10,[],9]],[[[6,5,3,6,8],1],[[]],3],[6,4],[[9,7,[6,3],6],9],[[[4,2,2],8,[8,1,7],[6,6]],[10],[[4,10,9,10,1],0,[],[9]],4]]
[[4,7,6],[[[9,9,5],[2,4],10,2],[6,[0,9,0]],8,4,2]]
[[[7],[[9,5],0,1],7],[[3,3,4,[],[3,2,10]]],[],[4,6,4,[],[[4,6,1],[4,7],[0,9,10,10],8,0]],[[],3,1,3,[6,[3],0,[5,1,5,3,0],5]]]
[[1,[[],[9,4,6,1]],[[],[10]]],[8,[1],[[7],6,[9,10,6,0,5],[1]],3]]
[[0,[],10,[],[]],[[[4,4,1,8]],7,8],[5]]
[[1,[]]]
[[[[10,8,8],9,8],[0,6],9,[[4,6,1,7],[4,3],[10],4],3]]
[[[2,[10,7,10,10,8]],5,3],[9,4],[[[2,1],2],[3,0,[7],0,[5]]]]
[[[],[6,[]],[[4,2],[0,4]],5],[]]
[[[7,[0,2,0],6,5,[]],[[10],0,[5,4]],[9,5,[9,2,4],3]]]
[[[8],7,4,2],[],[10],[4,[[6,7,4],2,3,[6,1,0]],4,[1]]]
[[[[7,4,5,5,1],[9,1],[0]],[6,[8,2,3,0]],[2]],[7,[5],[8],[]],[9,[6,[8,4,2,2],1],4],[8,[[],[0]]],[[],3,8,9]]
[[8,0,[[0,7,9]],0,[7]]]
[[[[]],[]]]
[[4]]
[[6,[1,0,10],1,[[10,3,1,2],[4,6,5,7],5],[1,1,[3,1,8],6]],[2,1],[5,10,[1,[3,0,8],6]],[[0,9,[9]],4,[[]],7,[1,[7,4]]],[]]
[[[[8,6],[6,2],[8],1]],[10,10,[[2,5],6,[4],[1,7,2,9],10],1,7],[],[[[10,7,5],5],[2,8,9],[[1,4,9]]],[[[9,10,6,2,4],1,8,[9,7,2,0],[]],10,5,5]]
[[]]
[[1,[[1],[],[8]],[[6,1,6,7,5],1,4],10],[[7],[],3,[10,7],0]]
[[[]],[[[9]],[0],10,6],[[7]]]
[[1,[[1,6,10,1,4],3,2,[8,7,9],[6,5,0,4]],[[],2,[10,1]],[[],[9,2,7],[],0,5]],[[6,[9],[],6,[9,10,2]]],[4,3,[[2,1,3,7],4,3,[3],4],9,[3,9,[2,8],1]]]
[[0,[[6,2]],[2,2],[[]]],[],[],[[[3,4],5,7,10]],[5,3]]
[[[[8,2,0,1],[10],6],2,7,10],[[[]],10,1],[8,7,1,0],[[[2,9,2,8],[3,3,0,6],[2,0,2],[],0],1,[9,[4],5,[1,6,1]]],[[7],[[8],[7,4],[2],4],3,[[10,6,5,3],9]]]
[[9,8,[[],[9,0]],1],[9,8,8,10,7],[10,[8,0,[10,6,3],[6,3,0,4,8]],10,0]]
[[[],1,[],[[9,9],0,[0,2]],4],[5,0],[4,[],7,7,0],[],[[4]]]
[[[[]],4,8,6,8],[9,[[10]],[[2,8,6],[9,0,2,8,4]],10,[1,[3,10,8]]],[[[]]]]
[[5,6,5,4,6]]
[[[9,8,5,3,7],2,[[0,4],[10,2,5,10,1]],0],[[]],[6,[7,[1,5,10],[3],[6,1],[3,10]]]]
[[[[3,3]],[],[6,5,[0]],[[8,7,9],[2],[1,5,2,5],[6,7,4,4],9],[9,[5,7,4,7,1],7,[10],4]]]
[[[7,[5]],6,[[7,9]]],[[[8,2],[1,7,4,2],[8,8,8],[1,9,3,5,8]],7,3,9,[2,2,6]]]
[[],[[],2,[[1],[3,9,0],2,8],[[8,9],[1,2,3,1],[]]],[[9,[],[],[9],[5,1,3,6]],3,[1,[],[],[4,7,9,10],[10,5,5,8]],[0,[]]],[[0,5,4,7,[10,4,10,6,4]],[[4,8],0,7,10]]]
[[[[],7,[],8],2,7],[10,2,[[10,8,0,7,3],8],0],[8,8],[8]]
[[5,10]]
[[10,[[9,1,1],0],[[3,1],1],[2,4,[4,0]],4],[9,[[0],4,3],10],[[[6,3,7],4,[],9]],[6,[[]],[]]]
[[[[10,9,7,10,4],6,0],5,[[5,3,5,1,9],0,[3,7,10,7,5]]],[],[],[1,10],[]]
[[[[7,8],5,[8]],[[0,0],[9,7,6,6],[6,9],2],0],[7,[4,9,[0,2,2],[10]],[],9,10],[[],[[]],[2,8,6,8,1],[4,9,[0],10,7],[4]]]
[[[[]],[[0,0,2,5]],[],5],[],[10]]
[[[[7,7,6,6,3],3,4,6,[3,8,10]],4,[[9,1,9,4],9,[2,6,4,1,0],9,1]]]
[[[],[8,6,8]],[9,[9,[4,8,3,4,7],9,10,10],[[3,10,5],[10,1]],[]],[],[[1,[1,3,0,6,10],[2,0,10,4,3]]]]
[[10,[3],10,[[2,3,6,7,6],2,4],5],[6,[]]]
[[[]]]
[[9],[1,[[6,9,7,6,5],[6],[2,3,3,3],10]]]
[[[2,2],2],[4],[9,1,4,[[3,9],10],0]]
[[],[[4]],[[5,[7,3,2],0,[5,5,1,8,1]],3],[4,[3,[6,3],[],[9,0],[0,4,2,10,6]]],[[9,0,[3,3,9,6]],[[2,3,3,1],[10],5,4],[2,[],1,5,3]]]
[[[[7,1,3],[0],3,[5,6,6,8],6],4,2,7,[[],[3,3,4],[9,2],[7]]],[],[7,9,[9,[6,8,7]],[[7,2],[1],8,6,[7,9]]],[],[[1],7,4]]
[[],[[9,3,8],4,0,10],[[[3,3,5],[5,3,3,6],[5,3,7]],9,8,[9,4,[],2,[0,3,8,0]],[[6,9],[1,8],4,[2,3,9,2]]],[],[[10,[7,6,6,1],[],6],[1],[10,[4,8,3,1,2]],[[7,9],8],0]]
[[9,[[2,10]],[[4,8],[],4,8,[0]]],[],[[[1,3,9],[7],[9,4,9]],7,5,8],[[[1,2,3],7],5]]
[[1],[[],[[8,8]]],[2,3,10,[[1,3,5,8],[0,5,5,7],4],4],[2,5,6]]
[[3,0],[10,8,[10],[[4,7,3,2],[2]],7],[[[8],3],3],[2,[7,[10],6],[],8,[2]],[[8,8,6,9,[8,2]],3,[[6,2,7,4,1],[1,7],[4,0,1],[5,4]],6]]
[[5,3],[[],2,[2,[5,9],[3,4,5,0,10],[0,2,6,0,5],[5,1,5]],5]]
[[3,1,[7,8,[7,3],6],[],[[10,0,6],3,[6,0,8,4,5]]],[],[[[],6,[6,5,4,8,2],[]],[],[6,[3],9,2]],[0,10,7,[[],5,[10,2,0,7,2],[]]],[4,[1,8,[2],[1]],8,1]]
[[],[[],[[3,7]],6,[[9,10]]],[[6,[0,2,9],8,[7,7,2,4],[]],10,6,0,[1,[],3,6,[6,1,2]]],[[[],[10,8,6,2,6]],[4,[],[5,5,5,9],7]]]
[[[],6],[[[3,4,5,8],[9,3,3],8,[],[8,5,10,0]]],[[4,9,[7,2,0]],[1,[9]],[]]]
[[7,[[3,0,0,1],8,9,7,[3,9,8,5,1]]],[[[4],4,4,7,7],0]]
[[8,[]],[4,[[1,5,6,10,10]]]]
[[2,4,[[],9],[[9],8,[9]],[6,[6,2,9,10,6],4,3]]]
[[9,0,8],[[5,9],6,[[2,2,4,4],1,[0,3,1,10,5],[4,8,7,0,6],5],[],9],[5,[10],0,4],[[],1,8,9,[[],[0,8,2],[0,10,7],0,[4,3]]]]
[[8,[3,1],[],[[2],[10],8,8,[8,3,1,8,5]],[10,[3,3,6]]],[],[[8,[6],[3,3],4],9],[4,2,8,4],[[5,[9,4],[6,7,6,7,4]],0,[0,[],[9],10,[5,4,10,9]],[[],9,5]]]
[[[[4,8],10,[8],[2,1]],[[8,3,0,6],[5,6,6,0],6,[1,1,2,6],[0]],10,8,6],[5,[7,[],[4,1]],4,[4]],[9,[3,[5,4,1],[0,1,9,10]],2,[[2,0,2],[]]]]
[[],[10,[10,[10,7,8,2,1],7,[9,6],6],8],[[6,0,1],[8,[0,4,0],[],[2],[9,9]]],[],[3]]
[[],[[[]],8,7,[[10,3,2],2]],[1,[0,6,[1,4,1,4]],5,[6,[8,0],[4,4,2,5,5]],1],[2,[[8,7],3],0,3,[6,[],[]]],[6,[3,2,0,10,[7,1,8,3,10]],[],9,[4,9,[5,3],5]]]
[[2,5,9],[],[]]
[[],[6]]
[[],[[4,8]],[1,6],[10,1,[[3,10,0]]],[]]
[[5,3,[5],[9,[8,7,2]],[[10],[9,3,0,4,6]]],[[],9,9,9],[[[],8,1],7,[[],[1,7,1,3],10,8,[9,5,9,5,0]],3,4],[2],[[[6,4,10],4,7],4,9,[[3,9,1,1],[],[8,3,9],[3,9,1,10],[8,0,6,4]]]]
[[[[7,7,9,6],2,4]],[[[4,10,2,8],10,9,3],0],[1,[],3]]
[[],[],[],[[[5,5],[],[]],[[9,6,10,4],7]]]
[[0,4,8,7,[5,[4,3,7],[7,1,9,5],10]],[],[[9]],[[1,[7],[10,1],[2,10,5,3],[6,6,7,8,3]],[7],[8,0,8,3],6],[2,[[7,6,4,10,2],[2],5],[9,[1,2,3,5],4,[]]]]
[[],[[3],[6,6,[6,2,3,5],4],[6,0],1]]
[[[1],0],[],[[],[10,0],5],[2,3],[[6],4]]
[[6,2,[9,4,1,[0,4,2]]],[8],[[6]],[6,[[2,3,7,0],[10],[]],[2,7],1,8]]
[[],[6,[[5,8,4,0,3],1,[9,1,4,3],0,[3,5,9,8]],[[],5,[10,0,4,7],[3,10,2,6],[7,4]],9,[]],[[[1]],10,[[4],[5,2,3,5]],[10,9]]]
[[9,6,[]],[5,[[5,4],[10,2,2,6,10]],[10,[7,10,8,2],[2,6,0,2],7,[9,1,7]],[[5,9],7,[0,4,2,2],0]],[[0,[10,5,4,5,6],[6],[9]],[[5,1,8,8],[9,2,5,4,0],[]]],[[],[[8,8,8,9],7,[3,6,8,3,1],[8],7]]]
[[[[3,7],[9],7],6],[[6,[6],[9,1,0,3],[8,5,3,6],4],[8,0,7,2]],[[4,[]],7],[],[9,6]]
[[[[7],[],4,[1,0,3,9]],[[1,9,3,8,5],[1,4,6],0]],[[],0],[[6,[10,1,4,10],3,0,0],10]]
[[1,3,9,[10,[10,10,1,3,7]],6],[[[7,4],8,8]],[[8,[10],[7,0,0,9],[0,3],3],[0,5,[2],1],[[3,8,1],10]],[[[3,1,2],6,5,[0,9,7,1,7],10],[[6,6,8,2,2],[10]],[],9,3]]
[[4,4]]
[[9,[0,8]],[[0,[],0],[0,7],10],[]]
[[2,[3,[9,8,10,7,3],6,[],[4,0,5]],0,5,9],[],[0,2],[[[10,5,7,7,10]],3],[4]]
[[5,4,9,1],[[[8,0,2,8,0],10,4,8,[3,6]],[],[[4,0,6]]],[1,[0,[6],[5,2,2,2,8],4,2]],[[6,[2,8,10,0],7,9,10],[[5,0],[]]]]
[[],[],[6,4,[[6],7,[6],[9,1]],[[3,6,7,1],4,[],[8],8]],[[[5,8,6,7,9],10,[7,10,10]],3]]
[[],[10,3,[2,[8,0,7],3,[6,3,2,6,7],9]],[1,[[1,10],[],[],6]],[],[[8,[6],9,[]],[[3,10,4,2,4],3,[4,4,4,10,10],4,[]],[4,4,[0,10,6,3],1],9,[6]]]
[[[],8],[[5,10,[10,1,9],9]]]
[[9,[[0,8,2]],[9,9,2,[],[8,3,5,9]]]]
[[[1,[8]]]]
[[],[4]]
[[8,5,6,[3],3],[8,0,[]],[[[2,9,4,3]],[[10,2,3,9,0],[3,2,1],4],10],[[10,[5,5,1],[3],0],0,[3,8]],[[3,6]]]
[[2,[[6,3,7,10,7],[4]],[[6,0],[5],3],8],[6,7,[[4,0,7],5,[10,2,8,8],[10,6,9,8]],[3,[5,7,9,1]],6],[3,[[4,6,10],1,[]],[10,[3,10,6,9,6]],[8,10,9],[4,[5,10,9]]],[[7]]]
[3,2,1,2,7]
[3,2,1,2]
[[[3,[],[],3],5,1,6]]
[[[0,4,0,[7,8,0],10],[[2],8],[[9],2,1]],[[[],[1,3,5,10],5,[6]],[1],[9,10],[[4,3,8],[0,4,5,8],[4],7],4],[7,[[5,2],[1,4,8]],5,[2]],[[[10,7,8],[],[]],0,4,[2,[1,5,10],9,[4,1],7]]]
[[[10,[],9],[[]],[0,7,5,0,[]],3,1]]
[[[[9,7,3,7,8]],6,3,[]],[[[],6,[8,9,6,0,7],[],[2,4]],2,[5,3,[2],[8,9,8],5],4],[],[]]
[[5,[]],[[[9]],5,4],[8,6,[5,[0],6,7]],[[[8,3,5],[3],9],0,[4,[3,7]],9],[[7,0],[[9,7,8],[2,8,6],2,[],[9,3,1]]]]
[[1,3,[3,4,[1,7,3,6],5],[8]],[[9,0],[]],[4,4,[3,[2,2,5],[5]],[10],[[3]]],[],[[[],[5],2,6,7],[[2,2],[8,4]],8,8]]
[[],[2],[[[0,6,4,1],0],7],[5,[[2,8]]]]
[[5,3,[]],[6,9,[5],1,0],[0,0],[2],[9,0,[],0,3]]
[[],[],[[[4,4,2,3,1],[7,1],[5,2,2,4,0]],5,[3],10],[[10,[9,6,5,2,7],10,[],[1,8,1]],8],[[[9,2,10],[4,5,7,8,10],[5,9,4,4],[3,2,8,4,7]],1,6,9,[[0,4,9,10],[9,3,3,8,10],10,[],5]]]
[[[[7],[6],4,5],[4],[[9,1,2],5,10,[9,9]],[1,9]]]
[[[2,[],[],[9,3]],[3,3,0,0],[[2,10,2,4,1],[9,4,2,7,9]]],[[[7],10],[9,5],6,5],[[4],4],[],[4]]
[[9,[9],4,9,[2]],[[[3,5,8,5],[],[6,3,1,9]]],[[],7,[],7]]
[[[7],7],[],[4,[[],5,4,3,9],6,[[5,0,8],1],[3,[4,6,0,1,10],7]],[]]
[[[7]]]
[[[],7,[[8,9],5,[6,1,7,7,4],0,2]],[[3,8],[[5,9,2,0],[6,0,8,8,4],9],10,6,[[5,10]]]]
[[[],[],2,5,[]],[0,[[8]],[4,3,10,[6,0]],[],10],[[1,1,9,3,[7,6,4,2,8]]],[10,[[8,2]],[],3,[9,[]]]]
[[],[],[[[10,7],6,[5,3,6,5]],4,[6,9,10],5]]
[[[[9,4,7],2,7,3]],[[[4,6,10,6,5]],0],[5],[6,[],0,1],[4]]
[[9,6],[[[9,6,6,2],6],5,4,7],[2,[],[]],[[],7,7,[[3],[0,3,8]],0],[[[0,0,9],5],[6,[2,1],[],7,9],[[6,4,4,4],5,9],0]]
[[[10],5,7,1],[7],[7,7,9,4]]
[[7,1,[8,2,[4],[]]],[[[10,3,8,4,2],0,[6,10,0,3],[9,8],[4,4,6,3]],[[],5,3,2]],[[[5,5]],2],[]]
[[[[8,2,1,6,5],7,6,0,2],[7],[[3,3,6,3,3],[7,10,5],5,[3,0,2,8],2],[[],1,9,[7,3],[2,1]]],[],[[5],[10,5,0,[]],[5,[6],[],1]],[]]
[[[[4,1,1]],[0,1,4],5,[[3,1,10],[7,4,8,8],[]]],[],[]]
[[[[6,4,1,5,1],[2],3,7],5],[[6,3,2],[]]]
[[7,2],[],[9,[[0,0],2,7],[3]],[3,[[8],9,4],[10,[],[9,3,8]],[]],[[]]]
[[[]],[0],[]]
[[[]],[3],[],[[[7,5,3,0],[7,1,8],0,[3]],[10,[6,7],[5,9,8,1,1],6],[2,0,[10,7,10]]]]
[[10,8,[4,[3,1,9,9],1,[1]]]]
[[[[]],7,3,[]]]
[[5,[6,1,0,0],[[1,4]],3,[[5],0]],[1],[[[7,10,1,10,1],1,10],4,3,5],[[[1],8,[5,1,9,0,4]],[[],[9],[0,1,2],[8,5,8,0,1]]]]
[[[[5],[],[0,3,8,10]],[3],[],[[8,3,1],7,0],[]],[[3,2,6],[],8,[[3,4,4,5],[],[7],[],8]],[[1,5,[1]],7]]
[[1,[[0,7,4,7,5]],[],2,4],[[9,0,[0,9,6,6,10],[0,7,7]],5]]
[[[7,10,1,2],[3,[5,1,8,10],[0],0]],[5,[0,6],[[2,5,5,1,1],[5,1,5,5,2],8],[4,[]],[[4,4,8,6,6],[8,9,0],[2]]],[3,[9,[10],[4,2],[10,1,2,6]]],[[7,[5,3],[10],2],[[5,9,10],[8,2],0,[7]],5,6,2]]
[[7,[7,2,1,[6,5],[10,0,3]],[[3,10,0,3]],0,[9]],[[]],[],[2,[[3,5,6,0]],0,3,[9,[9,0,5,1],[1,3,5,5],6,[5,9,1,6,1]]],[8,[[2,2],[2,4,8,0],[2],3],[7,2,2],[2,1,10,[3,0,9,8,3],2]]]
[[3,1],[5,7,[4,[],8,9]]]
[[[[],4,5,3,[5,5,0,7,4]],[[5],1,[],1]],[2,2]]
[[10,[[4,2,7,9],1,[0,4,9,7]],3,[[8,5]],2]]
[[1,0]]
[[[[7]],7,6,6,9]]
[[[1,0,[8,5,6],9],4,10,8,[4,9]],[9,[[7,1,6,1,6],9,[9,2],[],10]],[[[9],0],7,4,[[4,1,3],[8],2,[6,0,5,8,0],[2,4]],[2,3,[]]]]
[[[[3],[10,10,9,6,2]]],[[5,[5,4,8,8],[8,9],[4,3,6]],[],4,9,[[],[7,10],[6,9,1,4,9],[],[5,2,2]]],[5,[],[2,9,3,[9],10],7,[5,[2,2,1,8]]],[7,9,2],[[3,8,[],[9,0,1,7],7],[7],[],5]]
[[[],[],0,[[],3,[],4],[8,[6,10,7],1,5]],[[[8],10],5,[10]],[]]
[[1,7,[4,[6,3,0,3],[3],[]]],[[[8,7,6,7,0],[2],0,[7,7,6,3,0]]],[10],[4,7,[10,[6,9]],2,3]]
[[[8,4,[0,4,1,9],7,8]],[],[[]]]
[[[[9,8,3,0],4,9],1,[5,6],2],[8,[5]],[[[8,8,4,10],[0,8,3,4,5],[10],7,2],1],[9,[3,[2,8]],[[],[1,8,6,6,0],10,[8,10,3],8],1]]
[[[]],[[[6,1,0],9,[3]],0,0],[9,3,1,[2],[1,[0,3]]],[1,[[3,2,5,2]],5,[[],10,[6,6,7],0,[]]]]
[[1,10,4],[5,4,8],[[[5,7,1,2,4],4,[8,4,10,2,10],[0,7,4,9,6]],[[3,5,4,0],[2,5],10,[4,8,9,9,1]],[2,[3]]]]
[[1,[[3,1,3],6,[2,8,10,8,2]],[6,[1,5,2,1,3],[],[0,4],4],[[0,7,4],[2,1,5,5,4]]]]
[[[3,4],3,0,1],[2,[[4,1,5],2,[1,2,4],5,9],9,5,[[],3,[3,9,10],[],[5]]],[[8,[1,4,1,10,10],4,[1,9,1]],7,9],[8,1,8,[4,6],[[6,10,7,1,5],[8,9,4,5],[],[]]],[8,10,1]]
[[8,6,[2,[10,2,7,1,0]],[6,[7]],9]]
[[3,[[8,7,2,5,6],1,7,4,[0,4,10]],[8],[[2,7,5,5,1],[6],0,8,8]],[[[],[1,0,3,10],7,[0,2,8,8,0],4],[1],5,[[7],[3,6,5]]]]
[[[6,[10,9,3,4],[6,10],9]],[[[6,6,2,2,3],7,4,7,[]],7,3],[[6],0],[[6,0],[[10,1,0],5,7,[5,8,2,1],4],[],[7]]]
[[],[[10,10,6,6,10]],[9,[[5,2,9,2],2,8,[]],1,[10,0,10,4],[[3],2,4]],[[1,[3,10,8,4,7],[1,7,2,2,4],[2,4,6,5,5]],1,[[2,8,1,8,4]],[2,[10,3,7],[0,1,0],[6,10,2,10],0],[[],[4,10,0,10],2]],[]]
[[[[1,0],10,[],[1,2,10],[8,2,4,1]],8,2,[5,3,[10,0],[9,7,7,10],[]]],[0,10],[[6,9],[[5,8],0,[5,3,8],0],1]]
[[9,[4,8,4,7],8,9,7],[[],1,9],[2,9],[],[[9]]]
[[[[10,7,5,0,2],8,[8,2],10],10,[6,0,[],8]],[]]
[[[],0,3,8,[0,[7,2,6,7,8],2]],[2,2,5,[7,5],[]]]
[[[0,3]],[7],[4],[6,1,[9,[8,5,7,1]]],[[],[[1,8,3,0],[10,10,5,3],3,[3,7],[10,4,3]],8,[6]]]
[[[3,5,[0,2],10],1,[[],6,[0,7],8],[10]],[[7,8,[6,6,6]],[0,[8,1],[],9],4],[[[7,9]],1,6,3],[[8,5,[10]],0,[[0],7,[6]],7]]
[[1,[[9,3,3]]]]
[[],[],[[[7]],8,1,4],[[[6,0],4],1,2,[6],[[9,4,6,10,10],8,6,[6,4,4,3],4]]]
[[],[],[[[],[10,1,7],8,[]],4],[8,[[0,6],[]],1,[[0,10]]],[4,3,[],6]]
[[[[5,0,7,8],[8,5,7],[1],5,[1,6,9,0,2]],10,3,1],[[],[5],5,5],[[],5,[[],3,[10,9],4],[[10]],[]]]
[[[[2,2,0,10,10],2,5,10,0],[],[[4,5,1,10],1,8,7,[1,6,10,8]]]]
[[[7,[6,0,6],2],4,[[1,10,3],[3,5],[2,8,5,4,3],5,3],[],0],[2,3,6,4],[4,8,9,[0,8,[0,9,0,1]],[7]],[7,6,[8,[],3],[[5,6,0,6],[],[6,10,2,1]]],[8,5,10,7,8]]
[[2,[[9],[3],[10,5],8],9,3,[9,[7,6,7],[0,10,7]]],[[[3,0,9,0],[0,8],9,10],4,[[],8,[5,9,1,10,3],9,[8,5]]]]
[[0],[[]],[[7,2,6],[[],[0,7,8,2,1]],[9,9],[[6,1,4,8],10,6],10],[8,2,[],4],[]]
[[[[1,10,10,8],[9,1],[]],[2,[7,10,2],[0,8,9,8,6],[],3],[[]]],[[],[1,0,[],[2,7,7,6,8]],[[0,0,4],[0,2],4]],[[[4],[1,9,6,9,3],1],[[5],2,5],1],[6],[[[],0],10,7]]
[[[],[4,[],1],9,8],[[[10,3]]],[0],[7,[5,[4,10,1,5],4,[0]]]]
[[9,[],8,[]],[8,[],[4,2,[6],[],1],[6,[5,10]],0],[8,10,[[4,2],[10,7,9,3],6,[10,7,3,10,3]],[6,7,[6,3,2,6],[4,3,8,0,7],7]],[[],0,[7,[4,8,1,6],10,4],2,[10]]]
[[],[[[0,2,6,5,9],4,[6,2]],[5,5,[4,6]],9],[3],[10,[[],[10,7,7,10],[5,0],4,[3,3,2]],0,9]]
[[[6,[],10,[4,4,1]],0,7,[4,[6,2,4],[8,8]],1],[[5,[],1],[[1,6,5],[7,5,6,2,3],5],7]]
[[[9,[8,1,8,7,9]],9,3]]
[[],[[4,[9,10,2]],[4],10]]
[[[],10,[]],[6,9],[7,2]]
[[],[[[5,5,1],7,10,8,2]],[],[1,[7,1,10,2,7],[[8,3,2,6,2],5],[[]],[5,0,7]],[[],[7,1,4,7],3,9]]
[[[],0,7,[9,5,[9,9,5,10],5,4]],[[],[[9,4,3,2],8,6,[8],0]],[9]]
[[1,10,[],6,5],[8,2,0,3],[],[4,[2,6,[],[0,5]],[0],9]]
[[],[[[5],[],[6,1],[4],[8,7]],[[6,2,7,1,8]]],[10,[0,[7,5,3,4],[],5,[6,3]]],[]]
[[1,4,[[6,4,0,1,9]],[1,[],6,[2,5,6,10],[0]]],[[],3,[],[],[[8,10,5],10]],[[1]]]
[[6,[4,6],8,[9],[2,8,2,[5,6,10,8]]],[2,6,5,[8,10]],[]]
[[],[1,[],2,0],[7,9,[[0],[10,9],[3],0],4,[[3,7,2,8],[],[6,5,10],[2,3,4,4],7]],[4,2,[[2,6,10,7],8,6,9,3],1]]
[[[7],9,[[2,1,9,10],4]],[],[[]],[[10,[2,2,8,5],0],[[4,10,2,10,7],0,[0,0,7],[3,3],[9,1]]],[1,[4,[8,4],[]]]]
[[1,[],10,2,0]]
[[[4,10,[8,1],10],[[],[10,8],[6,7,2],6,3],3,[[],7,5]],[[[5,6],0,6,9,5],[[9,6,9],4,[8,2],0,7]]]
[[],[6,7],[8,[10,[0,6,4,0,9],[],[]],6,[[2,1,2,6],[10,10,7,3,4],6,[],[8]]]]
[[[[5,3,7,3],7,[3],4,[5]],10,9,[1,2,6]],[9],[[2,10,[9,2],[10,1,7]],[9,0,[4,3,6,0,4],2,[4,4,9]]]]
[[[[],[3,4]],[]]]
[[[[6,1,9],6,3],0,10,9,5],[]]
[[[[0,7,6,5],8,[],[2,6,6,1,10],[10,9]],5,5,4],[4,[[8],[7]],8,10],[]]
[[1,3,2],[]]
[[[[10,3],9,[10,1]],[4,4,[0,1,6,1,4]]]]
[[[],[3],[[7],5,7],[[4,2],6,[]]],[[[1,3,3,6],[1]]],[1,0,6,[[10,5,0,7]]],[]]
[[8,0],[3,3,[[9,10,6],[0,2,8],5],[4,9,[],1],[10,[8],8]],[4,5]]
[[3,[[9,5,7,7],1,10,5],[[8,10,2,5,5],5,[2,7,6],[8,2,3,10]],[[],[10],2]],[8,1]]
[[[[9,5,8],[7]]],[7,[10,6,[1,9,3]],[[0,8,7,1],7,[0,6,8,1,8]],4],[[2,7],[[8,7,10]]]]
[[[],[],[[4]],[[9,9,0,8]],4],[[[8,0,10,10,9],2,5],[[8,3,4,1,3],[9,7],2,3],[[7,4,1],[7,5,9]]],[],[10,6],[]]
[[2],[[8],[]],[]]
[[2,[2,4]],[]]
[[[8,[1,0]],2,7],[3,[7,[6,8,10,8],3,[3,7,6,4],[5,4,6]],[5]],[1,[]],[],[[0,[1,3,6,8,8]],2,[[5,2,2,0],[9,5],0],[],[4]]]

23
2022/day13/test Normal file
View file

@ -0,0 +1,23 @@
[1,1,3,1,1]
[1,1,5,1,1]
[[1],[2,3,4]]
[[1],4]
[9]
[[8,7,6]]
[[4,4],4,4]
[[4,4],4,4,4]
[7,7,7,7]
[7,7,7]
[]
[3]
[[[]]]
[[]]
[1,[2,[3,[4,[5,6,7]]]],8,9]
[1,[2,[3,[4,[5,6,0]]]],8,9]