diff --git a/src/2015/index.html b/src/2015/index.html index 1f181686..79ace513 100644 --- a/src/2015/index.html +++ b/src/2015/index.html @@ -124,29 +124,29 @@

   $year=< \|/ --*-- 25 ** >o< 24 ** - >>@<< 23 ** - >>o<<<< 22 ** - >>o<<<*<< 21 ** - >>*<<<o>>*< 20 ** - >>@<<<@<<*<O< 19 ** - >*<<<@<<<@<<*<< 18 ** - >@>>*<<<o<<@>*<<< 17 ** - >@>*<O>>>*>o<o<<<o< 16 ** - >>@<*<<<@>>o<<<*<<<*< 15 ** - >o<@<*>@<<*>>>O>>>@<<<< 14 ** - >>o>>>O<<*<O<<O<<<o>>>*<< 13 ** - >>@>>@>>>o<@<<<o<@<*<<<@<<< 12 ** - >>*>>>*<<<*>>*<<*>@<o<<@>>*<< 11 ** - >>@>>o>>O<@>>>o>>>@<*<<O<<<@<<< 10 ** - >>@<<<O<O>>>o>O<<<*<<<*>o>>@<<*<< 9 ** - >>*>o<<O<*<<<*>>>@<O>o<<<@<<<o>o<<< 8 ** - >o>*<*>>>*>>>O>>>@>>>O>>@<*<<*<<@<*<< 7 ** - >O>>>o<@<<O>>>*>>O>>>O<O<@>>@<<<*>>*<<< 6 ** - >*>@<@>>>@>>O<<<o>>>@>>>@>>>@>>O<O<<<*<<< 5 ** - >>@>>>*>o>>>*>@>>o>@>>>*>>@>O<<<o<<<@<<<*<< 4 ** - >>@>O>>>o<<*<<<O>o>>@>>>@>>>o>>>O>>@<<<*>>O<< 3 ** - >O<<<@<<*>>>@<<<@>>O>O<O>>O>>O<@>o>>>*<<o<<<o<< 2 ** ->>@<<o<<*<<<o>*<<o<<<o>>o<@>>@<<<*>>>*>O>o<<*<<<< 1 ** + >>O<< 23 ** + >O<<<O< 22 ** + >@>>>@<<< 21 ** + >>o<<<O>>O< 20 ** + >>o>*<<<@<<<< 19 ** + >>@>>*<@<O<*<@< 18 ** + >@>>>*>O>>*>>*<<< 17 ** + >>O<@>>>@<<<@<@<<*< 16 ** + >*<<O<*>*>*<<*<<<*<<< 15 ** + >>o<<<@<<<@>O<O<<@>*<<< 14 ** + >O<@>*<<*>>>o>>o>*<<<o<*< 13 ** + >o<<O<<<o<<<@>O>*<<o>>o<<<< 12 ** + >O<<@>>*<<<@>>o>*<<*<o>@<<<*< 11 ** + >@<<<o>O>>*>>>o>o>>>@>O<<O>@<@< 10 ** + >o<o<<<@<<<O>>O>>>*>>@<@<O<O<<<o< 9 ** + >>@<o>>*<<<@<<o>>>*>O>>o<@<@<<<O<<< 8 ** + >>o<<o>>o>>>O>>>o<<<O<<o>>>@<*>>>*<<< 7 ** + >>@>o>>>o<o<<O<<<@<<<o<<<@>>o<<O<<<@<<< 6 ** + >>O>>O<<o>O<@<<<O<<o>>O<<O<*>@<@<<<o>>>O< 5 ** + >>O>>>O<<<@<<o>>>*>>>O>o<<<@>>>o<<<@<<*>O<< 4 ** + >@>O<o<<@>>>O<<<*>*<<<O>O>*>>*<<<*<O<o>O>>*<< 3 ** + >>*<<<O>*>>O>>*>>>*<o>>@>>>o>>O>o>>*<<<*<<o>o<< 2 ** +>>@<*>@<<O>>>@<O<@>*>>>O>>>*<<*<*>>>*>>>O>>*<<o<< 1 ** | | | | _ _ __ ___|___|___ __ _ _ @@ -262,7 +262,7 @@

   $year=< 100% { transform: translate(2em, 100vh) rotate(1turn) scale(0.0, 0.0); } } -
+
\ No newline at end of file diff --git a/src/2016/index.html b/src/2016/index.html index 4f7a9527..9455401e 100644 --- a/src/2016/index.html +++ b/src/2016/index.html @@ -32,13 +32,12 @@

   $year=<
