Простая сложность


17

Выход

                  # # # # # ##### ## #         
                  ## #### ####### # # ##        
                #### ## ## # ### #######        
                # # # # ##### ### # #        
                # # ### ##### ##### # # #        
                ####### ### # ### # ## ####        
                ## # # ### # ####### ##          
                 # ## ##### ##### # # #          
                ## # # # # #####  
                 # ## ## ####### #  
                 ####### #### ## # ###
                ### # # # # # ##### 
                    # # # # ### ##### #     
                    #### ####### ### # ##    
                    ## ## # # #######    
                     # # ## ##### # #    
    # # ##### ## # #                     
    ####### # # ## ##                    
    ## # ### ####### ####                    
     # ##### ### # # # #                    
 ##### # # # # # ###                
### # ## #### #######                 
  # ####### ## ## #                 
  ##### # # # # ##                
          # # # ##### ##### ## #                 
          ## ####### # ### # # ##                
        #### ## # ### # ### #######                
        # # # ##### ##### ### # #                
        # # ### ##### # # # #                
        ####### ### # ## ## ####                
        ## # # ####### #### ##                  
         # ## ##### # # # # #                  
                                          #                     
                                          ##                    
                                        ####                    
                                        # #                    
                                        # # ###                
                                        #######                 
                                        ## #                 
                                         # ##                
                                 ##### ## #                 
                                ### # # ##                
                                  # ### #######                
                                  ##### ### # #                
                                  # # #                
                                  ## ####                
                                #### ##                  
                                # # #                  
                                  # # # # # #####  
                                  ## #### ####### #  
                                #### ## ## # ###
                                # # # # ##### 
                                # # ### ##### ##### #     
                                ####### ### # ### # ##    
                                ## # # ### # #######    
                                 # ## ##### ##### # #    
                                ## # #     
                                 # ## ##    
                                 ####### ####    
                                ### # # # #    
                                    # # # # ###
                                    #### ####### 
                                    ## ## # 
                                     # # ##

Трейлинг допускается Самое короткое решение побеждает.

hint0

hint1:

hint1


спасибо @Tahg за исправление подсказки1


8
@ngn выводит только вызовы без какого-либо объяснения того, как формировались данные, обычно хмурится (см. codegolf.stackexchange.com/q/126037 ), потому что первый ответ имеет тенденцию сдавливать «таинственную» часть
— Уриэль

16
Лично мне не нравятся подобные вызовы, когда выяснение правила / рецепта является частью задачи. Кроме того, как только человек находит это, все остальные могут просто следовать за этим, так почему бы не опубликовать в первую очередь?
— Луис Мендо

11
@ LuisMendo Это интересный аргумент. Код гольф в чистом виде о «краткой реализации известного решения». Загадки в их самой чистой форме о поиске решения - реализация либо не актуальна, либо считается занятой работой. Одним из вариантов было бы опубликовать «трюк» в спойлерах. Таким образом, чистые игроки в гольф могут атаковать эту проблему как задачу игры в гольф, а те, кому нравятся как игры в гольф, так и головоломки, могут избежать поиска и решения обоих.
— Иона

5
Я думаю, что «таинственная» часть - это то, что я мог бы увидеть больше. Хотя один из ответов может найти уловку, остальная часть - это все еще обычная задача для игры в гольф ... И это хорошая задача для тех, кто в любом случае стремится найти образец в начале.
— полностью человек

3
@ H.PWiz, я не уверен, что + 26 / -7 действительно "хорошо принят". Это больше похоже на «плохо принятый, но сумевший ударить HNQ достаточно быстро, чтобы получить перекос».
— Питер Тейлор

Ответы:


11

SOGL V0.12 , 17 16 14 байтов

 #6{³IIč▓┼;I+§

Попробуй здесь!

При более позднем обновлении č▓может быть удалено 12 байт, что преобразует ToS из массива массивов символов многострочной строки в массив строк [["#","#"],[" ","#"]] -> ["##"," #"], поскольку ┼горизонтальное добавление плохо работает с массивами массивов символов, что Iсоздает, потому что он также используется для вращения массива. В SOGL массив массивов символов должен быть = массив строк, но многие вещи пока не поддерживают это ..

