Advent of Code 2017 =================== December 4th ------------ To ensure security, a valid passphrase must contain no duplicate words. For example: - aa bb cc dd ee is valid. - aa bb cc dd aa is not valid - the word aa appears more than once. - aa bb cc dd aaa is valid - aa and aaa count as different words. The system's full passphrase list is available as your puzzle input. How many passphrases are valid? .. code:: ipython3 from notebook_preamble import J, V, define I'll assume the input is a Joy sequence of sequences of integers. :: [[5 1 9 5] [7 5 4 3] [2 4 6 8]] So, obviously, the initial form will be a ``step`` function: :: AoC2017.4 == 0 swap [F +] step :: F == [size] [unique size] cleave = The ``step_zero`` combinator includes the ``0 swap`` that would normally open one of these definitions: .. code:: ipython3 J('[step_zero] help') .. parsed-literal:: ==== Help on step_zero ==== 0 roll> step ---- end (step_zero) :: AoC2017.4 == [F +] step_zero .. code:: ipython3 define('AoC2017.4 [[size] [unique size] cleave = +] step_zero') .. code:: ipython3 J(''' [[5 1 9 5] [7 5 4 3] [2 4 6 8]] AoC2017.4 ''') .. parsed-literal:: 2