1. JavaScript / Говнокод #26702

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    <!DOCTYPE html>
    <head>
        <meta charset="utf-8"/>
    </head>
    <body>
    <canvas id='pixel_canvas'></canvas>
    <pre id='text_canvas'></pre>
    <script>
        'use strict';
        function tryFetch() {
            const array = arguments[0];
            const onError = arguments[arguments.length - 1];
            let result = array;
            for (let i = 1; i < arguments.length - 1; ++i) {
                if (arguments[i] < result.length) {
                    result = result[arguments[i]];
                } else {
                    return onError;
                }
            }
            return result;
        }
    
        function bitmap2tetramap(bitmap) {
            let tetramap = []
            for (let i = 0; i < bitmap.length; i += 2) {
                tetramap.push([]);
                for (let j = 0; j < bitmap[i].length; j += 2) {
                    tetramap[tetramap.length - 1].push(
                        tryFetch(bitmap, i, j, 0) << 3 |
                        tryFetch(bitmap, i, j + 1, 0) << 2 |
                        tryFetch(bitmap, i + 1, j, 0) << 1 |
                        tryFetch(bitmap, i + 1, j + 1, 0)
                    );
                }
            }
            return tetramap;
        }
    
        function renderTetramap(tetramap) {
            const tiles = [
                ' ', '▗', '▖', '▄',
    
                '▝', '▐', '▞', '▟',
    
                '▘', '▚', '▌', '▙',
    
                '▀', '▜', '▛', '█'
            ];
            return tetramap.map(row => row.map(i => tiles[i]).join('')).join('<br>');
        }
    
        function renderBitmap(bitmap) {
            return renderTetramap(bitmap2tetramap(bitmap));
        }
    
        function rgba2bitmap(rgba, width, height) {
            let bitmap = [];
            for (let i = 0; i < height; ++i) {
                bitmap.push([]);
                for (let j = 0; j < width; ++j) {
                    const currentRGBAElementIndex = (i * width * 4) + j * 4;
                    const red = rgba[currentRGBAElementIndex];
                    const green = rgba[currentRGBAElementIndex + 1];
                    const blue = rgba[currentRGBAElementIndex + 2];
                    const a = rgba[currentRGBAElementIndex + 3];
                    bitmap[i].push((red + green + blue + a) / 4 > 0? 1 : 0);
                }
            }
            return bitmap;
        }
    
        function renderImageData(imageData) {
            return renderBitmap(rgba2bitmap(imageData.data, imageData.width, imageData.height));
        }
    
        const ctx = pixel_canvas.getContext("2d");
        ctx.font = "16px serif";
        ctx.fillText("Какой багор )))", 0, 16);
    
        text_canvas.innerHTML = renderImageData(ctx.getImageData(0, 0, pixel_canvas.width, pixel_canvas.height));
    </script>
    </body>

    Запостил: HIV, 28 Мая 2020

    Комментарии (19) RSS

    • .                                                                                                                                                      
       ▄█████ ▐███████   ▟████▄                                                                                                                             
       █▛  ▝█   █▌   █  ▟█▘  ▀█▙                                                                                                                            
       █▌   ▀   █▌  ▄  ▗█▌    ▜█                                                                                                                            
       ██▙▄     █▙▄▄█  ▐█▌    ▐█▌                                                                                                                           
       ▝▜███▙   █████  ▐█▌    ▐█▌                                                                                                                           
          ▀██▌  █▌  ▀  ▐█▌    ▐█▌                                                                                                                           
       █   ▝█▌  █▌   ▄▖▝█▌    ▟█                                                                                                                            
       █▌  ▗█▌  █▌   █▌ ▜█▖  ▄█▌                                                                                                                            
       █████▛ ▐███████▌  ▜████▀
      Ответить
    • > javascript

      1023, залогинься.
      Ответить
      • ████                      ██▌ ▐▛▝█ ▛ █▌ ▟█                              ▟▛▀▘     ▀▀▘                                                        █▌        
        █▌ █▗███▐▙ ▟▌█ ▐▌▐▌▟▌      █▌ ▟▌ █   █▌▗██           ███▖███▌  ▝███ ███▖███▖▐██▌▐▌▐█  ▐█ ▟█▟██▌ ███▐▙ █▌███   ▗██▌ ███▗███ ███ █▌█▌▐██▌▐█   ▜▌        
        █▌ █▐▛ █▐█▄█▌█▄▟▌▐▙█▌      █▌ █▌ █  ▐▛ █▘█ ▗▄▖▄▄      ▄█▘▗▄▟▌    █ ▗█ ▜▌█ ▐▌█▌▐█▐▙██  ▐█▙███▘▐▌ █   █▄█  █    ▟▌   █ █▐█▄█▌█▌█ ███▌ ▐▌ ▐█▄▄ ▐▘        
        █▌ █▐▙ █▐███▌█▀▜▌▐██▌      █▌ ▐▌ █ ▗█▚▖▀▀█▀▝▀▘▀▀      ▀▜▌█▀▐▌    █ ▝█ ▟▌█ ▐▌█▌▐█▐█▛█  ▐▛████▖▐▌ █   ▜█▌  █    ▜▌   █ █▐▙   █ █ ██▜▌ ▐▌ ▐█▀█ ▝         
        █▌ █▝███▐▌▀▐▌█ ▐▌▐▛▐▌▐█   ▄█▙ ▝█▟▛▗███▌ ▗█▄     ▐█   ███▘███▙    █  ███▘▜██▘▐██▌▐█ █  ▐▌▀▐█▜██▌ █   ▐█▘  █    ▝██▌█▛ █▝███▐███▌█▛▐▌ ▐▌ ▐███ █▌        
                             █▌                         █▌                                                 ▗▟█                    ▐▌ ▐▌                       
                                                                                                           ▝▀▘
        Ответить
      • ▗▄▄▄▄▄▄                                                                         ▗▄▖▄▖▗▄▄▄▄▄▖ ▗▄▄▄▄ ▗▄▄▄▖▄▄▄▄▄▄  ▗▄▖▄▄                                 
        ▐▜███▛█                                                                         ▐█▌▛▌▐█▛████▙▐█▛██ ▐█▛█▌██▜████▖▐█▌██                                 
        ▐▐▛▀▀▌█   ▄▄▖  ▄▄▗▄▖    ▄▄▖   ▄▄▄▄    ▗▄▄   ▗▄▄▄▄▖ ▗▄▖ ▗▄     ▗▄▖ ▄▄   ▄▄▄      ▐█▌▌▌ ▐▌█ ▝█▜▌ ▌█   ▐▌▌  ▐▐▌ ▜▛█▐█▌██                                 
        ▐▐▌  ▌█ ▗████▖ █████▙ ▗████▙  ▛███▙  ▟████▖ ▐███▛▌ ▐▜▌▗█▜     ▐▜▌ █▜ ▐████▙     ▐█▌▌▌ ▐▌█  █▐▌ ▌█   ▐▌▌  ▐▐▌  ▌█▐█▌██                                 
        ▐▐▌  ▌█ ██▀▀██ █▐▛▀██ ▟█▛▀▜█▌ ▌█▀█▜ ▗██▀▀██ ▐█▛▀▌▌ ▐▐▌▟█▐     ▐▐▌ █▐ ▐█▀▀▜█▌    ▝▀▘▀▘ ▐▌█ ▗█▟▌ ▌█▄▄▄▟▌▌  ▐▐▌ ▐▙█▝▀▘▀▀                                 
        ▐▐▌  ▌█▐█████▜ █▐▘ ▜▐▌██████▌ ▌█▄██ ▐██████ ▐█▌ ▌▌ ▐▐▙██▐     ▐▐▙▄█▐  ▄████▌          ▐▌████▛  ▌█████▌▌  ▐▐████▌                                      
        ▐▐▌  ▌█▐██████ █▐  ▐█▌██████▌ ▌████ ▐██████ ▐█▌ ▌▌ ▐▐███▐     ▐▐███▐ ▐█████▌          ▐▌█▀▀▀   ▌█   ▐▌▌  ▐▐▛▀▀▘                                       
        ▐▐▌  ▌█▐▛▙   ▗ █▐▖ ▟▐▌██▖   ▖ ▌█▀▜█▌▐█▙   ▗ ▐▜▌ ▌▌ ▐▐█▛▐▐     ▐▐▛▀█▐ ▟▐▘ ▐█▌          ▐▌█      ▌█   ▐▌▌  ▐▐▌                                          
        ▐▐▌  ▌█ ██▙▄▟█ █▐▙▄██ ▜█▙▄▄█▌ ▌█▄▟▜▌▝██▄▄▟█▗█▐▙▄▌▙▖▐▐█▘▐▐     ▐▐▌ █▐ ▐▟▙▄██▌          ▐▌█      ▌█   ▐▌▌  ▐▐▌          ▐█▌                             
        ▐▟▌  ▙█ ▝█████ █▐███▛ ▝▜████▌ ▙████▘ ▀█████▐█▟██▙█▌▐▟▛ ▐▟     ▐▟▌ █▟ ▝████▙▙         ▐█▙██   ▐█▙██ ▐█▙█▌██▟██         ▐▄▌                             
        ▝▀▘  ▀▀   ▀▀▀  █▐▝▀▘    ▝▀▀   ▀▀▀▀     ▀▀▘ ▐█▛▀▀▜█▌▝▀▘ ▝▀     ▝▀▘ ▀▀  ▝▀▀▘▀▘         ▝▀▀▀▀   ▝▀▀▀▀ ▝▀▀▀▘▀▀▀▀▀          ▀▘                             
                       █▐                          ▐█▌  ▐█▌                                                                                                   
                       ██
        Ответить
      • Залогинился.

        Что тут сказать. Тут какая-то шрифтушня, завязанная на ширину. И её потом вставили в моноширинный [code] комментариев ГК, от чего она поехала.
        Ответить
        • Символ ▞ (используется для пародирования телетекста) не совпадает по ширине с символом ▐ (используется для эмуляции досовской псевдографики) даже в говнокодовских моноширинных шрифтах. Серьёзная проблема «Unicode», что для ширины некоторых символов сделано исключение.
          Ответить
          • > для ширины некоторых символов сделано исключение
            Ну не пидоры ли?

            Ещё и запасным точкам для i и ё закон не писан. Но уже по высоте.
            Ответить
          • С компутера всё норм видно, это у андроповских браузеров ширину символов пидарасит.
            Ответить
            • На компьютере тоже может пидорасить. Зависит от списка установленных шрифтов. Браузер может псевдографику выводить одним шрифтом, а телетекст — другим.

              Желательно подобрать набор символов так, чтобы не мешать псевдографику с телетекстом.
              Ответить
              • Можно было бы использовать шрифт Брайля (заменил бы сразу 8 пукселов!), но у пустых кружочков что-то контуры больно толстые.

                Кстати, зачем пустые точки то отображуются? Вроде как их вообще быть не должно.
                Ответить
                • Там разве 8 а не 6?
                  Ответить
                  • Но в Юникоде 8-точечный вореант.
                    Ответить
                  • «Вика» пишет, что в оригинальной азбуке Брайля было 6 точек. Две точки добавили, чтобы отображать дополнительные символы.
                    Ответить
                    • 8 точек - 256 бит. Т.е. можно замутить утф8 для слепых и писать любые символы?
                      Ответить
                      • 256 значений.

                        Теоретически — да. В UTF-8 первый символ цепочки от непервого отличить можно. Практически — вызубрить нереально.

                        В настоящий же момент в азбуке Брайля такая же ерунда, какая была в эпоху семи- и восьмибитных кодировок на компах: для каждого языка своя кодовая таблица.

                        В «Уникоде» символы Брайля представлены без семантики, чисто как графические символы.

                        Кстати, видел морскую флажковую и семафорную азбуку? Если в азбуке Морзе и в азбуке Брайля латиница и кириллица хотя бы частично транслитерируются друг в друга, то во флажковой и в семафорной азбуке гласной в латинице может соответствовать согласная в кириллице. Вот это полная жопа:
                        https://ru.wikipedia.org/wiki/Семафорная_азбука
                        https://ru.wikipedia.org/wiki/Флаги_международного_свода_сигналов
                        https://ru.wikipedia.org/wiki/Флаги_военно-морского_Свода_сигналов_СССР
                        Ответить
    • Всё ясно. В канвас высрал текст, затем попиксельно прочитал. Не говнокод.
      Ответить
      • Пачками по 4 пиксела, чтобы повысить плотность пукселов.
        Ответить
    • Агрессивный петух держит в страхе целый город в США

      В США петух терроризирует окрестности города, но его не могут поймать.

      Жители американского города Уокер в штате Луизиана потеряли покой и сон,
      а полиция несколько дней пытается поймать нарушителя.
      
      В начале мая в правоохранительные органы начали поступать жалобы на петуха, который
      ведет себя агрессивно и терроризирует всю округу.
      
      Пострадавшие сообщают о случаях, когда птица подкарауливала их у банкомата возле
      здания банка и пыталась клюнуть. Кроме того, петух нападал на людей на улице
      и гнался за ними, а также пытался запрыгнуть в машины, сообщает CNN.
      
      Полицейские несколько раз выезжали на вызовы, но нарушителя уже не было на месте.
      Однако был составлен портрет преступника со слов очевидцев. У петуха красноватые
      перья, рост порядка 45 сантиметров и вес от трех до 3,5 килограмма.
      
      На странице полицейского управления города Уокера размещена ориентировка на петуха.
      Его разыскивают по обвинению в нападении, причинении телесных повреждений, попытки
      ограбления и нарушении приказа губернатора штата о режиме самоизоляции.
      Ответить

    Добавить комментарий