题解 P1000 【超级玛丽游戏】

· · 题解

PHP-最便捷

这题用PHP来做非常简单。

                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############

你没看错,真的是直接粘贴上去就行了

原理的话,PHP标签外字符会被PHP解释器直接输出(常见于HTML和PHP混写,甚至php的if里出现结束标签+HTML+开始标签能够实现选择性输出HTML),因此此题直接将字符画贴源码里直接交(PHP)能过。

Python-最短代码挑战

既然PHP直接原文粘贴过了那么别的代码只要带着全文肯定体积是不可能更小了,于是考虑压缩。

考虑到压缩会出现非ASCII字符,于是用BASE64包一层(扩大了1/3文本体积)。

测试了一下gzip/bz2/lzam/Deflate(zlib)/Brotli压缩算法:

压缩算法 raw gzip bz2 lzam Deflate Brotli
大小(byte) 1127 174 207 220 164 154

不过由于Brotli不在python原生库里,最后用Deflate

最后用python2而不是3省一个括号

import zlib,base64;print zlib.decompress(base64.b64decode('eJylUkEOwCAIu/sKk95Mxv+fN2AsE0S3xR42sRYqUqtHM5TJfsaBQQyQZ3jTGLp+JcqIjBUMSUMYy1Z6EB1J0hCOrhuywnoeXo4gF5U1I0nxJhc3rKSmH2vDd/Ny+nkMa6I3F7xmallrgvRh0K9L4DzLPLZQ9IY2CdekTKNjwK/qqdwK4J7TeZSa/wxtWKjc3W4VjdKdqt2tsIp2q3Y4AbV3oO4=')).decode()

最终代码长度291字节

或许还有其他更短方案,请高人赐教

C/C++-最快/内存最小解