2024-02 in factor
This commit is contained in:
parent
4c205242a5
commit
25b4bd0a48
2 changed files with 52 additions and 0 deletions
7
2024/02-Red-Nosed_Reports/02-tests.factor
Normal file
7
2024/02-Red-Nosed_Reports/02-tests.factor
Normal file
|
@ -0,0 +1,7 @@
|
|||
! Copyright (C) 2024 Julien (adyxax) Dessaux.
|
||||
! See https://factorcode.org/license.txt for BSD license.
|
||||
USING: tools.test aoc.2024.02.private ;
|
||||
IN: aoc.2024.02.tests
|
||||
|
||||
{ 2 } [ "example" part1 ] unit-test
|
||||
{ 4 } [ "example" part2 ] unit-test
|
45
2024/02-Red-Nosed_Reports/02.factor
Normal file
45
2024/02-Red-Nosed_Reports/02.factor
Normal file
|
@ -0,0 +1,45 @@
|
|||
! Copyright (C) 2024 Julien (adyxax) Dessaux.
|
||||
! See https://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.short-circuit.smart grouping io io.encodings.utf8 io.files
|
||||
kernel math math.order math.parser prettyprint sequences splitting ;
|
||||
IN: aoc.2024.02
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: load_input ( filename -- reports ) ! reports are a sequence of levels
|
||||
"~/git/adyxax/aoc/2024/02-Red-Nosed_Reports/"
|
||||
swap append utf8 file-lines
|
||||
[ split-words [ string>number ] map ] map ;
|
||||
|
||||
: bounded? ( levels -- ? )
|
||||
[ - abs 1 3 between? ] monotonic? ;
|
||||
|
||||
: any_monotonic? ( levels -- ? )
|
||||
{ [ [ > ] monotonic? ]
|
||||
[ [ < ] monotonic? ]
|
||||
} || ;
|
||||
|
||||
: safe? ( levels -- ? )
|
||||
{ [ any_monotonic? ] [ bounded? ] } && ;
|
||||
|
||||
: part1 ( filename -- n )
|
||||
load_input
|
||||
[ safe? ] count ;
|
||||
|
||||
: candidates ( report -- reports )
|
||||
dup length <iota> [ over remove-nth ] map nip ;
|
||||
|
||||
: safish? ( report -- ? )
|
||||
candidates [ safe? ] any? ;
|
||||
|
||||
: part2 ( filename -- n )
|
||||
load_input
|
||||
[ safish? ] count ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: aoc202402 ( -- )
|
||||
"input" part1 .
|
||||
"input" part2 . ;
|
||||
|
||||
MAIN: aoc202402
|
Loading…
Add table
Reference in a new issue