Объяснение:

 #            push "#"
  6{          6 times do
    ³           create 3 total copies of ToS
     II         rotate clockwise twice
       č▓       normalize as explained above
         ┼      append horizontally
          ;     get the 3rd copy ontop
           I    rotate clockwise
            +   append vertically
             §  reverse horizontally

1
подожди, как это работает
— Конор О'Брайен,

@ ConorO'Brien только что добавил объяснение: p
— dzaima

о, хорошо `` `` ``
— Конор О'Брайен

22

JavaScript (ES6), 233 217 213 198 182 170 163 122 байта

f=_=>[...Array(64)].map((_,x,a)=>a.map(g=(i=(n=64,x),j)=>(n>>=1)?i&n?j&n?g(j,i):` `:j&n?g(i,~j):g(~i,j):`#`).join``).join`
`
document.write(`<pre>${f()}</pre>`)

Изменить: Сохранено 14 18 байт благодаря @Shaggy. Сохранено 3 байта благодаря @ngn. Сохранено еще 12 байтов благодаря совместной работе. Сохранение 41 байта путем кражи наблюдений @ user202729 о том, что четверти используют отражения, а не вращения. Ungolfed:

function f() {
    var s = '';
    for (var i = 0; i < 64; i++) {
        for (var j = 0; j < 64; j++) {
            var x = i, y = j, c = '#'; // Default to #
            // Each non-blank quadrant maps to to the original
            // image by doubling and a reflection. Repeat
            // this six times unless we hit the blank quadrant.
            for (var n = 0; n < 6; n++) {
                if (x >= 32) {
                    if (y >= 32) {
                        // Bottom right quarter is a diagonal reflection
                        var t = x - 32;
                        x = y - 32;
                        y = t;
                    } else {
                        // Bottom left quarter is blank
                        c = ' ';
                        break;
                    }
                } else {
                    if (y >= 32) {
                       // Top right corner is a horizontal reflection
                       y = 63 - y;
                    } else {
                       // Top left corner is a vertical reflection
                       x = 31 - x;
                    }
                }
                x *= 2;
                y *= 2;
            }
            s += c;
        }
        s += '\n';
    }
    return s;
}

Вам нужно посчитать f=здесь? Хорошо сделано, кстати.
— Лохматый


1
Вам не нужно f=подсчитывать байты, но фрагмент кода не работает без него.

1
@Neil Есть ли шанс, что вы могли бы добавить объяснение или версию без шкуры?
— Иона

1
@Джона, надеюсь, тебе это поможет.
— Нил

11

LOGO, 375 341 297 295 278 + 3 байта

Добавьте 3 байта из-за -pфлага, который по умолчанию включает перспективный режим, поэтому не нужно запускать perspectiveкоманду, в целом экономится 9 байтов.

Использовать FMSLogo в Windows с форматом новой строки Unix (LF) (в FMSLogo возникают проблемы с анализом формата новой строки CR)

to R
rt 90
end
to g :w :l
R fd 2*:l R bk :l up 180
run :w
R run :w
fd 2*:l R bk :l run :w
fd 2*:l up 180
end
to h
pu
ask -1[setxyz 0 0 870]g[g[g[g[g[g[rt 45 fd .7 pd fd 0 pu bk .7 lt 45]1]2]4]8]16]32
repeat 64[sety 64-# repeat 64[setx #-1 type if pixel=[0 0 0]""#["\ ]](pr)]
end

К сожалению, нет "Попробуйте онлайн!" ссылку, потому что я не могу найти какой-либо режим поддержки переводчика онлайн.

Идея: нарисуйте картинку на изображении, затем извлеките пиксели из картинки и напечатайте в качестве вывода.

Разбивка картинки на простые повторяющиеся части:

,

Воспользуйтесь подсказкой выше. Однако, поскольку LOGO не поддерживает отражение, мы можем только смоделировать его, войдя в perspectiveрежим 3D ( ) и повернув черепашку на 180 градусов вокруг оси, параллельной экрану компьютера.

Это определяет вспомогательную функцию g, которая дает 2 параметра l(длина стороны изображения) и w(процедура, используемая для рисования изображения), рисует 3 копии своего отраженного изображения. (см. подсказку в вопросе) Процедуру hвыполняют основную процедуру.


Вы можете пропустить некоторые пробелы, такие как 90 fd-> 90fdи сохранить несколько байтов.
— Джонатан Фрех

@JonathanFrech К сожалению, FMSLogo не поддерживает это.
— user202729

Почему papert поддерживает это тогда?
— Джонатан Фрех

2
Это единственный ответ, который на самом деле использует шаблон, а не упаковку битов?
— Иона

2
@Jonah Решение JS было первым, чтобы использовать шаблон, хотя он делает это интересным способом - с модульной арифметикой и битовыми операциями вместо конкатенационных матриц. Это решение LOGO также интересно и уникально с его подходом чтения пикселей. Я не знаю достаточно ЛОГОТИПА, чтобы понять код, но, судя по описанию, он повторяет определенные шаблоны, не углубляясь в структуру фрактала (который я уже дал в подсказке 1).
— нгн



8

Python 2 , 205 195 ... 145 144 142 144 байта

g=lambda n,i,j,*_:g(n/2,*[~i,j,i,~j][2*(j&n>0)-(i&n>0):])if n*(i&n<=j&n)else'# '[i&n>0]
r=range(64)
for j in r:print''.join(g(32,j,i)for i in r)

Попробуйте онлайн!

Вдохновленный ответом Нейла .


n>>1есть n/=2.
— Джонатан Фрех

aопределяется и затем используется один раз. Замена ссылки на ее значение может сэкономить четыре байта.
— Джонатан Фрех

Я упустил полезное упрощение - вместо того, чтобы делать все, используя повороты, я должен был вместо этого использовать отражения. Это сэкономило мне 41 байт на мой ответ!
— Нил

Я думаю, что вы можете сохранить два байта, упрощая свой [...[x],...[x]][z]выбор .
— Джонатан Фрех

1
@totallyhuman Достаточно справедливо
— TFeld

7

Haskell, 126 125 113 106 103 байт

e=[]:e
z=zipWith
r=reverse
m s=z(++)(r s++map(' '<$)s)$map r s++foldr(z(:))e s
unlines$m$m$m$m$m$m["#"]

Прямая реализация hint1 в спойлере.

Функция mгенерирует следующую итерацию. Основные функции применяются m6 раз. Детали к m:

m s=                          -- s is the current pattern
     zipWith(++)              -- concatenate pairwise the lines of
                (r s)++       --    the lines of s in reverse order, followed by
                map(' '<$)s   --    each char in s replaced by a space
                              -- and
                map r s++     --    each line of s reversed, followed by
                foldr ... s   --    the transposition of s


e=[]:e;foldr(zipWith(:))e     -- this right fold transposes a matrix

Редактировать: @ngn сохранил байт и @Laikoni еще 3. Спасибо!


n$n$n$n$n$n["#"]короче iterate n["#"]!!6:)
— ngn

@ngn: хорошо заметили. Большое спасибо!
— Nimi

Вы можете использовать e=[]:e;foldr(zipWith(:))eвместо, import Data.List;transposeа затем сократить zipWith.
— Лайкони

6

Java 7, 259 238 237 200 байт

void f(){char[][]o={{35}},n;for(int s=1,x,y;s<64;s*=2,o=n)for(n=new char[64][64],x=s;x-->0;)for(y=0;y<s;n[s+y++][x]=32)n[s+~y][x]=n[y][2*s+~x]=n[s+x][s+y]=o[y][x];for(char[]b:o)System.out.println(b);}

Спасли 2 байта, удалив {} в цикле x, спасибо ngn Спасли
19 байтов от различных изменений назначения, благодаря Джонатану
Спас 24 байта для печати против возврата (не знал, что это было разрешено), и
Спас 13 байтов для изменений цикла, спасибо Невай

Попробуйте онлайн!

Мой первый вызов, и я считаю респектабельным для Java. Использует подсказку 1 (что, кстати, неправильно, но я не могу писать комментарии). Вероятно, дальше можно играть в гольф, этот пропуск был в основном как есть, без красивой печати.


Я не уверен, что это может быть из-за разницы версий, но я проверил ваш код на TIO с использованием Java 8 , и он печатает нулевые символы вместо пробелов.
— Джонатан Фрех

Конечно, спасибо, что заметили. По-видимому, Java вполне доволен отображением нулей в качестве пробелов в своих строках.
— Таг

Вы можете сохранить байт, удалив s=1из цикла for и заменив int s,t,x,y;на int s=1,t,x,y;.
— Джонатан Фрех

1
n[s-1-y][x]=o[y][x];n[y][t-1-x]=o[y][x];-> n[s-1-y][x]=n[y][t-1-x]=o[y][x];.
— Джонатан Фрех

2
правильная матрица преобразования - [[V, H], [_, T]] (либо это, либо есть небольшая разница в вашем алгоритме, но это то, что мне нужно)
— Tahg


3

Python 2, 586 байт

import zlib,base64 as b
print zlib.decompress(b.b64decode('eJyVVlsOwzAI++8pJuX+d1zXDGLAUKi0pUp52ATcfj7+Wni3dF2/677ZO1dw+z/Zd3+rJU4SdkVHMcYQS9OuJVGio4N61p31+TGoQkco6eqoU6gSWdBJRrQhjhIdvLQ6YhNrqrEtUsu8yEbjmRqUWXlgYbl5EHfLC7cDQl4sxxAhO4wUv7fFPTx22sUWqOeEJ544Z3vn9FPU+ZmdHtCak6Fk3hfCx0FkOC8DF4YvmgoFMnCEwW2cDBkzftoiGy4GZaNhM8VYSl3YMEV7ctxsjLQKRCHZ3IB6+ATZpKSKmEyGrqZvEHY8lEQBWf8zbuAg0eypWG6nRqTLIzM+NPQa2faN89FlxhMY2vcTKDP7579fl0rmIpJ+grTvSyis798ghb4vM0CuVgbM1SFdvukjnFnfR1Gt3vAEngd6lGrIDdfkDU/ARwl+ecMHf5SzIzct8KhsqHANZ0FqFbpXdad5qH2DzOHJIHGM2pz26oug9i2+EBpX+cXQCpBA7/tne01lLb4wviHjtJE='))

Попробуйте онлайн.


Python 2, 1032 1025 байт

Мне нравится этот еще один. Но это намного дольше. Можно было бы играть в гольф, но в этом нет необходимости. Подход чиновника намного короче.

-7 благодаря Джонатану Фреху

print''.join(' '*int(x)if'/'<x<'@'else("#"*(ord(x)-64),"\n")[x<"#"]for x in'99A9A2A4A2A1E2B4A9!99B8D4G2A3A4B8!88D8B6B4A2C1G8!88A2A9A7A4E1C1A2A8!88A2A1C1E3E4A9A2A8!88G1C2A2C2A4B8D8!88B4A3A2C2A2G8B55!98A4B2E3E1A2A9A55!88B4A559A9A2A1E2!98A4B99B8G2A2!98G88D8B4A2C!88C1A2A88A2A9A4E1!992A2A88A2A1C1E4A5!992D88G1C2A4B4!992B99B4A3A2G4!777A559A4B2E1A2A4!4A2A1E2B4A559A777!4G2A3A4B99B992!4B4A2C1G88D992!5A4E1C1A2A88A2A569!1E4A9A2A88A2A1C88!C2A4B8D88G98!2A2G8B99B4A89!2E1A2A9A559A4B88!55A9A2A1E3E2B4A98!55B8G2A2C2A3A4B88!8D8B4A2C2A2C1G88!8A2A9A4E3E1C1A2A88!8A2A1C1E4A7A9A2A88!8G1C2A4B6B8D88!8B4A3A2G4D8B99!9A4B2E1A2A4A2A9A99!99996A777!99996B992!99994D299!99994A2A992!99994A2A1C88!99994G98!99994B4A98!99995A4B88!9996E2B4A89!9995C2A3A4B88!9997A2C1G88!9997E1C1A2A88!9997A9A2A88!9997B8D88!9995D8B99!9995A2A9A99!9997A9A2A4A2A1E2!9997B8D4G2A2!9995D8B6B4A2C!9995A2A9A7A4E1!9995A2A1C1E3E4A5!9995G1C2A2C2A4B4!9995B4A3A2C2A2G4!9996A4B2E3E1A2A4!9995B4A559A5!9996A4B99B4!9996G88D4!9995C1A2A88A2A4!9999A2A88A2A1C!9999D88G1!9999B99B4A1!99991A559A4B')

Попробуйте онлайн.


Вопрос позволяет [t]railing spaces, хотя в вашем решении пропущены некоторые пробелы.
— Джонатан Фрех

Разрешение конечных пробелов означает, что мне не нужно их выводить. Это верно? Это спасло бы байты на моем втором подходе. На первом это уже сделано, потому что я удалил завершающие пробелы при сохранении моего файла ...
— Simon

Я не знаю наверняка, но я интерпретировал это как допущение дополнительных пробелов, недопущение пропущенных пробелов.
— Джонатан Фрех


if x.isdigit()->if"/"<x<"@"
— Джонатан Фрех,

3

Mathematica, 112 90 байт

Спасибо Джонатану Фреху за помощь в сохранении 2 байтов!

""<>Nest[{{(r=Reverse)@#,r/@#},{" "+0#,#}}~Flatten~{{1,3},{2,4}}&,{{"#"}},6]~Riffle~"
"

Попробуйте онлайн! (Mathics)

По некоторым причинам Mathics печатает начальные пробелы во всех строках, кроме первой, когда печатает многострочную строку. Также Mathics не поддерживает оператора .

Объяснение:

  • {{Reverse@#,Reverse/@#},{" "+0#,#}}: Представляет реверс по горизонтали, реверс по вертикали, замену всего за " "и транспонирование ( это оператор транспонирования в Mathematica), соответствующий различным способам отражения или поворота изображения.
  • ~Flatten~{{1,3},{2,4}} : Свести в определенных размерах.
  • Nest[ ... ,{{"#"}},6]: Применить функцию внутри до {{"#"}}6 раз.
  • ~Riffle~"<literal newline character>" : Наведите символ новой строки между каждой строкой.
  • ""<> : Объединить все строки вместе.

Вы можете определить заменить Reverseна Rи определить, R=Reverse;чтобы сохранить два байта.
— Джонатан Фрех

2

C # (.NET Core) , 1016 1002 980 955 байт

Спасено 14 байтов благодаря Кевину Круйссену!
Сохранено 47 байт благодаря Джонатану Фреху!

o=>{foreach(var l in new[]{35223185965568,52841249260288,0xf00c0c277f00,0x9004043ee900,0x977c7c200900,0xfee4e4300f00,0xc22727f00c00,73934616658944,0xc2000020097c,73667282210788,0x7f0000f00c27,0xe9000090043e,9895614577696,0xf0000fee430,0xc0000c227f0,4398050918032,325982355457<<21,1092065689603<<20,835235872783<<20,291765223433<<20,0x7c20090000970000,-15289957744513<<17,21955973480545<<17,68788263321667<<16,68799053409<<17,206425089091<<16,0xf00c27277f0000,618546478825<<16,650622541833<<16,0xfee430300f0000,208473439235<<18,72203117569<<18,1<<21,3<<20,15<<20,9<<20,9895936,127<<17,97<<17,67<<16,15969<<17,3829596160,662634496,16105<<16,8201<<16,806289408,4027318272,9217L<<18,537463164,806293476,4027321383,2416182334,2541517856,4276413488,3257346032,1128152720,3254779936,1124073520,2130706672,3909091472,150995095,251658494,201326786,67108931})System.Console.WriteLine(System.Convert.ToString(l,2).PadLeft(64,'0').Replace('0',' ').Replace('1','#'));}

Попробуйте онлайн!


объяснение

Формат вывода хранится в массиве 64-битных чисел со знаком, который идеально подходит, поскольку каждая строка имеет длину 64 символа. Пустые пространства представлены 0и #представлены1 .

Числа затем конвертируются в двоичную строку, нули проложенный слева , пока строка не должна превышать 64 символов в ширину , а затем 0и 1символы заменяются  и #.

Код хранится внутри функции lamba, а точнее a System.Func<string>.

Некоторые константы в long[]сокращаются путем выполнения некоторого сдвига битов.


Нет ли в нем ненужного места long[] n=new[]?
— Джонатан Фрех

@JonathanFrech А, ты прав, видимо, это каким-то образом пробралось туда.
— Ян Х.

1
Вы бы сэкономили 4 байта, не указав символ заполнения.
— Нил

1
Ну, если трейлинг lне нужен, вы можете сэкономить еще больше байтов .
— Джонатан Фрех

1
Похоже, в нижней части это прослушивается.
— Лохматый

2

Древесный уголь , 42 байта

#↓##FE⁵X²ι«‖↑J⁻×³ι¹±⁰ψ⟲OO⁴ײι⟲CJ⁰±φT×⁴ι×⁴ι

Попробуйте онлайн! Ссылка на подробную версию кода. Было бы 25 байт, если бы это работало:

#FE⁷X²ι«‖↑⟲C→⁴⟲CJ⁰±φTιι

Объяснение:

#↓##

Вручную сгенерируйте первую рекурсию, поскольку невозможно вращаться вокруг (1, 0,5). (Такое вращение имело бы смысл только если бы оно было на 180 °.)

FE⁵X²ι«

Зациклите первые пять степеней 2 (1, 2, 4, 8, 16).

‖↑

Отразите холст вертикально. Это завершает верхнюю левую четверть результата.

J⁻×³ι¹±⁰ψ⟲OO⁴ײι

Поверните холст на 180 ° вокруг точки на полпути вверх по правой стороне. Копия оказывается в правильном положении для верхней правой четверти результата.

⟲C

Поверните холст на 90 ° вокруг правого нижнего угла. Копия верхнего правого угла заканчивается в правильном положении для нижнего правого угла результата. Копия верхнего левого угла посторонняя.

J⁰±φT×⁴ι×⁴ι

Обрежьте холст до нужного нам размера. Обрезка начинается с курсора или верхнего левого края холста, в зависимости от того, что находится внизу справа. Поэтому курсор отправляется на (0, -1000), чтобы он не мешал обрезке.




1

Perl 5 , 452 байта

451 байтовый код + 1 для -p.

Пакеты все данные в строку, а не красть @ Neil «s правильный ответ .

$_=unpack"B*","\x00\x00\x20\x09\x09\x7c\xc2\x33\x00\x30\x0f\x0f\xe4\x43\x33\x00\xf0\x0c\x0c\x27\x7f\x33\x00\x90\x04\x04\x3e\xe9\x33\x00\x97\x7c\x7c\x20\x09\x33\x00\xfe\xe4\xe4\x30\x0f\x33\x00\xc2\x27\x27\xf0\x0c\x33\x00\x43\x3e\x3e\x90\x04\x33\x00\xc2\x00\x00\x20\x09\x7c\x00\x00\x43\x00\x00\x30\x0f\xe4\x00\x00\x7f\x00\x00\xf0\x0c\x27\x00\x00\xe9\x00\x00\x90\x04\x3e\x00\x00\x09\x00\x00\x97\x7c\x20\x00\x00\x0f\x00\x00\xfe\xe4\x30\x00\x00\x0c\x00\x00\xc2\x27\xf0\x00\x00\x04\x00\x00\x43\x3e\x90\x09\x7c\xc2\x00\x00\x20\x00\x00\x0f\xe4\x43\x00\x00\x30\x00\x00\x0c\x27\x7f\x00\x00\xf0\x00\x00\x04\x3e\xe9\x00\x00\x90\x00\x00\x7c\x20\x09\x00\x00\x97\x00\x00\xe4\x30\x0f\x00\x00\xfe\x00\x00\x27\xf0\x0c\x00\x00\xc2\x00\x00\x3e\x90\x04\x00\x00\x43\x33\x00\x20\x09\x7c\x7c\xc2\x33\x00\x30\x0f\xe4\xe4\x43\x33\x00\xf0\x0c\x27\x27\x7f\x33\x00\x90\x04\x3e\x3e\xe9\x33\x00\x97\x7c\x20\x20\x09\x33\x00\xfe\xe4\x30\x30\x0f\x33\x00\xc2\x27\xf0\xf0\x0c\x33\x00\x43\x3e\x90\x90\x04\x37\x00\x20\x37\x00\x30\x37\x00\xf0\x37\x00\x90\x37\x00\x97\x37\x00\xfe\x37\x00\xc2\x37\x00\x43\x36\x00\x7c\xc2\x36\x00\xe4\x43\x36\x00\x27\x7f\x36\x00\x3e\xe9\x36\x00\x20\x09\x36\x00\x30\x0f\x36\x00\xf0\x0c\x36\x00\x90\x04\x36\x00\x20\x09\x09\x7c\x34\x00\x30\x0f\x0f\xe4\x34\x00\xf0\x0c\x0c\x27\x34\x00\x90\x04\x04\x3e\x34\x00\x97\x7c\x7c\x20\x34\x00\xfe\xe4\xe4\x30\x34\x00\xc2\x27\x27\xf0\x34\x00\x43\x3e\x3e\x90\x34\x00\xc2\x00\x00\x20\x34\x00\x43\x00\x00\x30\x34\x00\x7f\x00\x00\xf0\x34\x00\xe9\x00\x00\x90\x34\x00\x09\x00\x00\x97\x34\x00\x0f\x00\x00\xfe\x34\x00\x0c\x00\x00\xc2\x34\x00\x04\x00\x00\x43"=~s/[3-9](.)/$1x$&/ger;y/01/ #/;s/.{64}/$&
/g

Обратимый вывод xxdдля 451-байтового файла:

00000000: 245f 3d75 6e70 6163 6b22 422a 222c 2200  $_=unpack"B*",".
00000010: 0020 0909 7cc2 3300 300f 0fe4 4333 00f0  . ..|.3.0...C3..
00000020: 0c0c 277f 3300 9004 043e e933 0097 7c7c  ..'.3....>.3..||
00000030: 2009 3300 fee4 e430 0f33 00c2 2727 f00c   .3....0.3..''..
00000040: 3300 433e 3e90 0433 00c2 0000 2009 7c00  3.C>>..3.... .|.
00000050: 0043 0000 300f e400 007f 0000 f00c 2700  .C..0.........'.
00000060: 00e9 0000 9004 3e00 0009 0000 977c 2000  ......>......| .
00000070: 000f 0000 fee4 3000 000c 0000 c227 f000  ......0......'..
00000080: 0004 0000 433e 9009 7cc2 0000 2000 000f  ....C>..|... ...
00000090: e443 0000 3000 000c 277f 0000 f000 0004  .C..0...'.......
000000a0: 3ee9 0000 9000 007c 2009 0000 9700 00e4  >......| .......
000000b0: 300f 0000 fe00 0027 f00c 0000 c200 003e  0......'.......>
000000c0: 9004 0000 4333 0020 097c 7cc2 3300 300f  ....C3. .||.3.0.
000000d0: e4e4 4333 00f0 0c27 277f 3300 9004 3e3e  ..C3...''.3...>>
000000e0: e933 0097 7c20 2009 3300 fee4 3030 0f33  .3..|  .3...00.3
000000f0: 00c2 27f0 f00c 3300 433e 9090 0437 0020  ..'...3.C>...7. 
00000100: 3700 3037 00f0 3700 9037 0097 3700 fe37  7.07..7..7..7..7
00000110: 00c2 3700 4336 007c c236 00e4 4336 0027  ..7.C6.|.6..C6.'
00000120: 7f36 003e e936 0020 0936 0030 0f36 00f0  .6.>.6. .6.0.6..
00000130: 0c36 0090 0436 0020 0909 7c34 0030 0f0f  .6...6. ..|4.0..
00000140: e434 00f0 0c0c 2734 0090 0404 3e34 0097  .4....'4....>4..
00000150: 7c7c 2034 00fe e4e4 3034 00c2 2727 f034  || 4....04..''.4
00000160: 0043 3e3e 9034 00c2 0000 2034 0043 0000  .C>>.4.... 4.C..
00000170: 3034 007f 0000 f034 00e9 0000 9034 0009  04.....4.....4..
00000180: 0000 9734 000f 0000 fe34 000c 0000 c234  ...4.....4.....4
00000190: 0004 0000 4322 3d7e 732f 5b33 2d39 5d28  ....C"=~s/[3-9](
000001a0: 2e29 2f24 3178 2426 2f67 6572 3b79 2f30  .)/$1x$&/ger;y/0
000001b0: 312f 2023 2f3b 732f 2e7b 3634 7d2f 2426  1/ #/;s/.{64}/$&
000001c0: 0a2f 67                                  ./g

Попробуйте онлайн!


1

Jq 1,5 , 538 535 488 476 байт

Это простое представление. Я еще не пробовал никаких причудливых кодировок. Заменены 0,0 пары с функцией Z.

Еще раз спасибо Джонатану Фреху за помощь в устранении 3 байтов!

def B:recurse(if.>0then./2|floor else empty end)|.%2;def S:256+.|[B]|reverse[2:]|map(if.>0then"#"else" "end)|join("");def Z:0,0;[[Z,3,1,1,4,5,2],[1,4,5,2,2,3,Z],[Z,Z,2,3,Z],[Z,Z,3,1,1,4]]as$m|[[],[9,15,12,4,124,228,39,62],[Z,Z,Z,Z,124,228,39,62,32,48,240,144],[32,48,240,144,151,254,194,67,194,67,127,233,9,15,12,4],[124,228,39,62,32,48,240,144,32,48,240,144,151,254,194,67],[194,67,127,233,9,15,12,4,9,15,12,4,124,228,39,62]]as$c|$m[]|range(16)as$l|map($c[.][$l]|S)|join("")

Количество символов

$ wc -c picture.jq
 476 picture.jq

Пробный прогон

$ jq -Mnr -f picture.jq
                  #         #  #    #  # #####  ##    #         
                  ##        ####    #######  #   #    ##        
                ####        ##      ##    #  ### #######        
                #  #         #       #    ##### ### #  #        
                #  # ### #####   #####    #         #  #        
                ####### ###  #  ###  #    ##        ####        
                ##    #   #  ###  #  #######        ##          
                 #    ##  #####   ##### #  #         #          
                ##    #                   #         #  # #####  
                 #    ##                  ##        #######  #  
                 #######                ####        ##    #  ###
                ### #  #                #  #         #    ##### 
                    #  #                #  # ### #####    #     
                    ####                ####### ###  #    ##    
                    ##                  ##    #   #  #######    
                     #                   #    ##  ##### #  #    
    #  # #####  ##    #                   #                     
    #######  #   #    ##                  ##                    
    ##    #  ### #######                ####                    
     #    ##### ### #  #                #  #                    
 #####    #         #  #                #  # ###                
###  #    ##        ####                #######                 
  #  #######        ##                  ##    #                 
  ##### #  #         #                   #    ##                
          #         #  # #####   #####  ##    #                 
          ##        #######  #  ###  #   #    ##                
        ####        ##    #  ###  #  ### #######                
        #  #         #    #####   ##### ### #  #                
        #  # ### #####    #       #         #  #                
        ####### ###  #    ##      ##        ####                
        ##    #   #  #######    ####        ##                  
         #    ##  ##### #  #    #  #         #                  
                                          #                     
                                          ##                    
                                        ####                    
                                        #  #                    
                                        #  # ###                
                                        #######                 
                                        ##    #                 
                                         #    ##                
                                 #####  ##    #                 
                                ###  #   #    ##                
                                  #  ### #######                
                                  ##### ### #  #                
                                  #         #  #                
                                  ##        ####                
                                ####        ##                  
                                #  #         #                  
                                  #         #  #    #  # #####  
                                  ##        ####    #######  #  
                                ####        ##      ##    #  ###
                                #  #         #       #    ##### 
                                #  # ### #####   #####    #     
                                ####### ###  #  ###  #    ##    
                                ##    #   #  ###  #  #######    
                                 #    ##  #####   ##### #  #    
                                ##    #                   #     
                                 #    ##                  ##    
                                 #######                ####    
                                ### #  #                #  #    
                                    #  #                #  # ###
                                    ####                ####### 
                                    ##                  ##    # 
                                     #                   #    ##

1
Три пропускаемых пространства в B: recи 16) as $l|.
— Джонатан Фрех

1
if.==0then" "else"#"end-> if.>0then"#"else" "end.
— Джонатан Фрех

1

Python 2 , 174 164 154 байта (на основе матричных операций)

  • -10 байт благодаря ngn.
  • -10 байт благодаря Джонатану Фреху.
from numpy import*
s=[['#']]
exec'b=fliplr(s);s=vstack((hstack((flipud(s),b)),hstack((eye(len(s)),rot90(b)))));'*6
s[s>'#']=' '
for l in s:print''.join(l)

Попробуйте онлайн!


import *-> import*; in s.tolist()->in s
— ngn



0

JavaScript (Node.js) , 1233 байта

_=>` 18# 9# 2# 4# 2# #5 2#2 4#
 18#2 8#4 4#7 2# 3# 4#2
 16#4 8#2 6#2 4# 2#3 #7
 16# 2# 9# 7# 4#5 #3 # 2#
 16# 2# #3 #5 3#5 4# 9# 2#
 16#7 #3 2# 2#3 2# 4#2 8#4
 16#2 4# 3# 2#3 2# 2#7 8#2
 17# 4#2 2#5 3#5 # 2# 9#
 16#2 4# 19# 9# 2# #5
 17# 4#2 18#2 8#7 2#
 17#7 16#4 8#2 4# 2#3
 16#3 # 2# 16# 2# 9# 4#5
 20# 2# 16# 2# #3 #5 4#
 20#4 16#7 #3 2# 4#2
 20#2 18#2 4# 3# 2#7
 21# 19# 4#2 2#5 # 2#
 4# 2# #5 2#2 4# 19#
 4#7 2# 3# 4#2 18#2
 4#2 4# 2#3 #7 16#4
 5# 4#5 #3 # 2# 16# 2#
 #5 4# 9# 2# 16# 2# #3
#3 2# 4#2 8#4 16#7
 2# 2#7 8#2 18#2 4#
 2#5 # 2# 9# 19# 4#2
 10# 9# 2# #5 3#5 2#2 4#
 10#2 8#7 2# 2#3 2# 3# 4#2
 8#4 8#2 4# 2#3 2# 2#3 #7
 8# 2# 9# 4#5 3#5 #3 # 2#
 8# 2# #3 #5 4# 7# 9# 2#
 8#7 #3 2# 4#2 6#2 8#4
 8#2 4# 3# 2#7 4#4 8#2
 9# 4#2 2#5 # 2# 4# 2# 9#
 42#
 42#2
 40#4
 40# 2#
 40# 2# #3
 40#7
 40#2 4#
 41# 4#2
 33#5 2#2 4#
 32#3 2# 3# 4#2
 34# 2#3 #7
 34#5 #3 # 2#
 34# 9# 2#
 34#2 8#4
 32#4 8#2
 32# 2# 9#
 34# 9# 2# 4# 2# #5
 34#2 8#4 4#7 2#
 32#4 8#2 6#2 4# 2#3
 32# 2# 9# 7# 4#5
 32# 2# #3 #5 3#5 4#
 32#7 #3 2# 2#3 2# 4#2
 32#2 4# 3# 2#3 2# 2#7
 33# 4#2 2#5 3#5 # 2#
 32#2 4# 19#
 33# 4#2 18#2
 33#7 16#4
 32#3 # 2# 16# 2#
 36# 2# 16# 2# #3
 36#4 16#7
 36#2 18#2 4#
 37# 19# 4#2`.replace(/(.)(\d+)/g,(_,c,n)=>c.repeat(n))

Попробуйте онлайн!


Ох, в чем проблема сейчас? Хм ... Я что-то упустил?
— полностью человек

1
Я не понизил голосование, но, к сожалению, это может быть сжато намного больше, используя это .

Я тоже этого не сделал, но это не в духе вопроса. Паттерн был создан, предположительно, какой-то простой рекурсивной процедурой. Задача состоит в том, чтобы определить правило, при котором ваше решение будет чрезвычайно коротким.
— Иона

1
Конвертировать в базу 36 для сохранения ~ 50 байтов.
— Лохматый

2
Я полностью осознаю, что это не оптимальное или самое короткое или умное решение. Я просто попытался использовать алгоритм, и в итоге получилось так. Это, однако, совершенно правильное решение и, следовательно, не заслуживает отрицательных голосов. Скучные решения не должны быть отвергнуты, но они также не должны быть отвергнуты.
— полностью человек

0

C # (.NET Core) , 976 969 байт

o=>{foreach(var l in new[]{35223185965568,52841249260288,0xf00c0c277f00,0x9004043ee900,0x977c7c200900,0xfee4e4300f00,0xc22727f00c00,73934616658944,0xc2000020097c,73667282210788,0x7f0000f00c27,0xe9000090043e,9895614577696,0xf0000fee430,0xc0000c227f0,4398050918032,0x97cc20000200000,0xfe44300003<<20,0xc277f0000f<<20,0x43ee900009<<20,0x7c20090000970000,-0x1bcff0ffff020000,0x27f00c0000c20000,0x3e90040000430000,9017629528424448,0x300fe4e4430000,0xf00c27277f0000,0x90043e3ee90000,0x977c2020090000,0xfee430300f0000,0xc227f0f00c0000,0x433e9090040000,2097152,3145728,15728640,9437184,9895936,16646144,12713984,4390912,2093088768,3829596160,662634496,1055457280,537460736,806289408,4027318272,2416181248,537463164,806293476,4027321383,2416182334,2541517856,4276413488,3257346032,1128152720,3254779936,1124073520,2130706672,3909091472,150995095,251658494,201326786,67108931})System.Console.WriteLine(System.Convert.ToString(l,2).PadLeft(64).Replace('0',' ').Replace('1','#'));}

Попробуйте онлайн!


Привет, добро пожаловать в PPCG! Это выглядит почти так же, как ответ @IanH 's C # .NET . Так что, если у вас есть какие-либо улучшения для него, сделайте комментарий вместо создания нового ответа, который почти точно такой же. Что касается вашего вопроса, вы можете использовать, <s>969</s>чтобы вычеркнуть предыдущие байты.
— Кевин Круйссен,

4
У меня нет репутации, необходимой для комментариев.
— мое местоимение monicareinstate

Пожалуйста, не пытайтесь обойти требования представителя.
— Лохматый

2
Означает ли это, что в PPCG я не могу попытаться помочь другим, если моя репутация слишком низкая?
— мое местоимение monicareinstate

3
@ Честно говоря, stackexchange немного резок для новичков, давайте не будем усложнять им, слишком быстро принимая злобу
— ngn

0

C # (.NET Core) , 739 байт

_=>{var r="";for(int i=0,j,k=0;i<626;i++)for(j=0;j++<@"4#+#$#&#$##'$$&#=$*&&)$#%#&$:&*$($&#$%#):#$#+#)#&'#%##$#:#$##%#'%'&#+#$#:)#%$#$%$#&$*&:$&#%#$%$#$)*$=#&$$'%'##$#+#<$&#5#+#$##'5#&$4$*)$#5)2&*$&#$%2%##$#2#$#+#&'7#$#2#$##%#'&#;&2)#%$#&$:$4$&#%#$);#5#&$$'##$#*#$##'$$&#5#;)$#%#&$4$:$&#$%#)2&;#&'#%##$#2#$#7'&#+#$#2#$##%2%$#&$*&2)5#$)*$4$&#5'##$#+#5#&$<#+#$##'%'$$&#=$*)$#$%$#%#&$:&*$&#$%$#$%#):#$#+#&'%'#%##$#:#$##%#'&#)#+#$#:)#%$#&$($*&:$&#%#$)&&*$=#&$$'##$#&#$#+#^#a$^&^#$#^#$##%Z)[$&#\#&$S'$$&#S%$#%#&$T#$%#)T'#%##$#T#+#$#T$*&R&*$T#$#+#V#+#$#&#$##'F$*&&)$#D&*$($&#$%B#$#+#)#&'C#$##%#'%'&#G)#%$#$%$#&$F$&#%#$%$#$)G#&$$'%'##$#F$&#5#H#&$4$G)2&F%##$#2#$#J#$#2#$##%F&2)G$4$&#H#5#&$"[i]-34;){r+=i%2<1?' ':'#';if(++k%64<1)r+='\n';}return r;}

Попробуйте онлайн!

Использует тот же подход, этот другой ответ .


0

K (нгн / к) , 32 31 27 байт

6{,[|x;""x],'(+|+x),+x}/"#"

Попробуйте онлайн!

6{ }/ 6 раз сделать

+x транспонирования

|x повернуть вертикально

+|+x повернуть горизонтально

, соединять вертикально

,' соединить горизонтально

,[A;B]так же, как A,B. это помогает избежать скобок вокругA и вокруг всего выражения

""xиспользуйте элементы xкак индексы в пустой строке. Индексирование вне границ создает пробелы, поэтому это выражение будет возвращать матрицу всех пробелов того же размера, что иx

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.