-
+
\ No newline at end of file diff --git a/src/2017/index.html b/src/2017/index.html index 36724a41..42a8fc4c 100644 --- a/src/2017/index.html +++ b/src/2017/index.html @@ -35,77 +35,77 @@

   $year=< .calendar .calendar-edge { color:#cccccc; } .calendar .calendar-edge, .calendar .calendar-day, .calendar .calendar-mark-complete, .calendar .calendar-mark-verycomplete { animation-name:none; } .calendar-perfect .calendar-star i { animation:anim-twinkle 2s linear infinite; } @keyframes anim-twinkle { 0% { filter:brightness(100%); transform:none; } 25% { filter:brightness(200%); transform:scale(1.5,1.5);} 50% { filter:brightness(100%); transform:none; } } -.calendar-perfect .calendar-day1 .calendar-star i { animation-delay:3.9s; } -.calendar-perfect .calendar-day2 .calendar-star i { animation-delay:3.1s; } -.calendar-perfect .calendar-day3 .calendar-star i { animation-delay:3.0s; } -.calendar-perfect .calendar-day4 .calendar-star i { animation-delay:3.3s; } -.calendar-perfect .calendar-day5 .calendar-star i { animation-delay:0.8s; } -.calendar-perfect .calendar-day6 .calendar-star i { animation-delay:2.9s; } -.calendar-perfect .calendar-day7 .calendar-star i { animation-delay:2.9s; } -.calendar-perfect .calendar-day8 .calendar-star i { animation-delay:2.0s; } -.calendar-perfect .calendar-day9 .calendar-star i { animation-delay:3.8s; } -.calendar-perfect .calendar-day10 .calendar-star i { animation-delay:1.3s; } -.calendar-perfect .calendar-day11 .calendar-star i { animation-delay:0.5s; } -.calendar-perfect .calendar-day12 .calendar-star i { animation-delay:0.9s; } -.calendar-perfect .calendar-day13 .calendar-star i { animation-delay:1.7s; } -.calendar-perfect .calendar-day14 .calendar-star i { animation-delay:2.6s; } -.calendar-perfect .calendar-day15 .calendar-star i { animation-delay:1.5s; } -.calendar-perfect .calendar-day16 .calendar-star i { animation-delay:1.5s; } -.calendar-perfect .calendar-day17 .calendar-star i { animation-delay:3.7s; } -.calendar-perfect .calendar-day18 .calendar-star i { animation-delay:3.6s; } -.calendar-perfect .calendar-day19 .calendar-star i { animation-delay:3.7s; } -.calendar-perfect .calendar-day20 .calendar-star i { animation-delay:3.6s; } -.calendar-perfect .calendar-day21 .calendar-star i { animation-delay:3.9s; } -.calendar-perfect .calendar-day22 .calendar-star i { animation-delay:0.1s; } -.calendar-perfect .calendar-day23 .calendar-star i { animation-delay:3.8s; } -.calendar-perfect .calendar-day24 .calendar-star i { animation-delay:0.1s; } -.calendar-perfect .calendar-day25 .calendar-star i { animation-delay:2.0s; } -.calendar-perfect .calendar-printer { height:9em; overflow:hidden; box-sizing:border-box; animation-name:anim-printer; animation-duration:15.1666666666667s; animation-fill-mode:both; animation-timing-function:steps(7,start); animation-delay:7.9s; } +.calendar-perfect .calendar-day1 .calendar-star i { animation-delay:3.2s; } +.calendar-perfect .calendar-day2 .calendar-star i { animation-delay:4.0s; } +.calendar-perfect .calendar-day3 .calendar-star i { animation-delay:1.4s; } +.calendar-perfect .calendar-day4 .calendar-star i { animation-delay:3.4s; } +.calendar-perfect .calendar-day5 .calendar-star i { animation-delay:2.0s; } +.calendar-perfect .calendar-day6 .calendar-star i { animation-delay:3.6s; } +.calendar-perfect .calendar-day7 .calendar-star i { animation-delay:1.8s; } +.calendar-perfect .calendar-day8 .calendar-star i { animation-delay:2.7s; } +.calendar-perfect .calendar-day9 .calendar-star i { animation-delay:1.7s; } +.calendar-perfect .calendar-day10 .calendar-star i { animation-delay:2.4s; } +.calendar-perfect .calendar-day11 .calendar-star i { animation-delay:1.5s; } +.calendar-perfect .calendar-day12 .calendar-star i { animation-delay:0.4s; } +.calendar-perfect .calendar-day13 .calendar-star i { animation-delay:1.9s; } +.calendar-perfect .calendar-day14 .calendar-star i { animation-delay:1.6s; } +.calendar-perfect .calendar-day15 .calendar-star i { animation-delay:2.3s; } +.calendar-perfect .calendar-day16 .calendar-star i { animation-delay:0.7s; } +.calendar-perfect .calendar-day17 .calendar-star i { animation-delay:2.0s; } +.calendar-perfect .calendar-day18 .calendar-star i { animation-delay:2.5s; } +.calendar-perfect .calendar-day19 .calendar-star i { animation-delay:2.0s; } +.calendar-perfect .calendar-day20 .calendar-star i { animation-delay:2.8s; } +.calendar-perfect .calendar-day21 .calendar-star i { animation-delay:0.7s; } +.calendar-perfect .calendar-day22 .calendar-star i { animation-delay:0.7s; } +.calendar-perfect .calendar-day23 .calendar-star i { animation-delay:3.4s; } +.calendar-perfect .calendar-day24 .calendar-star i { animation-delay:0.2s; } +.calendar-perfect .calendar-day25 .calendar-star i { animation-delay:3.7s; } +.calendar-perfect .calendar-printer { height:9em; overflow:hidden; box-sizing:border-box; animation-name:anim-printer; animation-duration:15.1666666666667s; animation-fill-mode:both; animation-timing-function:steps(7,start); animation-delay:8.3s; } .calendar-perfect .calendar-print-edge { display:inline-block; color:#999999; } .calendar-perfect .calendar-print-slot { display:inline-block; overflow:hidden; vertical-align:bottom; } .calendar-perfect .calendar-print-text { display:inline-block; overflow:hidden; vertical-align:bottom; color:#cccccc; animation-name:anim-printer-text; animation-duration:1s; animation-fill-mode:both; animation-timing-function:steps(18,end); } -@keyframes anim-printer { 0% { padding-top:9em; } 100% { padding-top:0em; } } @keyframes anim-printer-text { 0% { width:0em; } 100% { width:10.8em; } } .calendar .calendar-ornament4 { color:#009900; } -.calendar .calendar-ornament0 { color:#ff9900; } -.calendar .calendar-ornament2 { color:#aaaaaa; } -.calendar > a.calendar-verycomplete > .calendar-star { color:#ffff66; text-shadow:0 0 5px #ffff66; } -.calendar > a > span { animation-name:anim-reveal; animation-duration:1s; animation-fill-mode:both; } @keyframes anim-reveal { 0% { opacity:0.2; filter:grayscale(100%) brightness(100%); } 10% { opacity:1.0; filter:grayscale(100%) brightness(1000%); } 100% { opacity:1.0; filter:grayscale(0%) brightness(100%); } } .calendar > a.calendar-verycomplete > .calendar-star { animation-name:anim-reveal-star; animation-duration:1s; animation-fill-mode:both; } @keyframes anim-reveal-star { 0% { opacity:0.2; filter:grayscale(100%) brightness(100%); text-shadow:0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66; } 10% { opacity:1.0; filter:grayscale(100%) brightness(1000%); text-shadow:0 0 5px #ffff66, 0 0 10px #ffff66, 0 0 50px #ffff66, 0 0 100px #ffff66; } 100% { opacity:1.0; filter:grayscale(0%) brightness(100%); text-shadow:0 0 5px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66; } } .calendar .calendar-disabled { animation-play-state:paused; } +@keyframes anim-printer { 0% { padding-top:9em; } 100% { padding-top:0em; } } @keyframes anim-printer-text { 0% { width:0em; } 100% { width:10.8em; } } .calendar > a.calendar-verycomplete > .calendar-star { color:#ffff66; text-shadow:0 0 5px #ffff66; } +.calendar .calendar-ornament5 { color:#990099; } .calendar .calendar-ornament1 { color:#0066ff; } +.calendar .calendar-ornament0 { color:#ff9900; } .calendar .calendar-ornament3 { color:#ff0000; } -.calendar .calendar-ornament5 { color:#990099; } +.calendar > a > span { animation-name:anim-reveal; animation-duration:1s; animation-fill-mode:both; } @keyframes anim-reveal { 0% { opacity:0.2; filter:grayscale(100%) brightness(100%); } 10% { opacity:1.0; filter:grayscale(100%) brightness(1000%); } 100% { opacity:1.0; filter:grayscale(0%) brightness(100%); } } .calendar > a.calendar-verycomplete > .calendar-star { animation-name:anim-reveal-star; animation-duration:1s; animation-fill-mode:both; } @keyframes anim-reveal-star { 0% { opacity:0.2; filter:grayscale(100%) brightness(100%); text-shadow:0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66; } 10% { opacity:1.0; filter:grayscale(100%) brightness(1000%); text-shadow:0 0 5px #ffff66, 0 0 10px #ffff66, 0 0 50px #ffff66, 0 0 100px #ffff66; } 100% { opacity:1.0; filter:grayscale(0%) brightness(100%); text-shadow:0 0 5px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66, 0 0 0px #ffff66; } } .calendar .calendar-disabled { animation-play-state:paused; } +.calendar .calendar-ornament4 { color:#009900; } +.calendar .calendar-ornament2 { color:#aaaaaa; } -
|O| Naughty | Nice |O| -|O| -------------------+------------------- |O| -|O| The Easter Bunny | Shahar Talmi |O| -|O| Guy Kori | Dvir Cooper |O| -|O| Anton Feoktistov | Alon Yehezkel |O| -|O| Salomėja | GabiGrin |O| -|O| Matan Keidar | bolshchikov |O|
+
|O| Naughty | Nice |O| +|O| -------------------+------------------- |O| +|O| The Easter Bunny | Shahar Talmi |O| +|O| Kobi Zakut | Yair Haimovitch |O| +|O| Schniz | Noam Neeman |O| +|O| Aaron Vinestock | Alon Yehezkel |O| +|O| Serhii Tuniehov | bolshchikov |O|
.-----------------------------------------------. -| ooo*o | 25 ** -| o|(* | 24 ** -| *oo | 23 ** -| *= | 22 ** -| oADvTooo * | 21 ** -| C0DE* 1 | 20 ** -| * A0 | 19 ** -| *o o| P7 | 18 ** -| * o L1 | 17 ** -| *oo xo= | 16 ** -| * 6 | 15 ** -| 4* | 14 ** -| ooAoC * | 13 ** -| []o2017 * | 12 ** -| o*oToo | 11 ** -| * | 10 ** -| *[] [] | 9 ** -| * |(oToo | 8 ** -| * | | 7 ** -| *o | 6 ** -| o* o|(o | 5 ** -| *|(o | 4 ** -| oo* | 3 ** -| =oo*o | 2 ** -| =oo|*oo | 1 ** +| o*oo | 25 ** +| oo|* | 24 ** +| o=o* | 23 ** +| =* | 22 ** +| o*o| | 21 ** +| *Vo | 20 ** +| |( 9 oV* | 19 ** +| hi 0oo* | 18 ** +| o momo 0ho*= | 17 ** +| * 1moV | 16 ** +| *ooo | 15 ** +| *o | 14 ** +| * o b | 13 ** +| o*o du | 12 ** +| wifi o eg* | 11 ** +| HCF * | 10 ** +| o* | 9 ** +| oo*o[] | 8 ** +| o*[]o | 7 ** +| V[]*o | 6 ** +| o[]* | 5 ** +| *oTo | 4 ** +| =*oo=oo | 3 ** +| *o=o | 2 ** +| o*oo | 1 ** '-----------------------------------------------'
diff --git a/src/2018/index.html b/src/2018/index.html index 55b7cf24..da065cd7 100644 --- a/src/2018/index.html +++ b/src/2018/index.html @@ -31,18 +31,18 @@

   $year=<
-
     .         .         .        .        .       25 **
- .        .         .        .       \  /      .   24 **
-              .         .         \_\_\|_/__/      23 **
-       .         .            .  o-_/.()__-------  22 **
-   .       .            *         \____            21 **
-               .       |\|            \_\_ ___  /  20 **
-       .               |\|              / |   ||   19 **
-  .           _________|\|_________    /  |   ||   18 **
+
     .         .         .        .        .       25 **
+ .        .         .        .       \  /      .   24 **
+              .         .         \_\_\|_/__/      23 **
+       .         .            .  o-_/.()__-------  22 **
+   .       .            *         \____            21 **
+               .       |\|            \_\_ ___  /  20 **
+       .               |\|              / |   ||   19 **
+  .           _________|\|_________    /  |   ||   18 **
       ___-----  ###########  ##### -----___        17 **
 ___---  ###  #####    #########  #####     ---___  16 **
-      ) ))          ) )                    ____    15 **
-   .-(-((-.     .--(-(-.                  / _\ \   14 **
+      ) ))          ) )                    ____    15 **
+   .-(-((-.     .--(-(-.                  / _\ \   14 **
    '------'_    '------'_                |/|  |/|  13 **
    |      | )   |      | )               |_|  |/|  12 **
    |      |/    |      |/                     |/|  11 **
@@ -106,7 +106,7 @@ 

   $year=< ( .",^. -". '.~ ) 2 ** _'~~~~~~~~~~~~~'_________ ___ __ _ _ _ _ 1 **

-
.------.  
+
.------.  
 '------'_ 
 |      | )
 |      |/ 
diff --git a/src/2019/index.html b/src/2019/index.html
index 76be9f31..d15772a2 100644
--- a/src/2019/index.html
+++ b/src/2019/index.html
@@ -72,31 +72,31 @@ 

   $year=< 100% { opacity:0.0; transform: translateX(40ch) scale(.5); } } -
 .         .       ''..     ':.              '.    25 **
-.......                ''.     '.       ..     .   24 **
-       '''''... .         ''.... '.             '  23 **
-       .       ''..   .      '..   '. ...........            22 **
-......      .      ''.         '.    '.            21 **
-      ''''...         '.         '.    : . .       20 **
-           . ''...      '.   ..    '.   '.         19 **
-.....        .   ''. .    '.        '.   'o  .     18 **
-     ''''...        '.      '.      .':   '.       17 **
-         .  '..     . '.      '.  ..   o    :   .  16 **
-               '.       '.     '.       :    :     15 **
-'''''...        .'.   .  '. .   (O)      : . '.    14 **
-.  .    ''..       '.     '.     '.      '.   :    13 **
-''''...     '.      '. .   'O     '.      :    :   12 **
-       ''.    '.      :     '.     :      '.   :   11 **
-'''''..   '.   '..     .     :     '.   .  :   '.  10 **
-  .    '.  '.   '.. .  '.     :     :  .   :    :   9 **
-         :  '.   .      : .   :     :       :   :   8 **
-'''.      :  :   :      :     :     :       : . :   7 **
- ********************* .      :  :   :      :  .  :  .  :   .  .: . :   6 **
-...'    . :  :   :      :     : .   :       :   :   5 **
-.        .  .'   :      :    .:    .:       :   :   4 **
-.      .'  .'.  .'   . .'     :     :      :    :   3 **
-.....''   .'   .'    . :     :     .'.     :   .'   2 **
-       ..'    .'      :     .'     :     ..'   :    1 **
+
       .    .      ''..     ':.              '.    25 **
+.........  .           ''.     '.             ..   24 **
+       '''''...        .  ''.    '..            '  23 **
+               ''..   .      '.    '. ...........  .         22 **
+......      .      ''.      .  '.    '..           21 **
+      ''''...        .'.       . '.    : .         20 **
+             ''..       '.         '. . '.         19 **
+.....          . ''.      '.        '.   'o        18 **
+     ''''...        '.     .'. .     ':   '.       17 **
+            '..       '.     .'.       o   .:      16 **
+               '.       '.     '.    .  :    :     15 **
+'''''...         '.      '.     (O)      :   '.    14 **
+  .     ''..  .    '.     '.     '. .    '..  :    13 **
+''''...     '.      '.     'O     '.      :    :   12 **
+       ''.    '.  .   :     '.     :     .'.   :   11 **
+'''''..  .'.   '.      .     :     '.      :   '.  10 **
+       '.  '.   '..    '.     :     :.     :    :   9 **
+     .   :  '.. ..      :     :     :       :   :   8 **
+'''.     .:  : . :      :  .  :     : .     :   :   7 **
+ ********************* .      :  :  .:      :     :     :       :   :   6 **
+...'   .  :  :   :      :     :  .  :     . :   :   5 **
+         .  .'   :      :     :     :      .:   :   4 **
+       .'  .'   .'     .'     :     :      :    :   3 **
+.....''   .'   .'      :     :     .'      :   .'   2 **
+       ..' .  .'      :     .'     :      .'   :    1 **
 

diff --git a/src/2020/index.html b/src/2020/index.html index 3eb437b0..0ff525f1 100644 --- a/src/2020/index.html +++ b/src/2020/index.html @@ -31,14 +31,14 @@

   $year=<
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   1 **
-       .   .       .        .  ' . .    .  ..''''   2 **
-   .    .   .   . .     .   ..  .    . .  :         3 **
-~   ..  ' ~   . .   .         . .' .. ....'         4 **
-                            . ..|\..''              5 **
-    . .     . ..  '        . :                      6 **
-        .    . .' .       .:'                       7 **
-  . .    .  .   ...     .. .'''''.....  ....        8 **
- . .  . ..'.      .  ~    :'... ...  .''.   ':      9 **
- .       .   ...   .      :   ''  ''''..  . .'.    10 **
-..   .         .. ..    . :             '..'..:    11 **
-  .  .        .        . :       :'''..   ..'.:    12 **
-      . .   . .    . . .'    ..''.   . '''....:    13 **
-      ..       '.     : ...''. ..':   ....'        14 **
-   .     '     ' .  . :'....'''    '''             15 **
-'.'.    ~  .. ..:'. ....'                          16 **
-   :  '      .  :  '                               17 **
-   : . '    . ..'                                  18 **
-   '.      .  :                                    19 **
-    '.      . :                                    20 **
-      :    . :                                     21 **
-      '.  .  :                                     22 **
-       :   ..'                                     23 **
-       : . .'                                      24 **
+ ..   .  . ' . .    .       '    .    . .  ..''''   2 **
+.     . .        ..    . .   .  .    . .. :         3 **
+.'           .     .    .'   .. .' .  ....'         4 **
+ .. .    . .   . .     '  . . ..|\..''              5 **
+   '.      '.  .   .       . :                      6 **
+.  . .  .       ' .       .:'                       7 **
+   .      .             .  .'''''.....  ....        8 **
+.  '.        . .          :'... ...  .''.   ':      9 **
+        .  '  ..     .    :   ''  ''''..  . .'.    10 **
+ .        .      . '   .  :             '..'..:    11 **
+         '  .      .  .  :       :'''..   ..'.:    12 **
+      ..      . .  '   .'    ..''.   . '''....:    13 **
+     ..   .        '  : ...''. ..':   ....'        14 **
+    . .    . '.  .  . :'....'''    '''             15 **
+'.'. .     .   .:'. ....'                          16 **
+   : .       .  :  '                               17 **
+   :    '   . ..'                                  18 **
+   '.    . .  :                                    19 **
+    '.   .. . :                                    20 **
+      :    . :                                     21 **
+      '.  .  :                                     22 **
+       :  ...'                                     23 **
+       : . .'                                      24 **
        :..:                                        25 **
 
diff --git a/src/2022/index.html b/src/2022/index.html index 085ed104..4cd36b77 100644 --- a/src/2022/index.html +++ b/src/2022/index.html @@ -32,20 +32,20 @@

   $year=<
  - /\ -  -        -       -     -      -    -          
- - /  \/\  -    -     -  -    -   -  /\   -     -       
+ - /  \/\  -    -     -  -    -   -  /\   -     -       
  /\    \ \-  - -   -   -    - -  -/\/  \-   -  -   25 **
-/@@\   /\#\@@@###@#@@@@@@#@@@@@@#@###@@@@@@@@@@@@  24 **
-@@@.' '.#@##@@@@@#@#@##@#@@@#@#@@@@@@@@#@@@@@@@@@  23 **
-#@@'. .'@@@@.@@@@@@#@#@#@@@@@@@#@@@@@@@@#()))@###  22 **
-@@#@@@@@@@#@@@@#@@.#@@#@@@@@@#@@#@@@@@###@#@@@#@@  21 **
-@#@##.#@####@##@@@@#@@@@.#@@~~@@@####@@@#@####@@#  20 **
-#@@#@@@@@@@@@.#@##@##@@@@@@~~~~ .~'@@@@@@@@@@@@#@  19 **
-@#@#@#@@@##@@#.@#@@#@@#@@@#@~~ /~\ @#@@@###@#@@@@  18 **
-###@.@##@@##@@@..##@#@@##@#@@ / / \ @@@@#@###@#@@  17 **
-#@@@@#@@@@@@#@#@..@##@@@@@@@#/ / \ \@@#@@@@@@@@@@  16 **
-@@#@@@@@##@@###_.~._@@@@@@@@.'/\.'~. @#@@@@@#@#@#  15 **
-@##.##@##@@@@@@ ||| @@@@@@#'.~.'~. \'.@#@@@@@#@#@  14 **
-@@@@#@@@###@@#@@~~~##@@@@#@@' ..'.'.\. . @@@@#@@@  13 **
-@@#@@@@@@@#@#@.~~.@@@##@@#@@@#@## .'.~~~' @'@@@@#  12 **
-@@#.@#@@@##@.~~.##@#@@#@@@@@@@@#@@  ~~~~~..@@##@#  11 **
-@@#.###@@@#.~~.@@@@@@@@@@@#@#@#@@.'/ ~~~ \' @@#@@  10 **
-@#@#.@@ _|%%%=%%|_ @@####@@@@#@@. ~ /' .'/\.@@###   9 **
-#@##@../  \.~~./  \.....@#@@@@@@@' /\.''/' \' @##   8 **
-###@#@@@@@@.~~.@@@@@@@@#.#@@@#@#'././\ .\'./\ '.    7 **
-@@@#@@#@#@@#.~~.@#@@@#@..@@@#@@' ~. \.\  \ \.~~~.   6 **
-#@#@@@#@@#@@@.~~.@@./\.'@@@#@@@@'.' .'/.#. /'.~~~   5 **
-#@@@@###@@@.' ~  './\'./\' .#@@@@@@' /\ . /'. ..'   4 **
-@@@@@@@@#_/ ~   ~  \ ' '. '.'.@|@@  /  \  \  ##@#   3 **
+/@@\   /\@\@#@@@@#@@@@@@#@@@@@@#@@@@@@@##@@@@#@@@  24 **
+@#@.' '.#@@#@@@#@##@#@@@@#@@@@@@@###@@@@@#@##@@@#  23 **
+#@@'. .'@#@@.@##@#@##@@@@@##@@@@#@|@#@@##()))##@@  22 **
+###@@@##@#@@@@@@@@.@#@@@@##@#@#@#@@@@##@@@@#@@@#@  21 **
+@@@##.@@@@@##@@@@@@@@@@@.@@#~~#@@###@@@@@@@@@@@@@  20 **
+@@@@@@@##@@@#.@##@#@@##@@@@~~~~ .~'@###@@@@@@#@@@  19 **
+#@#@@@@@@####@.#@@@@@@@@@@##~~ /~\ ###@@#@###@@@@  18 **
+#@@#.@@##@##@##..@@@#@##@@@@@ / / \ ##@@#@#@@@@@@  17 **
+@#@@#@@@@@###@@#..@@@@@@#@@#@/ / \ \@@@##@#@@@@@@  16 **
+@@@@@@@##@@@#@@_.~._##@#@@@#.'/\.'~. @@@@@@#@@@@@  15 **
+#@@.#@#@##@@##@ ||| #@@@@@#'.~.'~. \'.###@@#@##@@  14 **
+@@@@@@#@@######@~~~@##@@@#@@' ..'.'.\. . @#@#@#@@  13 **
+@@@@@###@#@#@@.~~.##@@@@@@@@#@@@@ .'.~~~' #'@@@##  12 **
+@@@.@@@#@@@#.~~.@#@@##@@#@@##@#@@#  ~~~~~..@#@#@@  11 **
+#@@.#@@@@##.~~.@#@##@@@##@@@#@#@@.'/ ~~~ \' @@@@@  10 **
+#@@@.@@ _|%%%=%%|_ ##@#@@@@#@#@@. ~ /' .'/\.@@@@@   9 **
+@@@@@../  \.~~./  \.....@@#@@@@@#' /\.''/' \' @@@   8 **
+@@@@@@@###@.~~.@@@@@@@@@.@@@#@@@'././\ .\'./\ '.    7 **
+@@@@##@@#@@@.~~.#@@#@@#..@@@@@#' ~. \.\  \ \.~~~.   6 **
+@#@@@@#@#@@##.~~.@@./\.'@@@#@@@@'.' .'/.#. /'.~~~   5 **
+#@@#@@#@@@#.' ~  './\'./\' .##@#@#@' /\ . /'. ..'   4 **
+@@#@#@@#@_/ ~   ~  \ ' '. '.'.##@#  /  \  \  @@@@   3 **
 -~------'    ~    ~ '--~-----~-~----___________--   2 **
   ~    ~  ~      ~     ~ ~   ~     ~  ~  ~   ~      1 **
 
diff --git a/src/2023/index.html b/src/2023/index.html index e3de736a..f5208e37 100644 --- a/src/2023/index.html +++ b/src/2023/index.html @@ -31,25 +31,10 @@

   $year=<
                     ...'''''''''...                    
                   .'' ~/\* ~~~~  /\ ''.            14 **
                 .' /\/\ ~~~~~~~~ * /~\ '.          15 **
            ...  :~~~~~~~~~ /\ ~~~~/ * \ :          16 **
-    .''....' '..'.||||||||||||||||||||~~~~/\*/\ ~  /\   /\ .'          13 **
+    .''....' '..'.||||||||||||||||||||~~~~/\*/\ ~  /\   /\ .'          13 **
     '.ZZ~   ~ * ~~~~.   /\  /\   /\ ..'            17 **
 .'''' ZZ* .'''.[]~~~''''.........'''               12 **
 '.... ~   '...'  *[]....'                          18 **
     .'*  ~   [^^^] '.                              11 **
-    '..''''.*.''''."``"'."""".'' ''...                       10 **
+    '..''''.*.''''.''`".``,,..'' ''...                       10 **
           .'''~ ~ ~ . * ### ''.                    19 **
         .' ~  ,* ~ '", ~ ##### '.                   9 **
         : ~ '(~), ~ * ~ ~ ~ ### :                   8 **
         '. ~ " ' ~ ~ ~ * ~~~## .'                  20 **
-          '.. ~ ~ * ~ ####~~....................~~'.'''''''''...        7 **
+          '.. ~ ~ * ~ ####~~....................~~'.'''''''''...        7 **
              '''.........'''' ~ .'*. ~  ..  ''.     6 **
                         .' ~ .. '...' ~'* '.~  '.  21 **
                         ~~ .~~~'. ~     '. *'.~ :   5 **
-                 ...''''||||||||||||||||||||~~~'*~~.'  .''.~  '..' .'  22 **
+                 ...''''||||||||||||||||||||~~~'*~~.'  .''.~  '..' .'  22 **
               .''   -   - '..  ~..'*   '. ~ ..'     4 **
             .' * -    /\ -   '''../......'''       23 **
-            :  -   -  - ******************************* /\    -/  :              25 **
+            :  -   -  - ******************************* /\    -/  :              25 **
             '.    - *  /\ -   - /  .'              24 **
               '..    -     -   *..'                 3 **
     ----@        '''..*......'''                    2 **
diff --git a/src/2024/day24.js b/src/2024/day24.js
index 9c9b18d5..0265abae 100644
--- a/src/2024/day24.js
+++ b/src/2024/day24.js
@@ -4,6 +4,7 @@ function read(wiresMap, prefix) {
   return out.map(x => wiresMap.get(x)).join("");
 }
 
+const ops = { AND: (a, b) => a & b, OR: (a, b) => a | b, XOR: (a, b) => a ^ b };
 function run(gates, wiresMap) {
   let done = false;
   while (!done) {
@@ -14,9 +15,7 @@ function run(gates, wiresMap) {
       let c = wiresMap.get(wire);
       if (a !== undefined && b !== undefined && c === undefined) {
         done = false;
-        if (op === "AND") wiresMap.set(wire, a & b);
-        if (op === "OR") wiresMap.set(wire, a | b);
-        if (op === "XOR") wiresMap.set(wire, a ^ b);
+        wiresMap.set(wire, ops[op](a, b));
       }
     });
   }
@@ -46,55 +45,45 @@ export function part1(input) {
 function extractUnit(gates, i) {
   let num = i.toString().padStart(2, "0");
   let next = (i + 1).toString().padStart(2, "0");
-  let unit = gates.filter(x => x.a === `x${num}` && x.b === `y${num}`);
-  let not = gates
-    .filter(x => x.a === `x${next}` && x.b === `y${next}`)
-    .map(x => x.wire);
-  let done = false;
-  while (!done) {
-    done = true;
-    let wires = unit.map(x => x.wire);
-    let more = gates.filter(x => wires.includes(x.a) || wires.includes(x.b));
-    more = more.filter(x => !unit.includes(x));
+  let more = gates.filter(x => x.a === `x${num}` && x.b === `y${num}`);
+  let not = gates.filter(x => x.a === `x${next}` && x.b === `y${next}`);
+  not = not.map(x => x.wire);
+
+  let unit = [];
+  while (more.length) {
+    let wires = more.map(x => x.wire);
+    unit.push(...more);
+    more = gates.filter(x => wires.includes(x.a) || wires.includes(x.b));
     more = more.filter(x => !not.includes(x.a) && !not.includes(x.b));
-    if (more.length) {
-      done = false;
-      unit.push(...more);
-    }
   }
   return unit;
 }
 
 function unitTest(gates) {
-  let inp = new Set(gates.flatMap(x => [x.a, x.b]));
-  let out = new Set(gates.map(x => x.wire));
-  let inputs = [...inp.difference(out)].sort();
-  let outputs = [...out.difference(inp)].sort();
+  let intoGates = new Set(gates.flatMap(x => [x.a, x.b]));
+  let outOfGates = new Set(gates.map(x => x.wire));
+  let inputs = [...intoGates.difference(outOfGates)].sort();
+  let outputs = [...outOfGates.difference(intoGates)].sort();
   if (outputs.every(x => x.startsWith("z"))) outputs.reverse();
   for (let i = 0; i < 2 ** inputs.length; i++) {
     let wiresMap = new Map();
-    let bin = i.toString(2);
-    inputs.forEach((x, j) => wiresMap.set(x, +bin[j]));
+    let binary = i.toString(2);
+    inputs.forEach((x, j) => wiresMap.set(x, +binary[j]));
     run(gates, wiresMap);
     let result = parseInt(outputs.map(x => wiresMap.get(x)).join(""), 2);
-    let expect = bin.split("").reduce((a, b) => +a + +b, 0);
+    let expect = binary.split("").reduce((a, b) => +a + +b, 0);
     if (result !== expect) return false;
   }
   return true;
 }
 
-function getSwamps(gates) {
+function getSwamps(unit) {
   let options = [];
-  let out = gates.map(x => x.wire);
-  for (let i = 0; i < out.length; i++) {
-    for (let j = i + 1; j < out.length; j++) {
-      let option = gates.map(x => {
-        let next = { ...x };
-        if (x.wire === out[i]) next.wire = out[j];
-        if (x.wire === out[j]) next.wire = out[i];
-        return next;
-      });
-      options.push({ swap: [out[i], out[j]], gates: option });
+  for (let i = 0; i < unit.length; i++) {
+    for (let j = i + 1; j < unit.length; j++) {
+      let gates = unit.map(x => ({ ...x }));
+      [gates[i].wire, gates[j].wire] = [gates[j].wire, gates[i].wire];
+      options.push({ swap: [gates[i].wire, gates[j].wire], gates });
     }
   }
   return options;
@@ -106,8 +95,7 @@ export function part2(input) {
   let swapped = [];
   for (let i = 0; i < length; i++) {
     let unit = extractUnit(gates, i);
-    let pass = unitTest(unit);
-    if (!pass) {
+    if (!unitTest(unit)) {
       let { swap } = getSwamps(unit).find(x => unitTest(x.gates));
       swapped.push(...swap);
     }
diff --git a/src/2024/index.html b/src/2024/index.html
index c690cbcd..b851eab0 100644
--- a/src/2024/index.html
+++ b/src/2024/index.html
@@ -31,36 +31,17 @@ 

   $year=<