ЙажаСценарий / Говнокод #26702 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 HIV, (Updated )

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

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

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

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

            Желательно подобрать набор символов так, чтобы не мешать псевдографику с телетекстом.
            Ответить
            • Можно было бы использовать шрифт Брайля (заменил бы сразу 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 килограмма.
    
    На странице полицейского управления города Уокера размещена ориентировка на петуха.
    Его разыскивают по обвинению в нападении, причинении телесных повреждений, попытки
    ограбления и нарушении приказа губернатора штата о режиме самоизоляции.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8