happyha.py

Created by schraf

Created on October 29, 2021

9.71 KB


from kandinsky import fill_rect

img = b"[3d(3d#@#&#9d'M#$#A#(#8#$'H#&#A#)#9#%'E#&#B#*#9#&'A#&#C#*#<#%'.d#3#%#D#)#>#&#1d&Rd#1#&#D#)#;b#$#&#1d&Qd#0#&#E#(#?d#$#&#0d&P#$#.#&#F#)#=d#$d#$#&#/#$&Od#/#&#B#$#%#'#?d#$d#$#&#/#$&Kc#$#.#&#Bc#$d#'#Bb#$#&#.d&N#$#-#&#?d#%d#$d#$#&#,d#:d#$#&#-#$&Jc#$#.#%#Ad#$c#$d#&#*#$#:d#$c#&#-#%&K#%#,#&#C#'#$#%#'#&#<d#&#&#*c#%&J#%#,#&#E#$#$#'#$#%#Bd#%#%#)d#$#%&K#$#,#%#G#$#%#(#Dbd#&#)d#$#$&J#%#+#&#;#,#%#*#(#+#8d#%#%#(d#$#&&I#%#+#%#:#9#$#2#5bd#&#(d#$#%&I#%#*#&#8#O#5d#$#%#)c#%&I#%#*#&#6#R#5c#&#(c#%&H#%#+#%#6#T#2d#%#&#'d#$#%&I#$#+#%#6#U#3d#$#%#(c#&&G#%#*#&#5#W#1bd#%#'d#$#%&H#%#*#%#5$##4#&#'d#$#%&.d#8c#%#)#&#4#0#$#:b#/#1bd#$#*#%#9d%J#*#6#%#*#%#5#.c#$#9b#0#3#&#)#&#5#+%C#.#2c#%#(c#%#3#0#$c#8c#$#0#0bd#%#)#%#5#-%B#/#3#&#'c#%#4#.#)#5#%d#%#.#2c#%#)#&#3#(d#(%@#&#(#'#0c#%#)#%#4#.#'c#6#'c#.#0d#$#&#)#%#3#&#)#&%<d#$#%#$d#$d#%#%#3#%#)#%#3#.#&d#&#3#&b#$#.#0d#$#%#)#%#3#&ad#$#%%>#%#)d#$#&#0c#%#'c#$#3#.#&#%b#2#&#%#$c#-#1c#%#(#&#2#%#)c#&%<c#%#*d#$#%#0c#%#(#&#3#-#%#&c#$#)d#)#&#&b#-#1c#%#)#%#2#%#,#&%:d#$#%#+c#%#2#%#'c#$#2c#>b#>#0d#$#%#(#&#1#&#)bd#$%<c#%#-#&#/c#&#'#&#2#?b#>#1c#%#(#%#2#%#-#&%:d#$#%#+d#$#$#2#&#&c#$#2c#=#$c#>#0d#$#%#%c#&#1#&#*c#&%?#%#,#&#2#%#&c#%#2#?b#>#1c#%#%d#$#%#2#%#-#%%=c#%#,#%#1c#&#&#%#2c$'#2#&#&#&#1c#%#*c#&%@#%#+#&#3#%#'#%#2$(#3#%#'#%#3#&#+#%%?c#&#)#&#2c#&#$c#%#1c#+#%c#@c#%#,#0c#%#%c#%#3c#%#*#&%?d#$#&#)#%#+d#+#%#$d#$#$#1c#,#$d#'#9#$ad#,#0d#$#%#$c#%#+d#+#%#)#&%Ac#&#(#%#+#%#'d#$#&#%#%#2#-#%bd#(#/#&c#&c#,#2#&#&#%#+#%#(c#&#'#&%F#&#%#&#+#%#+#&#%#$#3#-#&d#$#'aab#'#)#-#3#$#%#&#+#%#+#%#&#'%Cd#$#'#$#%#6d#$#%#%#%#0c#-#%d#$d#$d#(d#%d#$a#)#.#0c#%#%#&#5d#$#&#$#&%Fd#%#*#:#%#%#$#3#.#$d#$d#3d#,#-#3#$#%#%#7d#$#+%Gd#$#)#8d#$#&#$#$#1c#.#&d#3d#*#/#2c#$d#&#9c#)%Jd#%#'#=#%#$d#1d#$#0#.#&#.#/#4d#$#%#=#'%M#*#<#&c#2c#2#+#&#,#1#4#$d#%#;#+%K#.#;#'#1d#$#4#(#'#(#4#4#'#<#-%G#(#%#(#8d#%#%#2c#9d#'d#8#5#%#;#(#&#'%F#&bd#$c#(#;d#6#S#6#$#:#)bd#$#(%A#(c#$b#$c#)#3c#$#5bd#Q#9d#4c#)#)d#%#(%=#)#$d#'b#$c#,ac#'c#9c#P#:#(ac#.#-d#%#(%8#)#&d#'d#%d#$d#%#2#=d#$c#K#A#2#'d#-d#%#)%5#(bd#,d#$d#$d#(d#$b#Fbd#Gc#Gd#$d#*d#2d#&#(%0#)#$d#3d#$d#%d#Nd#$c#.c#$d#$c#-c$3d#%#)%,#)c#$d#8d#+d#Gd#0d#$d#$d#$d#'d#%d#$b$2d#(#(%'#($=aad#$d#$d#$d#$abd#$d$7b#%#)%$#'$Sd#%d#'d$=d#'#'$W#'&Gd#'#'$T#&&Ld#&#&$Q#&#Ld&&d#$#&$P#%#N#$c$V#$$'#%$M#%#Q#)c$Kc#%$*#%$L#%#R#)bd#=#%$$#+#0#$c#Q#%$J#$#Qbd#&#3#$#.#&$'#*#1#*#L#%$H#%#T#'#/#&#-c#(#;c#%c#5#'#&#(#2#$#R#%$<#&#(#$#F#$#.c#'#(#,#+#%d#*#8#$#&#&#0#%#&#&#%#(#.c#$#/d#F#$#)#&$1#&#(#$#Gd#1#&#,#(#1#(#-#.#(#'d#/#(#'#$#(#/#$#/d#G#$#(#&$0#'#(d#Hd#/c#&#-#'#.c#)#0#+#)#&#(#)#&d#$#&#$c#'#-#$#1d#G#$#'#'$1#&#'#$#H#$#.c#&#+c#'#1c#'#2#(#'c#'#(#(#'d#$#&c#$#'#-d#1d#Hd#(#&$0d#$d#(d#G#%#0#'#+c#&#1d#$#'#,ad#'#*#'#&d#$#&#)c#&#$c#(#*#$#.d#$#%#G#$#&d$>d#G#&#0#&#+d#$#&#0#$#$#&#1c#&#(d#$#&#'c#'#(c#'#&#(#)d#2c#$#Gd$B#$#1d#5#$#%d#.c#&#,#'#0#$b#'#-bd#'#)#(#(#'#*#'#%d#$#(#'d#0d#$d#%#$#4d#1#$$Cd#2#$#1#%c#$d#.c#&#.#&#0bd#'#2#&#+#&#)#'#*#&#&d#$#(#%#$#0d#$d#&#%#1#$#2d$Cd#3#$#-#%#)d#/#'#,c#%#0d#%c#&#/c#'#(c#'#'c#&#)c#&#'c#,#3#$#(#%#-#$#4d$Cd#5#&b#'c#$d#&d#0#&#-#'#/d#%c#'#.d#$#&#*#'#*#&#)#'#+#)#5d#*#'a#%#5d$Cd#5#(c#-#%#.c#&#,c#%#/#$#$c#(#/c#&#)#'#)#'#*#&#)c#)#5#%#-c#(#6d$;#)c#6b#1c#$#-c#&#-#'#.#$#(#&#/c#&#*#&#+#&#)#&#-#'#5c#$#1#&#5c#)$1#-#5#$d#$#-#%#%d#.#'#,#'#/d#&c#(#-d#$#&#(#'#*#'#)#&#+c#(#5d#$#%#+c#$#$d#6#-$.#&#>d#%#$#*#%#&d#/#'#'#+#.#'c#$#'#.c#&#(#&#-#&#'#&#0#&#5d#&#&#*#$#$d#>#&$+#'#>#$#&#+#)d#-c#+#(#&#.d#&#+#-c#*d#&#-#(b#&#.bd#&#4#$#)#+#%#$#?#&$*#%#Ad#'#%#.d#-c#&#+c#&#.d#)#)#/#&#%d#2#'c#%d#1c#&#5d#.#%#'d#A#%$(#&#Ad#&#$d#$#,#$#.#'#-#&#-#$#'d#$#(#,c#'#6#&#9#'#4#$#-#$c#%b#=d#%#%$(#%#Bd#'d#$#$#*#&#.#&#+d#$#%#-#$#(d#$#'#/#'#5#'#9#&#4#&#*#$#$d#'d#?d#$#%$&#%#B#$#&#$#%#$#%c#$#%d#,c#&#,c#%#,#$#*c#(#+c#'#3c#'#8c#&#4d#$#%#%#%#&d#'d#B#%$&#%#Cd#'d#&#)#&d#,c#&#,c#%#,#$#-#'#.#&#6#'#9#&#1d#$d#&#)#&d#'d#@d#$#%$$#%#Cd#'d#'#&#)d#-#'#-#&#,d#,c#'#+c#'#3c#'#8c#&#3#$#)#%#'d#'d#Ac#%$$#%#C#$#&#$#&d#$#$#(d#.#&#.#%#+#$#,d#$#'#*d#$#&#6#'#9#&#4d#(d#$#$#&#$#&#$#C#%#X#&#Cd#'d#'d#%#%d#&#,#(#,c#%#+#$#-c#'#+#(#3c#'#8c#&#3#&d#%#%d#'d#'d#Ac#&$##%#Cd#'d#'#$#%#'d#$#-#&#.#%#*#%#-c#(#,#&#6#'#7c#&#3d#$#'#&d#'d#'d#C#%#X#%#C#$#'d#'d#'#$#&d#+#(#,c#%#&c#'#,d#$#'#*c#'#4c#&#9#'#3d#%#%#'d#'d#'d#Ac#%#X#&#Cd#'d#'d#'c#$#$d#,#'#.#%#'c#&#-d#$#'#+#(#3c#'#8#'#3c#$#$#$#&d#'#$#&#$#B#&#W#%#B#$#'d#'d#'d#&#%#+c#&#,c#%#,#%#,c#'#)c#'#5#(#7c#&#2#&#&d#&#$#'d#'d#@c#%#X#%#Cd#&#$#&#$#$c#%b#%#,#'#.#%#.d#,c#(#*#(#5#'#8#(#2#$ab#%#%b#$c#$#$#B#%#V#&#>#<bd#,c#&#-#'#9#*#'c#(#4#(#7#(#2c#&d#;#=#&#W#%#@d#$d#E#'#*#,#8#+#&#)#4#)#6#)#Hd#$d#C#%#V#&#?d#Gc#'#)d#?#'bd#%d#$#+#2#*#1#/#<ac#$d#$d#Cc#%#W#%#=d#%d#F#)#,d#;#$#$d#,#-#/#-#3bd#(#Ad#(b#B#&#U#%$.#'b#%#Gd#$d#(#&c#$d#$c#%#*#%abd#&#4d#'#$$2c#%#V#%$.d#%b#Ld#$d#,d#$d#)d#1d#)d$N#%#T#&$0d#&d#Ub#=d#$d$Rc#%#U#%#&d$(d#%b$Cd$S#%#T#%#'#&'Gc#&#S#%#)#)c'C#%#R#&#'d#$#)bd#=#%%Oc#$#3c#%#Ec#%#R#%#)d#$#&#3#$#/#&%4d#-#%ac#&d#&#%#$ac#&d#'#H#%#P#&#(c#(#/#&#-c#(#-#%#8#%#?#,#Q#&c#+#)#*#$#&#*#*#$#Fc#%#P#%#-#&#)#,#+#-#/#*d#'#,#*b#%#0#%#)#'#Q#*d#$d#)#+d#'#(#&b#%d#*c#$#=#%#N#%#*c#(#(d#%#(#0#)#1#*#.d#&#*#1#%#-#'#P#(c#$c#'#,d#'#(#,d#$#,#+ad#(#%d#$#&#L#&#.#&#-#'#.d#$#(#1#*#0d#$#)#2#%#.#'#Ld#%#&#'c#(#+d#(#'#(d#%d#)#)#,#'#-#&#I#&#-c#'#+c#'#,d#$#%d#'#.d#$#(#0d#$#)#1#&#,d#$#(#Lc#&#%b#$#'#,d#&c#'#,d#'c#)#.#%#+d#$#&#G#'#-d#$#&#-#'#-d#%d#$#&#/c#(#1d#$#)#0#&#0#(#1d#>#%#(c#(#2#'#2c#*#-#$#1#'#>#*#1c#&#+c#'#.c#$d#'#0#(#3c#(#0#&#/d#$#'#0d#>#%#(d#$#'#1c#'#0d#$c#*#*c#$#2#*#=b#3c#&#.#&#0d#%#'#0#(#2d#$#'#0#&#0c#(#-#%#?d#*d#$#'#3#&#3c#$d#(#,d#/d#'b#=d#8#'#,c#&#/#$b#'#.c#'#4c#'#/#&#3#(#+#&#?#$#+c#&#1c#'#1d#$#$#$#)#*#$$5#&#,c#&#/#$#&#&#.c#'#4c#'#/#'#0d#$#(#(#(#?d#,c#'#3#&#2d#$#$#$#)#*d$3c#&#-#&#/#$#$c#(#.#(#3c#(#.#'#2c#(#$#,#>#$#+c#'#2c#&#5d#$c#)#)d$3c#&#+d#$#&#/d#'#'#/#'#6#'#/#&#2c#(#%d#$#)#-d#1d#/#'#1c#&#'d#/d#'#)#(d$4#'#*bd#%#/d#&d#$#&#-c#'#3c#'#.#(#3#)#)#(#,#$#0#$#,bd#&#&d#.#&#'d#/d#$bd#(#(d$5#&#,#(#.#$#&c#'#.#'#6#'#.#'#4#(#'d#$#'#+#&#/#$#/#'#&d#.#'#&d#/d#&c#)#'d$3c#'#&c#*#.#$d#$#&#'#,c#&#5c#&#.c#&#1d#$#(#(c#'#*#(#.d#.c#,#,c#,#/d#'c#)#%d$4c#*c#'#'#-d#&#+#.#'#4c#'#+d#$#'#2d#$#'#+#'#*#'#-#$#1#&#$#%#/#&b#$#/d#'d#$#)#$#$$4#(#*c#&#.d#(#*#*c#'#,d#+#'#,bd#'#0d#$#(#)c#'#(#$d#'#,d#0c#&#&d#,c#'#%d#0d#(c#*c#R#%#9#&#+d#$#&#,#$#*#(#-#'#+d#,#'#+d#$#(#1d#$#'#,#'#'d#%#'#+d#0c#&#&d#/#&#&d#/d#+#,#9#%#7#%#7c#&#,c#%#-d#)d#$#'#+c#&#,d#*c#&#,bd#'#2#(#*c#(#&d#$c#'#*d#2#'#&d#-c#&#&d#/d#)d#$#+#9#$#9#$#7c#&#,c#&#,d#*d#$#'#,#'#,d#)c#&#,#$#$#'#3#'#-#(#%d#'#'#)d#3#'#%d#-c#&#&d#/d#)bd#*#9#%#P#'#-#&#,#$#+c#'#*c#&#-d#*#'#-bd#'#1#(#+d#$#'#$d#%c#(#(d#2c#&#4#&#4d#,c#)$5#&#.#%#,#$#-#'#,#&#-d#+#&#-d#%#'#2#&#-c#(c#)#'#'d#4#&#2c#&#4d#,c#)$3c#&#,c#%#,d#,c#(#)c#&#-#$#(c#&#,#%b#&#1#'#-c#*#%bd#(#%d#3d#$#%#4#&#4d#-c#'$5#'#.#%#+#$#/#'#)c#&#-#$#(c#&#-#$b#'#0#&#.d#$#(#(c#)d#$#5#'#1c#&#4d#-d#$#'$3c#&#,c#%#*#%#-c#'#*#'#,#&#(#'#,#%#&#'#.#&#.bd#(#'d#$#+#5c#%#4#&#4d#.c#&$5#'#.#%#(c#%#.c#'#*#'#*#'#(#(#*#'c#$#'#-#%#1c#'#)d#$#*#5c#&#1d#$#%#4d#2#%$3c#&#,c#%#&#)#,d#$#(#(#+b#*#'#*a#)#%d#$#&#*#%#2d#$#&#+c#)#5c#&#4#&#-d#(d#/d#$#$$5#'#.#&#+#%#+d#$#(#%#)ad#$a#'#(aabd#(d#%#'b#&#4d#$#%#+d#$#(#8#&#,d#)#&#,d#(d#3d$##&#/c#&#.#%#.d#,c#(#$d#%d#6d#Eb#9c#$#-c#(#6c#%#-d#'c#%#-d#(d#/d#6#&#G#'#-#(#-#&#8c#)$Gd#-d#$#&#7c#&#+#$#'c#&#,d#(d#A#'#J#'#+c#&#)c#*#6d#$#+$Bb#-bd#%#9#'#*#%#&c#&#+#%#(d#?#'#N#'#*#(#(a#(d#5#(ad$Qd#$#$#5bd#(c#$c#&a#)#&c#&#(d#?#&#Q#&#'c#(#E#$c%&d#$d#5ab#-#%ab#-#(#$#=#&#Qd#$#&#%#,#Gac$Wd#;d#+a#(b#+b#)#%#;#'#Rd#$#&c#Od%Fd#$b#+b#%d#3#&#9#'#Tbd#&#$ac&<a#,d#(b#(c#'#8#'#Sd#$c#&'-ad#%#6#&#Xd#$#&'5#$#4#&#Wbd#&$)#$d#$d#$#%#$d#$#(#$#(#%#'#$#'#$#,#%#)#'#,#*#$#'c#'#$d#$c#(#$#'#$d#'$'c#&$$d#$#&$(#+#$#)#&#$#&#*#%#$#%#%#+#)#&#*#)#+#$#*#%#*#'#%#&#+$(#&$#bd#&$+#$#(#$#%#%#%#$#%#%#&d#%#$#%#$#+#%#&#%#%#$#$c#$#,#$#'#%#%#%#$#%#,#'#(#%$*#&$&d#$#%$+#%#'#$#&#$#%#$#%#%#&d#%#%d#%#+#%#'#$#%#%#&#$#'bd#%#'#$c#$#%#$#$#,#$d#$#)#$$+#%$'c#%$)c#$#'#%#&#$#%#$#$#%#)c#(#*c#$#(#%#$#$#&#%#)c#$#$d#$#%#%#%#$#)#'#$#$#$#&c#$$+#&$)#%$+#%#'#$b#%#%#$#%#$#,#'#*c#$#)#$#$#%b#$#(d#%#%#'#&d#&#$#)#&#$#%#$#'#%$+#%$'c#%$+#$#&c#)#%#%#$#%#(c#*#(d#$#%#'#$b#*#)c#%#'#*#$c#$#*#&d#%#'#$$+#%$*#%$+#%#'#%d#%#&#$#%#%#&d#&#$#$#%#(c#%#'#$b#%d#%#-#%#'#%d#%#$c#$#*#+#&#%$*#&$'c#%$+#$#'#%#$#%#$c#$#%#&d#&d#%#&#$#'d#%#&d#%#%#%b#%#*c#$#'#%#$#%#&#&bd#$#$#&#%#&#$$*c#$$*#%$+#%#'#$#&#$b#$c#%#)#$#%b#&#'d#$#)#&#%#%#%#+#%#'#%#$#&#$#*d#%#'#%#%#%$+#%$(#&$3d#'d#%b#%d#%d#'d#0d#$d#$b#'d#$b#.d#)d#&d#'d#$d#$d$=c#%$)#%$Ed#*d#&d#+d#$d#1d#-d#/d$J#%$(#%$Ed#$d#9d#$d%:d#$#%$'#%'Gc#%$&#%'J#%$&#%'K#%#Xc#%#M#&&%#&#M#$$$#$#&ac#C#&&$#'#Dbd#$c#$#$#W#6#=#'#6#(%&#(#6#'#=#6#V#%#.#*c#9#&#5#+%##+#5#&#:#*c#,c#$#Td#5#*#5d#$d#6#,$X#-#2d#$d#8#*c$Ad#(#)#J#&#%#&#Mb#1#$#N#&#$c#&#2d#8#*#&a$:d#$a#%#)#G#%#%d#$#&#K#'#/#&#L#&#$d#$#&#F#)#&b$Gb#&#)#D#%#&d#$#%#K#'#/#'#K#%#%d#%#%#E#(bd$Jd#&b#%#(#B#%#(c#%#Ic#'#.#(#J#&#'c#%#B#(%#d#'#(#@#%#)#%#I#)#/#)#I#%#)#%#@#(ad$Sd#$b#%#)#<c#%#'c#%#G#+#.#+#G#&#(#&#>#(%*b#&#(#<#&#(#%#H#+#-#+#H#%#(#%#=#)#%d%+d#%#)#8d#$#%#'#&#Ed#$#,#+#+#Gc#%#'#&#:#)#&d%*d#&d#&#(#7d#$#&#%#&#Fd#%d#%#'#)#(#M#&#&#%#:#)%6b#$#)#8#&#$#&#Id#$bd#'#'#'#Mc#&#$#&#8#)%<d#%#)#4d#%#*#Oc#'#%#(#P#*#8#)%?d#%#)#4c#)#=#$#1d#$c#'d#'#6d#;c#)#6#)%Cd#&#*#5#'#;#$#4d#$c#+#9#%#:#(#4#)c%Ed#&#+#/#,#4#'#8d#$#*#<#&#4#+#0#+%Jb#&#*c#*#)d#(#.#(#;d#$#)#?#&c#-#(d#)#+#*c%La#%#7#&#5c#>c#)#@#6c#$#8%Sb#&#2c#$d#%c#-c#&d#>#+#<d#(c#,c#&d#$c#2#$d%Rd#%b#%c#+c#(b#&d#.d#?#-#<a#'d#$d#-d#$c#-c#$d&&d#9a#K#(#$#'#?a#$d#/b#*d#%d#$d#$d&#d#$aad#-d#O#'#$c#(#Vac#$b#$d&0d#%d$$#(#$d#%#'$#d#$d'9#+#'bd#'d#%(8#+#+c#+'Dd#J#*#+d#$#*#Jd&Q#%#I#*#,d#$#*#I#%&O#%#Hc#)#-c#(#J#%&Rd#L#'#-c#'#Md'Dbd#&#.#'#Kd'Ic#%#1#%#Kd'Jd#2d~K"
w = 320
COUL = [(54,54,54),(254,183,52)]

def taille(n):
 return  54 * (n[0] - 35) + n[1] - 34

def remplir(x,y,t,c):
    while t > 0:
        if x == w:
            x = 0
            y += 1
        d = min(t, w - x)
        fill_rect(x,y,d,1,c)
        x += d
        t -= d
    return x,y   

def aff():
    i = 0
    x,y,c = 0,0,1
    while i < len(img):
     v = img[i] 
     if 97 <= v <= 100:
        for _ in range([5,3,2,1][v-97]):
            x,y = remplir(x,y,1,COUL[c])
            c = 1 - c
        i += 1               
     else:   
        t = taille(img[i:i+2])
        i += 2
        x,y = remplir(x,y,t,COUL[c])
        c = 1-c 

fill_rect(0,0,320,222,(0,0,0))
aff()