diff --git a/scripts/extract_drawing.py b/scripts/extract_drawing.py index b534d7c6..a14b0770 100755 --- a/scripts/extract_drawing.py +++ b/scripts/extract_drawing.py @@ -77,15 +77,13 @@ def rgb(s: str) -> str: code = rgb(line[2]) colors[color] = code - continue - if line.startswith('
'): - a = line.index(">") + 1 - line = line[a:] - print(line) - continue + +calendar = re.search(r'(.+?)', calendar, re.DOTALL).group(1) +for line in calendar.splitlines(): if "calendar-verycomplete" not in line: + print(line) continue a = line.index(">") + 1 diff --git a/scripts/xmas-2024 b/scripts/xmas-2024 new file mode 100644 index 00000000..bf686eec --- /dev/null +++ b/scripts/xmas-2024 @@ -0,0 +1,79 @@ +#!/bin/sh +if [ "$1" = fr ]; then + cat <<'EOF' + + .-----. .------------------. + .--'[38;2;227;181;133m~[0m [38;2;227;181;133m~[0m [38;2;227;181;133m~[0m| .-' [38;2;255;255;102m*[0m [38;2;136;102;85m\[0m [38;2;136;102;85m/[0m '-. 1 [33m**[0m + .--'[38;2;227;181;133m~[0m [38;2;0;204;0m,[0m[38;2;255;255;102m*[0m [38;2;227;181;133m~[0m | | [38;2;0;153;0m>[0mo[38;2;0;153;0m<[0m [38;2;136;102;85m\_\_\|_/__/[0m | 2 [33m**[0m + .---'[38;2;227;181;133m:[0m [38;2;227;181;133m~[0m [38;2;0;204;0m'[0m[38;2;85;85;187m(~)[0m[38;2;0;204;0m,[0m [38;2;227;181;133m~[0m| | [38;2;0;153;0m>[0m@[38;2;0;153;0m>[0mO[38;2;0;153;0m<[0m [38;2;255;0;0mo[0m[38;2;136;102;85m-_/[0m[38;2;204;204;204m.[0m[38;2;204;204;204m()[0m[38;2;136;102;85m__------[0m| 3 [33m**[0m + |[38;2;66;115;34m#[0m[38;2;94;171;180m..[0m[38;2;127;189;57m@[0m[38;2;227;181;133m'.[0m [38;2;227;181;133m~[0m [38;2;0;204;0m"[0m [38;2;0;204;0m'[0m [38;2;227;181;133m~[0m | |[38;2;0;153;0m>[0mO[38;2;0;153;0m>[0mo[38;2;0;153;0m<[0m@[38;2;0;153;0m<[0m [38;2;136;102;85m\____[0m [38;2;0;204;0m.'[0m| 4 [33m**[0m + |[38;2;127;189;57m_[0m.~.[38;2;77;139;3m_[0m[38;2;127;189;57m@[0m[38;2;227;181;133m'..[0m [38;2;227;181;133m~[0m [38;2;227;181;133m~[0m [38;2;255;255;102m*[0m| | [38;2;170;170;170m_|[0m [38;2;170;170;170m|_[0m ..[38;2;204;204;204m\_[0m[38;2;136;102;85m\_[0m [38;2;0;204;0m..'[0m[38;2;255;255;102m*[0m | 5 [33m**[0m + | [38;2;255;255;255m|||[0m [38;2;72;136;19m#[0m[38;2;66;115;34m@[0m[38;2;127;189;57m#@[0m[38;2;227;181;133m'''...[0m| |[38;2;162;81;81m...[0m .' '.[38;2;0;204;0m'''..[0m[38;2;212;221;228m/[0m[38;2;0;204;0m..[0m| 6 [33m**[0m + |[38;2;72;136;19m#[0m[38;2;255;255;255m~~~[0m[38;2;127;189;57m#[0m[38;2;66;115;34m@[0m[38;2;127;189;57m#[0m [38;2;127;189;57m@[0m [38;2;72;136;19m@[0m | |[38;2;165;168;175m/\[0m [38;2;162;81;81m''.[0m | | [38;2;204;204;255m-[0m[38;2;212;221;228m/[0m [38;2;255;255;255m:[0m| 7 [33m**[0m + |[38;2;94;171;180m~~.[0m.--. ____ | |[38;2;255;255;102m*[0m [38;2;165;168;175m/[0m[38;2;223;35;8m~[0m[38;2;165;168;175m\[0m [38;2;162;81;81m'.[0m| | [38;2;204;204;255m-[0m [38;2;212;221;228m/[0m [38;2;255;255;255m.'[0m| 8 [33m**[0m + '---' ||[][]_\-| |[38;2;223;35;8m~[0m[38;2;165;168;175m/[0m [38;2;255;255;102m*[0m [38;2;165;168;175m\[0m [38;2;162;81;81m:[0m| | [38;2;255;255;102m*[0m[38;2;255;255;255m..'[0m | 9 [33m**[0m + |------- | | [38;2;165;168;175m/\[0m [38;2;162;81;81m.'[0m| |[38;2;255;255;255m'''[0m[38;2;0;200;255m~~~~~[0m| 10 [33m**[0m + |[38;2;204;204;255m.......[0m[38;2;255;0;0m|[0m| |[38;2;165;168;175m/\[0m [38;2;162;81;81m..'[0m | |[38;2;0;181;237m~[0m [38;2;255;255;255m.[0m [38;2;0;181;237m.[0m| 11 [33m**[0m + | [38;2;255;255;255m-[0m [38;2;255;255;255m-[0m | |[38;2;162;81;81m'''[0m[38;2;51;51;51m::[0m[38;2;255;255;102m:[0m[38;2;51;51;51m::[0m| | [38;2;255;255;255m.[0m .| 12 [33m**[0m + |[38;2;255;255;255m'.[0m [38;2;255;255;255m-[0m [38;2;255;255;255m-[0m| | [38;2;51;51;51m::[0m[38;2;0;153;0m:[0m[38;2;51;51;51m::[0m| |. [38;2;255;255;255m.'[0m . | 13 [33m**[0m + |[38;2;0;204;0m...[0m[38;2;255;255;255m'..''[0m| |. [38;2;51;51;51m:[0m[38;2;0;153;0m:::[0m[38;2;51;51;51m:[0m| |[38;2;199;76;48m.[0m[38;2;255;0;0m.[0m[38;2;255;255;255m|\[0m[38;2;255;0;0m.[0m[38;2;199;76;48m.[0m[38;2;164;122;77m''[0m| 14 [33m**[0m + |[38;2;0;204;0m.[0m [38;2;0;204;0m''.[0m | |. .[38;2;0;153;0m:::::[0m| |──┬┴┴┴┬─| 15 [33m**[0m + | [38;2;0;204;0m'.[0m[38;2;85;85;187m~[0m [38;2;0;204;0m'.[0m| | : [38;2;51;51;51m:[0m[38;2;51;51;51m:[0m[38;2;85;51;34m:[0m[38;2;51;51;51m::[0m| |──┤AoC├o| 16 [33m**[0m + |[38;2;0;204;0m.[0m [38;2;255;255;102m*[0m[38;2;0;204;0m'.[0m[38;2;85;85;187m~[0m [38;2;0;204;0m:[0m| | '. . | |┬o┤ten├─| 17 [33m**[0m + | [38;2;0;204;0m'..'[0m [38;2;0;204;0m.'[0m| |. 'o . | |┘*┤yrs├─| 18 [33m**[0m + | [38;2;85;85;187m~[0m [38;2;0;204;0m..'[0m | |: .'. .| |─┘├┬┬┬┴─| 19 [33m**[0m + |[38;2;0;204;0m'''[0m)) | | .o [38;2;255;255;102m*[0m: '. .'──┘[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m[38;2;0;153;0m<<[0m| 20 [33m**[0m + .------'[38;2;0;102;255m.-[0m(([38;2;0;102;255m---.[0m'------. | :[38;2;255;0;0m|[0m[38;2;204;204;204m\|[0m [38;2;51;51;153m~[0m [38;2;153;0;255m_[0m'' [38;2;153;0;255mO>[0m [38;2;0;153;0m>>[0m[38;2;255;0;0m@[0m[38;2;0;153;0m<[0m[38;2;255;153;0mo[0m[38;2;0;153;0m<[0m| 21 [33m**[0m + | [38;2;255;0;0m.---_[0m [38;2;0;102;255m'------'_[0m [38;2;170;170;170m.~'[0m | | [38;2;204;204;204m|[0m[38;2;255;0;0m\|[0m[38;2;153;0;255m\[0m [38;2;153;0;255m/[0m [38;2;153;0;255m\[0m [38;2;153;0;255m/[0m[38;2;51;51;153m~[0m [38;2;0;153;0m>[0m[38;2;255;0;0m@[0m[38;2;0;153;0m<<[0m[38;2;255;255;102m*[0m[38;2;0;153;0m<[0m[38;2;0;102;255mO[0m| 22 [33m**[0m + |[38;2;255;0;0m/[0m [38;2;136;0;0m/[0m [38;2;255;0;0m/\|[0m[38;2;0;102;255m|[0m [38;2;0;102;255m|[0m [38;2;0;102;255m)[0m[38;2;170;170;170m/[0m[38;2;230;65;11m~[0m[38;2;170;170;170m\[0m | |[38;2;0;102;255m___[0m[38;2;255;0;0m|[0m[38;2;204;204;204m\|[0m[38;2;0;102;255m________[0m[38;2;0;153;0m>[0m[38;2;0;102;255mO[0m[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m| 23 [33m**[0m + |[38;2;136;0;0m/[0m [38;2;136;0;0m|[0m [38;2;255;0;0m\[0m [38;2;255;255;102m*[0m[38;2;0;102;255m|[0m [38;2;0;102;255m|/[0m[38;2;170;170;170m/[0m [38;2;230;65;11m/[0m [38;2;170;170;170m\[0m | | [38;2;155;113;91m----@[0m [38;2;170;170;170m_[0m[38;2;208;179;118m|%%%=%%|[0m[38;2;170;170;170m_[0m | 24 [33m**[0m + |[38;2;136;0;0m/[0m [38;2;136;0;0m\[0m [38;2;255;0;0m\[0m [38;2;0;102;255m'------'[0m[38;2;170;170;170m/[0m [38;2;230;65;11m/[0m [38;2;230;65;11m\[0m [38;2;170;170;170m\[0m| '-.[38;2;155;113;91m![0m [38;2;155;113;91m/^\[0m [38;2;170;170;170m/[0m [38;2;170;170;170m\[0m[38;2;94;171;180m.~~.[0m[38;2;170;170;170m/[0m [38;2;170;170;170m\[0m.-' 25 [33m**[0m + '----------------------' '------------------' +[38;5;164m-[39m[38;5;164m-[39m[38;5;164m-[39m[38;5;128m-[39m[38;5;128m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m [39m[38;5;93m[[39m[38;5;93m [39m[38;5;93m[39m]8;;https://adventofcode.com/2024[38;5;63mA[39m[38;5;63md[39m[38;5;33mv[39m[38;5;33me[39m[38;5;33mn[39m[38;5;33mt[39m[38;5;33m [39m[38;5;33mo[39m[38;5;33mf[39m[38;5;33m [39m[38;5;33mC[39m[38;5;33mo[39m[38;5;39md[39m[38;5;39me[39m[38;5;39m [39m[38;5;39m2[39m[38;5;39m0[39m[38;5;39m2[39m[38;5;39m4[39m[38;5;39m[39m]8;;[38;5;129m][39m[38;5;129m [39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;99m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m[39m +[38;5;208m [39m[38;5;208m [39m[38;5;208m [39m[38;5;208m [39m[38;5;208m_[39m[38;5;208m [39m[38;5;208m [39m[38;5;208m_[39m[38;5;209m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;204m [39m[38;5;198m_[39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m_[39m[38;5;198m_[39m[38;5;198m_[39m[38;5;198m [39m[38;5;198m [39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m_[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m_[39m[38;5;199m [39m[38;5;163m [39m[38;5;163m_[39m[38;5;164m_[39m[38;5;164m_[39m[38;5;164m [39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m_[39m[38;5;164m_[39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m [39m[38;5;128m [39m[38;5;128m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m_[39m[38;5;129m [39m[38;5;129m[39m +[38;5;208m [39m[38;5;208m_[39m[38;5;208m [39m[38;5;208m|[39m[38;5;208m [39m[38;5;209m|[39m[38;5;203m/[39m[38;5;203m [39m[38;5;203m_[39m[38;5;203m [39m[38;5;203m\[39m[38;5;203m [39m[38;5;203m\[39m[38;5;203m [39m[38;5;203m/[39m[38;5;203m [39m[38;5;203m/[39m[38;5;204m [39m[38;5;198m_[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m\[39m[38;5;199m [39m[38;5;199m\[39m[38;5;199m/[39m[38;5;199m [39m[38;5;199m/[39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m\[39m[38;5;163m|[39m[38;5;163m [39m[38;5;164m|[39m[38;5;164m/[39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m [39m[38;5;164m\[39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m_[39m[38;5;128m|[39m[38;5;128m [39m[38;5;129m|[39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m|[39m[38;5;129m [39m[38;5;129m|[39m[38;5;129m[39m +[38;5;208m|[39m[38;5;208m [39m[38;5;209m|[39m[38;5;203m|[39m[38;5;203m [39m[38;5;203m|[39m[38;5;203m [39m[38;5;203m([39m[38;5;203m_[39m[38;5;203m)[39m[38;5;203m [39m[38;5;203m\[39m[38;5;203m [39m[38;5;203mV[39m[38;5;204m [39m[38;5;198m/[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m_[39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m>[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m<[39m[38;5;199m [39m[38;5;199m [39m[38;5;163m|[39m[38;5;163m [39m[38;5;164m.[39m[38;5;164m`[39m[38;5;164m [39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m([39m[38;5;164m_[39m[38;5;164m)[39m[38;5;164m [39m[38;5;164m|[39m[38;5;128m [39m[38;5;128m_[39m[38;5;129m|[39m[38;5;129m|[39m[38;5;129m [39m[38;5;129m|[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m [39m[38;5;129m [39m[38;5;129m|[39m[38;5;93m_[39m[38;5;93m|[39m[38;5;93m[39m +[38;5;203m [39m[38;5;203m\[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m/[39m[38;5;203m [39m[38;5;203m\[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m/[39m[38;5;204m [39m[38;5;198m|[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m_[39m[38;5;198m_[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;199m\[39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m/[39m[38;5;199m/[39m[38;5;199m_[39m[38;5;199m/[39m[38;5;199m\[39m[38;5;163m_[39m[38;5;163m\[39m[38;5;164m [39m[38;5;164m|[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m\[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m\[39m[38;5;164m_[39m[38;5;164m_[39m[38;5;128m_[39m[38;5;128m/[39m[38;5;129m|[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m|[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;93m|[39m[38;5;93m [39m[38;5;93m([39m[38;5;93m_[39m[38;5;93m)[39m[38;5;93m[39m +[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;204m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;163m [39m[38;5;163m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;128m [39m[38;5;128m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m[39m + +EOF +else + cat <<'EOF' + + .-----. .------------------. + .--'[38;2;227;181;133m~[0m [38;2;227;181;133m~[0m [38;2;227;181;133m~[0m| .-' [38;2;255;255;102m*[0m [38;2;136;102;85m\[0m [38;2;136;102;85m/[0m '-. 1 [33m**[0m + .--'[38;2;227;181;133m~[0m [38;2;0;204;0m,[0m[38;2;255;255;102m*[0m [38;2;227;181;133m~[0m | | [38;2;0;153;0m>[0mo[38;2;0;153;0m<[0m [38;2;136;102;85m\_\_\|_/__/[0m | 2 [33m**[0m + .---'[38;2;227;181;133m:[0m [38;2;227;181;133m~[0m [38;2;0;204;0m'[0m[38;2;85;85;187m(~)[0m[38;2;0;204;0m,[0m [38;2;227;181;133m~[0m| | [38;2;0;153;0m>[0m@[38;2;0;153;0m>[0mO[38;2;0;153;0m<[0m [38;2;255;0;0mo[0m[38;2;136;102;85m-_/[0m[38;2;204;204;204m.[0m[38;2;204;204;204m()[0m[38;2;136;102;85m__------[0m| 3 [33m**[0m + |[38;2;66;115;34m#[0m[38;2;94;171;180m..[0m[38;2;127;189;57m@[0m[38;2;227;181;133m'.[0m [38;2;227;181;133m~[0m [38;2;0;204;0m"[0m [38;2;0;204;0m'[0m [38;2;227;181;133m~[0m | |[38;2;0;153;0m>[0mO[38;2;0;153;0m>[0mo[38;2;0;153;0m<[0m@[38;2;0;153;0m<[0m [38;2;136;102;85m\____[0m [38;2;0;204;0m.'[0m| 4 [33m**[0m + |[38;2;127;189;57m_[0m.~.[38;2;77;139;3m_[0m[38;2;127;189;57m@[0m[38;2;227;181;133m'..[0m [38;2;227;181;133m~[0m [38;2;227;181;133m~[0m [38;2;255;255;102m*[0m| | [38;2;170;170;170m_|[0m [38;2;170;170;170m|_[0m ..[38;2;204;204;204m\_[0m[38;2;136;102;85m\_[0m [38;2;0;204;0m..'[0m[38;2;255;255;102m*[0m | 5 [33m**[0m + | [38;2;255;255;255m|||[0m [38;2;72;136;19m#[0m[38;2;66;115;34m@[0m[38;2;127;189;57m#@[0m[38;2;227;181;133m'''...[0m| |[38;2;162;81;81m...[0m .' '.[38;2;0;204;0m'''..[0m[38;2;212;221;228m/[0m[38;2;0;204;0m..[0m| 6 [33m**[0m + |[38;2;72;136;19m#[0m[38;2;255;255;255m~~~[0m[38;2;127;189;57m#[0m[38;2;66;115;34m@[0m[38;2;127;189;57m#[0m [38;2;127;189;57m@[0m [38;2;72;136;19m@[0m | |[38;2;165;168;175m/\[0m [38;2;162;81;81m''.[0m | | [38;2;204;204;255m-[0m[38;2;212;221;228m/[0m [38;2;255;255;255m:[0m| 7 [33m**[0m + |[38;2;94;171;180m~~.[0m.--. ____ | |[38;2;255;255;102m*[0m [38;2;165;168;175m/[0m[38;2;223;35;8m~[0m[38;2;165;168;175m\[0m [38;2;162;81;81m'.[0m| | [38;2;204;204;255m-[0m [38;2;212;221;228m/[0m [38;2;255;255;255m.'[0m| 8 [33m**[0m + '---' ||[][]_\-| |[38;2;223;35;8m~[0m[38;2;165;168;175m/[0m [38;2;255;255;102m*[0m [38;2;165;168;175m\[0m [38;2;162;81;81m:[0m| | [38;2;255;255;102m*[0m[38;2;255;255;255m..'[0m | 9 [33m**[0m + |------- | | [38;2;165;168;175m/\[0m [38;2;162;81;81m.'[0m| |[38;2;255;255;255m'''[0m[38;2;0;200;255m~~~~~[0m| 10 [33m**[0m + |[38;2;204;204;255m.......[0m[38;2;255;0;0m|[0m| |[38;2;165;168;175m/\[0m [38;2;162;81;81m..'[0m | |[38;2;0;181;237m~[0m [38;2;255;255;255m.[0m [38;2;0;181;237m.[0m| 11 [33m**[0m + | [38;2;255;255;255m-[0m [38;2;255;255;255m-[0m | |[38;2;162;81;81m'''[0m[38;2;51;51;51m::[0m[38;2;255;255;102m:[0m[38;2;51;51;51m::[0m| | [38;2;255;255;255m.[0m .| 12 [33m**[0m + |[38;2;255;255;255m'.[0m [38;2;255;255;255m-[0m [38;2;255;255;255m-[0m| | [38;2;51;51;51m::[0m[38;2;0;153;0m:[0m[38;2;51;51;51m::[0m| |. [38;2;255;255;255m.'[0m . | 13 [33m**[0m + |[38;2;0;204;0m...[0m[38;2;255;255;255m'..''[0m| |. [38;2;51;51;51m:[0m[38;2;0;153;0m:::[0m[38;2;51;51;51m:[0m| |[38;2;199;76;48m.[0m[38;2;255;0;0m.[0m[38;2;255;255;255m|\[0m[38;2;255;0;0m.[0m[38;2;199;76;48m.[0m[38;2;164;122;77m''[0m| 14 [33m**[0m + |[38;2;0;204;0m.[0m [38;2;0;204;0m''.[0m | |. .[38;2;0;153;0m:::::[0m| |──┬┴┴┴┬─| 15 [33m**[0m + | [38;2;0;204;0m'.[0m[38;2;85;85;187m~[0m [38;2;0;204;0m'.[0m| | : [38;2;51;51;51m:[0m[38;2;51;51;51m:[0m[38;2;85;51;34m:[0m[38;2;51;51;51m::[0m| |──┤AoC├o| 16 [33m**[0m + |[38;2;0;204;0m.[0m [38;2;255;255;102m*[0m[38;2;0;204;0m'.[0m[38;2;85;85;187m~[0m [38;2;0;204;0m:[0m| | '. . | |┬o┤ten├─| 17 [33m**[0m + | [38;2;0;204;0m'..'[0m [38;2;0;204;0m.'[0m| |. 'o . | |┘*┤yrs├─| 18 [33m**[0m + | [38;2;85;85;187m~[0m [38;2;0;204;0m..'[0m | |: .'. .| |─┘├┬┬┬┴─| 19 [33m**[0m + |[38;2;0;204;0m'''[0m)) | | .o [38;2;255;255;102m*[0m: '. .'──┘[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m[38;2;0;153;0m<<[0m| 20 [33m**[0m + .------'[38;2;0;102;255m.-[0m(([38;2;0;102;255m---.[0m'------. | :[38;2;255;0;0m|[0m[38;2;204;204;204m\|[0m [38;2;51;51;153m~[0m [38;2;153;0;255m_[0m'' [38;2;153;0;255mO>[0m [38;2;0;153;0m>>[0m[38;2;255;0;0m@[0m[38;2;0;153;0m<[0m[38;2;255;153;0mo[0m[38;2;0;153;0m<[0m| 21 [33m**[0m + | [38;2;255;0;0m.---_[0m [38;2;0;102;255m'------'_[0m [38;2;170;170;170m.~'[0m | | [38;2;204;204;204m|[0m[38;2;255;0;0m\|[0m[38;2;153;0;255m\[0m [38;2;153;0;255m/[0m [38;2;153;0;255m\[0m [38;2;153;0;255m/[0m[38;2;51;51;153m~[0m [38;2;0;153;0m>[0m[38;2;255;0;0m@[0m[38;2;0;153;0m<<[0m[38;2;255;255;102m*[0m[38;2;0;153;0m<[0m[38;2;0;102;255mO[0m| 22 [33m**[0m + |[38;2;255;0;0m/[0m [38;2;136;0;0m/[0m [38;2;255;0;0m/\|[0m[38;2;0;102;255m|[0m [38;2;0;102;255m|[0m [38;2;0;102;255m)[0m[38;2;170;170;170m/[0m[38;2;230;65;11m~[0m[38;2;170;170;170m\[0m | |[38;2;0;102;255m___[0m[38;2;255;0;0m|[0m[38;2;204;204;204m\|[0m[38;2;0;102;255m________[0m[38;2;0;153;0m>[0m[38;2;0;102;255mO[0m[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m[38;2;0;153;0m>>[0m[38;2;255;153;0mo[0m| 23 [33m**[0m + |[38;2;136;0;0m/[0m [38;2;136;0;0m|[0m [38;2;255;0;0m\[0m [38;2;255;255;102m*[0m[38;2;0;102;255m|[0m [38;2;0;102;255m|/[0m[38;2;170;170;170m/[0m [38;2;230;65;11m/[0m [38;2;170;170;170m\[0m | | [38;2;155;113;91m----@[0m [38;2;170;170;170m_[0m[38;2;208;179;118m|%%%=%%|[0m[38;2;170;170;170m_[0m | 24 [33m**[0m + |[38;2;136;0;0m/[0m [38;2;136;0;0m\[0m [38;2;255;0;0m\[0m [38;2;0;102;255m'------'[0m[38;2;170;170;170m/[0m [38;2;230;65;11m/[0m [38;2;230;65;11m\[0m [38;2;170;170;170m\[0m| '-.[38;2;155;113;91m![0m [38;2;155;113;91m/^\[0m [38;2;170;170;170m/[0m [38;2;170;170;170m\[0m[38;2;94;171;180m.~~.[0m[38;2;170;170;170m/[0m [38;2;170;170;170m\[0m.-' 25 [33m**[0m + '----------------------' '------------------' +[38;5;164m-[39m[38;5;164m-[39m[38;5;164m-[39m[38;5;128m-[39m[38;5;128m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m [39m[38;5;99m[[39m[38;5;63m [39m[38;5;63m[39m]8;;https://adventofcode.com/2024[38;5;63mA[39m[38;5;63md[39m[38;5;33mv[39m[38;5;33me[39m[38;5;33mn[39m[38;5;33mt[39m[38;5;33m [39m[38;5;33mo[39m[38;5;33mf[39m[38;5;33m [39m[38;5;33mC[39m[38;5;33mo[39m[38;5;39md[39m[38;5;39me[39m[38;5;39m [39m[38;5;39m2[39m[38;5;39m0[39m[38;5;39m2[39m[38;5;39m4[39m[38;5;39m[39m]8;;[38;5;129m][39m[38;5;129m [39m[38;5;129m-[39m[38;5;129m-[39m[38;5;129m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;93m-[39m[38;5;99m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m-[39m[38;5;63m[39m +[38;5;208m [39m[38;5;208m_[39m[38;5;208m_[39m[38;5;208m [39m[38;5;208m [39m[38;5;208m_[39m[38;5;208m_[39m[38;5;208m [39m[38;5;209m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;204m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m_[39m[38;5;198m_[39m[38;5;199m_[39m[38;5;199m [39m[38;5;199m_[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;163m [39m[38;5;163m [39m[38;5;164m_[39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;128m [39m[38;5;128m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m_[39m[38;5;93m [39m[38;5;93m[39m +[38;5;208m|[39m[38;5;208m [39m[38;5;208m [39m[38;5;208m\[39m[38;5;208m/[39m[38;5;209m [39m[38;5;203m [39m[38;5;203m|[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m [39m[38;5;203m_[39m[38;5;203m [39m[38;5;203m_[39m[38;5;203m [39m[38;5;203m_[39m[38;5;204m [39m[38;5;198m_[39m[38;5;198m [39m[38;5;198m_[39m[38;5;198m [39m[38;5;198m [39m[38;5;198m_[39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;199m/[39m[38;5;199m [39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m_[39m[38;5;199m [39m[38;5;163m [39m[38;5;163m_[39m[38;5;164m [39m[38;5;164m_[39m[38;5;164m([39m[38;5;164m_[39m[38;5;164m)[39m[38;5;164m_[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m|[39m[38;5;128m_[39m[38;5;128m [39m[38;5;129m_[39m[38;5;129m [39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m [39m[38;5;129m [39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m [39m[38;5;93m_[39m[38;5;93m [39m[38;5;93m_[39m[38;5;93m_[39m[38;5;93m_[39m[38;5;93m [39m[38;5;93m|[39m[38;5;93m [39m[38;5;93m|[39m[38;5;99m[39m +[38;5;208m|[39m[38;5;208m [39m[38;5;209m|[39m[38;5;203m\[39m[38;5;203m/[39m[38;5;203m|[39m[38;5;203m [39m[38;5;203m/[39m[38;5;203m [39m[38;5;203m-[39m[38;5;203m_[39m[38;5;203m)[39m[38;5;203m [39m[38;5;203m'[39m[38;5;204m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m'[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m|[39m[38;5;198m [39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m([39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m|[39m[38;5;199m [39m[38;5;163m'[39m[38;5;163m [39m[38;5;164m\[39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m'[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m([39m[38;5;164m_[39m[38;5;164m-[39m[38;5;128m<[39m[38;5;128m [39m[38;5;129m [39m[38;5;129m_[39m[38;5;129m|[39m[38;5;129m [39m[38;5;129m'[39m[38;5;129m [39m[38;5;129m [39m[38;5;129m\[39m[38;5;129m/[39m[38;5;93m [39m[38;5;93m_[39m[38;5;93m`[39m[38;5;93m [39m[38;5;93m([39m[38;5;93m_[39m[38;5;93m-[39m[38;5;93m<[39m[38;5;93m [39m[38;5;99m|[39m[38;5;63m_[39m[38;5;63m|[39m[38;5;63m[39m +[38;5;203m|[39m[38;5;203m_[39m[38;5;203m|[39m[38;5;203m [39m[38;5;203m [39m[38;5;203m|[39m[38;5;203m_[39m[38;5;203m\[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;203m_[39m[38;5;204m|[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m|[39m[38;5;198m_[39m[38;5;198m|[39m[38;5;198m [39m[38;5;198m [39m[38;5;198m\[39m[38;5;199m_[39m[38;5;199m,[39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m\[39m[38;5;199m_[39m[38;5;199m_[39m[38;5;163m_[39m[38;5;163m|[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m|[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m_[39m[38;5;164m|[39m[38;5;164m [39m[38;5;164m|[39m[38;5;164m_[39m[38;5;128m/[39m[38;5;128m_[39m[38;5;129m_[39m[38;5;129m/[39m[38;5;129m\[39m[38;5;129m_[39m[38;5;129m_[39m[38;5;129m|[39m[38;5;129m_[39m[38;5;129m|[39m[38;5;129m_[39m[38;5;93m|[39m[38;5;93m_[39m[38;5;93m\[39m[38;5;93m_[39m[38;5;93m_[39m[38;5;93m,[39m[38;5;93m_[39m[38;5;93m/[39m[38;5;93m_[39m[38;5;99m_[39m[38;5;63m/[39m[38;5;63m [39m[38;5;63m([39m[38;5;63m_[39m[38;5;63m)[39m[38;5;63m[39m +[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;203m [39m[38;5;204m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;198m [39m[38;5;199m [39m[38;5;199m [39m[38;5;199m|[39m[38;5;199m_[39m[38;5;199m_[39m[38;5;199m/[39m[38;5;199m [39m[38;5;199m [39m[38;5;199m [39m[38;5;163m [39m[38;5;163m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;164m [39m[38;5;128m [39m[38;5;128m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;129m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;93m [39m[38;5;99m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m [39m[38;5;63m[39m + +EOF +fi + diff --git a/scripts/xmas.py b/scripts/xmas.py new file mode 100755 index 00000000..f2c3648f --- /dev/null +++ b/scripts/xmas.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +import subprocess + +AOC_10_YEARS = [ + "", + " .-----. .------------------.", + " .--'\x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m| .-' \x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;136;102;85m\\\x1b[0m \x1b[38;2;136;102;85m/\x1b[0m '-. 1 \x1b[33m**\x1b[0m", + " .--'\x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m,\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m | | \x1b[38;2;0;153;0m>\x1b[0mo\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;136;102;85m\\_\\_\\|_/__/\x1b[0m | 2 \x1b[33m**\x1b[0m", + ".---'\x1b[38;2;227;181;133m:\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m'\x1b[0m\x1b[38;2;85;85;187m(~)\x1b[0m\x1b[38;2;0;204;0m,\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m| | \x1b[38;2;0;153;0m>\x1b[0m@\x1b[38;2;0;153;0m>\x1b[0mO\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;255;0;0mo\x1b[0m\x1b[38;2;136;102;85m-_/\x1b[0m\x1b[38;2;204;204;204m.\x1b[0m\x1b[38;2;204;204;204m()\x1b[0m\x1b[38;2;136;102;85m__------\x1b[0m| 3 \x1b[33m**\x1b[0m", + "|\x1b[38;2;66;115;34m#\x1b[0m\x1b[38;2;94;171;180m..\x1b[0m\x1b[38;2;127;189;57m@\x1b[0m\x1b[38;2;227;181;133m'.\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m\"\x1b[0m \x1b[38;2;0;204;0m'\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m | |\x1b[38;2;0;153;0m>\x1b[0mO\x1b[38;2;0;153;0m>\x1b[0mo\x1b[38;2;0;153;0m<\x1b[0m@\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;136;102;85m\\____\x1b[0m \x1b[38;2;0;204;0m.'\x1b[0m| 4 \x1b[33m**\x1b[0m", + "|\x1b[38;2;127;189;57m_\x1b[0m.~.\x1b[38;2;77;139;3m_\x1b[0m\x1b[38;2;127;189;57m@\x1b[0m\x1b[38;2;227;181;133m'..\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m| | \x1b[38;2;170;170;170m_|\x1b[0m \x1b[38;2;170;170;170m|_\x1b[0m ..\x1b[38;2;204;204;204m\\_\x1b[0m\x1b[38;2;136;102;85m\\_\x1b[0m \x1b[38;2;0;204;0m..'\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m | 5 \x1b[33m**\x1b[0m", + "| \x1b[38;2;255;255;255m|||\x1b[0m \x1b[38;2;72;136;19m#\x1b[0m\x1b[38;2;66;115;34m@\x1b[0m\x1b[38;2;127;189;57m#@\x1b[0m\x1b[38;2;227;181;133m'''...\x1b[0m| |\x1b[38;2;162;81;81m...\x1b[0m .' '.\x1b[38;2;0;204;0m'''..\x1b[0m\x1b[38;2;212;221;228m/\x1b[0m\x1b[38;2;0;204;0m..\x1b[0m| 6 \x1b[33m**\x1b[0m", + "|\x1b[38;2;72;136;19m#\x1b[0m\x1b[38;2;255;255;255m~~~\x1b[0m\x1b[38;2;127;189;57m#\x1b[0m\x1b[38;2;66;115;34m@\x1b[0m\x1b[38;2;127;189;57m#\x1b[0m \x1b[38;2;127;189;57m@\x1b[0m \x1b[38;2;72;136;19m@\x1b[0m | |\x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m''.\x1b[0m | | \x1b[38;2;204;204;255m-\x1b[0m\x1b[38;2;212;221;228m/\x1b[0m \x1b[38;2;255;255;255m:\x1b[0m| 7 \x1b[33m**\x1b[0m", + "|\x1b[38;2;94;171;180m~~.\x1b[0m.--. ____ | |\x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;165;168;175m/\x1b[0m\x1b[38;2;223;35;8m~\x1b[0m\x1b[38;2;165;168;175m\\\x1b[0m \x1b[38;2;162;81;81m'.\x1b[0m| | \x1b[38;2;204;204;255m-\x1b[0m \x1b[38;2;212;221;228m/\x1b[0m \x1b[38;2;255;255;255m.'\x1b[0m| 8 \x1b[33m**\x1b[0m", + "'---' ||[][]_\\-| |\x1b[38;2;223;35;8m~\x1b[0m\x1b[38;2;165;168;175m/\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;165;168;175m\\\x1b[0m \x1b[38;2;162;81;81m:\x1b[0m| | \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;255;255;255m..'\x1b[0m | 9 \x1b[33m**\x1b[0m", + " |------- | | \x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m.'\x1b[0m| |\x1b[38;2;255;255;255m'''\x1b[0m\x1b[38;2;0;200;255m~~~~~\x1b[0m| 10 \x1b[33m**\x1b[0m", + " |\x1b[38;2;204;204;255m.......\x1b[0m\x1b[38;2;255;0;0m|\x1b[0m| |\x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m..'\x1b[0m | |\x1b[38;2;0;181;237m~\x1b[0m \x1b[38;2;255;255;255m.\x1b[0m \x1b[38;2;0;181;237m.\x1b[0m| 11 \x1b[33m**\x1b[0m", + " | \x1b[38;2;255;255;255m-\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m | |\x1b[38;2;162;81;81m'''\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m\x1b[38;2;255;255;102m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| | \x1b[38;2;255;255;255m.\x1b[0m .| 12 \x1b[33m**\x1b[0m", + " |\x1b[38;2;255;255;255m'.\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m| | \x1b[38;2;51;51;51m::\x1b[0m\x1b[38;2;0;153;0m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| |. \x1b[38;2;255;255;255m.'\x1b[0m . | 13 \x1b[33m**\x1b[0m", + " |\x1b[38;2;0;204;0m...\x1b[0m\x1b[38;2;255;255;255m'..''\x1b[0m| |. \x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;0;153;0m:::\x1b[0m\x1b[38;2;51;51;51m:\x1b[0m| |\x1b[38;2;199;76;48m.\x1b[0m\x1b[38;2;255;0;0m.\x1b[0m\x1b[38;2;255;255;255m|\\\x1b[0m\x1b[38;2;255;0;0m.\x1b[0m\x1b[38;2;199;76;48m.\x1b[0m\x1b[38;2;164;122;77m''\x1b[0m| 14 \x1b[33m**\x1b[0m", + " |\x1b[38;2;0;204;0m.\x1b[0m \x1b[38;2;0;204;0m''.\x1b[0m | |. .\x1b[38;2;0;153;0m:::::\x1b[0m| |──┬┴┴┴┬─| 15 \x1b[33m**\x1b[0m", + " | \x1b[38;2;0;204;0m'.\x1b[0m\x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m'.\x1b[0m| | : \x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;85;51;34m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| |──┤AoC├o| 16 \x1b[33m**\x1b[0m", + " |\x1b[38;2;0;204;0m.\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;204;0m'.\x1b[0m\x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m:\x1b[0m| | '. . | |┬o┤ten├─| 17 \x1b[33m**\x1b[0m", + " | \x1b[38;2;0;204;0m'..'\x1b[0m \x1b[38;2;0;204;0m.'\x1b[0m| |. 'o . | |┘*┤yrs├─| 18 \x1b[33m**\x1b[0m", + " | \x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m..'\x1b[0m | |: .'. .| |─┘├┬┬┬┴─| 19 \x1b[33m**\x1b[0m", + " |\x1b[38;2;0;204;0m'''\x1b[0m)) | | .o \x1b[38;2;255;255;102m*\x1b[0m: '. .'──┘\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m<<\x1b[0m| 20 \x1b[33m**\x1b[0m", + ".------'\x1b[38;2;0;102;255m.-\x1b[0m((\x1b[38;2;0;102;255m---.\x1b[0m'------. | :\x1b[38;2;255;0;0m|\x1b[0m\x1b[38;2;204;204;204m\\|\x1b[0m \x1b[38;2;51;51;153m~\x1b[0m \x1b[38;2;153;0;255m_\x1b[0m'' \x1b[38;2;153;0;255mO>\x1b[0m \x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;0;0m@\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m| 21 \x1b[33m**\x1b[0m", + "| \x1b[38;2;255;0;0m.---_\x1b[0m \x1b[38;2;0;102;255m'------'_\x1b[0m \x1b[38;2;170;170;170m.~'\x1b[0m | | \x1b[38;2;204;204;204m|\x1b[0m\x1b[38;2;255;0;0m\\|\x1b[0m\x1b[38;2;153;0;255m\\\x1b[0m \x1b[38;2;153;0;255m/\x1b[0m \x1b[38;2;153;0;255m\\\x1b[0m \x1b[38;2;153;0;255m/\x1b[0m\x1b[38;2;51;51;153m~\x1b[0m \x1b[38;2;0;153;0m>\x1b[0m\x1b[38;2;255;0;0m@\x1b[0m\x1b[38;2;0;153;0m<<\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m\x1b[38;2;0;102;255mO\x1b[0m| 22 \x1b[33m**\x1b[0m", + "|\x1b[38;2;255;0;0m/\x1b[0m \x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;255;0;0m/\\|\x1b[0m\x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m)\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m\x1b[38;2;230;65;11m~\x1b[0m\x1b[38;2;170;170;170m\\\x1b[0m | |\x1b[38;2;0;102;255m___\x1b[0m\x1b[38;2;255;0;0m|\x1b[0m\x1b[38;2;204;204;204m\\|\x1b[0m\x1b[38;2;0;102;255m________\x1b[0m\x1b[38;2;0;153;0m>\x1b[0m\x1b[38;2;0;102;255mO\x1b[0m\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m| 23 \x1b[33m**\x1b[0m", + "|\x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;136;0;0m|\x1b[0m \x1b[38;2;255;0;0m\\\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m|/\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;230;65;11m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m | | \x1b[38;2;155;113;91m----@\x1b[0m \x1b[38;2;170;170;170m_\x1b[0m\x1b[38;2;208;179;118m|%%%=%%|\x1b[0m\x1b[38;2;170;170;170m_\x1b[0m | 24 \x1b[33m**\x1b[0m", + "|\x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;136;0;0m\\\x1b[0m \x1b[38;2;255;0;0m\\\x1b[0m \x1b[38;2;0;102;255m'------'\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;230;65;11m/\x1b[0m \x1b[38;2;230;65;11m\\\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m| '-.\x1b[38;2;155;113;91m!\x1b[0m \x1b[38;2;155;113;91m/^\\\x1b[0m \x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m\x1b[38;2;94;171;180m.~~.\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m.-' 25 \x1b[33m**\x1b[0m", + "'----------------------' '------------------'", +] + + +def osc8_link(url: str, text: str): + """Lien clickable dans le terminal.""" + OSC = "\033]" + ST = "\a" + return f"{OSC}8;;{url}{ST}{text}{OSC}8;;{ST}" + + +def lolcat(s: str, seed: int) -> str: + p = subprocess.Popen(f"lolcat -f --seed {seed}", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + s, _ = p.communicate(s.encode()) + return s.decode() + + +def figlet(s: str, seed: int = 10) -> str: + p = subprocess.Popen( + f"figlet -w 100 -f small | lolcat -f --seed {seed}", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE + ) + s, _ = p.communicate(s.encode()) + return s.decode() + + +def xmas(lang): + if lang == "fr": + xmas = "JOYEUX NOEL !" + indent1 = 1 + indent2 = 17 + else: + xmas = "Merry Christmas !" + indent1 = 6 + indent2 = 22 + + lines = [] + + lines.append("cat <<'EOF'") + + for line in AOC_10_YEARS: + lines.append(" " * indent1 + line) + + title = "Advent of Code 2024" + title = osc8_link("https://adventofcode.com/2024", lolcat(title, 100)) + title = lolcat("-" * indent2 + " [ ", 26) + title + lolcat("] " + "-" * indent2, 29) + lines.append(title) + + lines.append(figlet(xmas)) + + lines.append("EOF") + + return "\n".join(lines) + + +print( + f""" +#!/bin/sh +if [ "$1" = fr ]; then + {xmas('fr')} +else + {xmas('en')} +fi +""" +)