NonlinearFruit / advent-of-code-2023

Using thematic puzzles to TDD in Nushell

Home Page:https://adventofcode.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Advent of Code 2023

GitHub last commit (branch) GitHub Workflow Status (with event) star count test count


                                                 
                                                 
                                                 
                        *                          13 
                                                 
        *                                          12 
                                                 
      *                                            11 
            *                                      10 
                                                 
               *                                    9 
                    *                               8 
                                                 
                  *            .   '    '  .        7 
                                  *                 6 
                         '                     ' 
                                  ~        *        5 
                 ...'''''          .''.~        '
              .''          .   ~..'*   '. ~  .      4 *
            .'               '''../......'''     
            :             /\    -/  :            
            '.            -   - /  .'            
              '..    -     -   *..'                 3 **
    ----@        '''..*......'''                    2 **
  * ! /^\                                           1 **

Prerequisites

cargo install nushell # https://github.com/nushell/nushell
cargo install aoc-cli # https://github.com/scarvalhojr/aoc-cli
vim ~/.adventofcode.session # https://github.com/scarvalhojr/aoc-cli?tab=readme-ov-file#session-cookie-

Usage

nu -c 'use ci; ci debug day'
Debugs the given day

Usage:
  > debug day <day> 

Flags:
  -h, --help - Display the help message for this command

Parameters:
  day <string>: 

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci pull puzzle'
Download the puzzle input and description

Usage:
  > pull puzzle (day) 

Flags:
  -h, --help - Display the help message for this command

Parameters:
  day <string>:  (optional)

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci run puzzle'
Run a puzzle solver

Usage:
  > run puzzle (day) 

Flags:
  -h, --help - Display the help message for this command

Parameters:
  day <string>:  (optional)

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci submit answer'
Submit an answer to a puzzle

Usage:
  > submit answer (day) 

Flags:
  -h, --help - Display the help message for this command

Parameters:
  day <string>:  (optional)

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci test'
Runs all the unit tests

Usage:
  > test 

Subcommands:
  test day - Runs all the unit tests for a single day

Flags:
  -h, --help - Display the help message for this command

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci test day'
Runs all the unit tests for a single day

Usage:
  > test day <day> 

Flags:
  -h, --help - Display the help message for this command

Parameters:
  day <string>: 

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


nu -c 'use ci; ci update readme'
Recalculate the README

Usage:
  > update readme 

Flags:
  -h, --help - Display the help message for this command

Input/output types:
  ╭───┬───────┬────────╮
  │ # │ input │ output │
  ├───┼───────┼────────┤
  │ 0 │ any   │ any    │
  ╰───┴───────┴────────╯


Nushell v0.87.1: Lessons Learned

  • Test result summary (eg: Failed: 0 Passed: 50 Skipped: 5)
  • Printing test name with the test error
  • Printing filename + line + column with error
  • Parameterized tests
  • Nesting tests (eg: describe)
  • Find regex matches in string with their corresponding index in the string (eg: 'day-3')
  • Version specific documentation (eg: v0.85.0 vs v0.87.1)
  • Unexpected errors 'assert index wrong' that show the internal interpreter error and not the source code issue
  • Unexpected errors 'to noun' that show the internal interpreter error and not the source code issue
    • can't convert list<error> to NUON
  • Unexpected white space dependent syntax (eg: 1+1 vs 1 + 1)
  • run-tests should output structured data (eg: test name, status, execution time, etc)
  • String interpolation parsing has unexpected behavior
    • Double quote allows escaping ( and singles don't
  • $var | get field works at times when $var.field feels like it should but doesn't
  • Negative asserts (eg: assert not equal or assert does not contain)
  • Navigating through an element in an array doesn't work as expected (eg: $questions.Data.$number.Proofs.References fails, $questions.Data | get $number | get Proofs.References works)

About

Using thematic puzzles to TDD in Nushell

https://adventofcode.com/


Languages

Language:Nushell 100.0%