1. Pascal / Говнокод #27528

    +4

    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
    #!/usr/bin/env instantfpc
    
    program PrintCharTable;
    
    const
    	space = ' '; { }
    	point = '.'; {.}
    	caret = '^'; {^}
    	vline = '|'; {│}
    	hline = '-'; {─}
    	cross = '+'; {┼}
    	hex_0 = ord('0');
    	hex_a = ord('A')-10;
    
    function tohex(d: integer): char;
    begin
    	if d < 10 then
    		tohex := chr(d+hex_0)
    	else
    		tohex := chr(d+hex_a)
    end;
    
    var
    	i, j: integer;
    	code: integer;
    
    begin
    	write(space, space, vline);
    	for i := 0 to 15 do
    		write(space, point, tohex(i));
    	writeln;
    
    	write(hline, hline, cross);
    	for i := 0 to 15 do
    		write(hline, hline, hline);
    	writeln;
    	
    	for i := 0 to 15 do begin
    		write(tohex(i), point, vline);
    		for j := 0 to 15 do begin
    			code := i * 16 + j;
    			if code < 32 then
    				write(space, caret, chr(code+64))
    			else if code = 127 then
    				write(space, caret, chr(code-64))
    			else
    				write(space, space, chr(code))
    		end;
    		writeln
    	end
    end.
    
    {
    $ ./print_ascii.pas | iconv -f koi8-r
      | .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
    --+------------------------------------------------
    0.| ^@ ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O
    1.| ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^\ ^] ^^ ^_
    2.|     !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /
    3.|  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?
    4.|  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
    5.|  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _
    6.|  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
    7.|  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~ ^?
    8.|  ─  │  ┌  ┐  └  ┘  ├  ┤  ┬  ┴  ┼  ▀  ▄  █  ▌  ▐
    9.|  ░  ▒  ▓  ⌠  ■  ∙  √  ≈  ≤  ≥     ⌡  °  ²  ·  ÷
    A.|  ═  ║  ╒  ё  ╓  ╔  ╕  ╖  ╗  ╘  ╙  ╚  ╛  ╜  ╝  ╞
    B.|  ╟  ╠  ╡  Ё  ╢  ╣  ╤  ╥  ╦  ╧  ╨  ╩  ╪  ╫  ╬  ©
    C.|  ю  а  б  ц  д  е  ф  г  х  и  й  к  л  м  н  о
    D.|  п  я  р  с  т  у  ж  в  ь  ы  з  ш  э  щ  ч  ъ
    E.|  Ю  А  Б  Ц  Д  Е  Ф  Г  Х  И  Й  К  Л  М  Н  О
    F.|  П  Я  Р  С  Т  У  Ж  В  Ь  Ы  З  Ш  Э  Щ  Ч  Ъ
    }

    Печатает таблицу нужной кодировки. Пример использования в комменте после end.

    Запостил: Threadwalker, 20 Июля 2021

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

    • Из-за iconv пришлось делать рамку таблицы ASCII-символами, хотя можно было бы более красивой псевдографикой.
      Ответить
    • $ ./print_ascii.pas | iconv -f koi8-r | sed 'y/|-+/│─┼/'


      Хотя, можно так.
      Ответить
      • На самом деле, нельзя, но сообщение выше я удалить или поменять уже не могу. А почему нельзя — сами догадаетесь.
        Ответить
        • Первые пять минут можно редактировать коммент, потом всё.

          А нельзя потому что sed символы + и - в самой табличке испортит, а не только рамочку переделает? Ну тут можно более сложный скрипт сделать, сед же не просто регулярка.
          Ответить
    • Забавно, что в браузере табличку разнесло. Хотя вроде и шрифт моноширинный.
      Ответить
      • У меня в браузере всё норм. Правда мне не нравится, что нельзя свои сообщения удалять на этом сайте. И я не знал, что в описании можно bbcode (ведь можно же?), а то бы воткнул вывод программы в описание.
        Ответить
        • Хм, а в десктопных браузерах норм. Видимо в андроидском браузере щревты немного не такие...
          Ответить
          • Именно поэтому я за «Ябло».
            Ответить
            • Ну да, ну да. А если в машине пепельница забилась — покупать новую машину?
              Ответить
        • > нельзя свои сообщения удалять на этом сайте

          – можно, попиши пару недель про гомоеблю и наркоту, вжух, и они удалятся
          (∩`-´)⊃━☆゚.*・。゚
          Ответить
    • Ладно, а если так, то табличку разносит?
      $ ./print_ascii.pas | iconv -c -f cp1251 | \
          sed '1,2y/|-+/│─┼/;s/\.|/.│/;s/\([^ ]\)\s\{4\}\([^ ]\)/\1\x20\x20\x20\x20\x20\2/'
        │ .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
      ──┼────────────────────────────────────────────────
      0.│ ^@ ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O
      1.│ ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^\ ^] ^^ ^_
      2.│     !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /
      3.│  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?
      4.│  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
      5.│  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _
      6.│  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
      7.│  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~ ^?
      8.│  Ђ  Ѓ  ‚  ѓ  „  …  †  ‡  €  ‰  Љ  ‹  Њ  Ќ  Ћ  Џ
      9.│  ђ  ‘  ’  “  ”  •  –  —     ™  љ  ›  њ  ќ  ћ  џ
      A.│     Ў  ў  Ј  ¤  Ґ  ¦  §  Ё  ©  Є  «  ¬  ­  ®  Ї
      B.│  °  ±  І  і  ґ  µ  ¶  ·  ё  №  є  »  ј  Ѕ  ѕ  ї
      C.│  А  Б  В  Г  Д  Е  Ж  З  И  Й  К  Л  М  Н  О  П
      D.│  Р  С  Т  У  Ф  Х  Ц  Ч  Ш  Щ  Ъ  Ы  Ь  Э  Ю  Я
      E.│  а  б  в  г  д  е  ж  з  и  й  к  л  м  н  о  п
      F.│  р  с  т  у  ф  х  ц  ч  ш  щ  ъ  ы  ь  э  ю  я
      Ответить
      • В хроме/фф на десктопе норм. В андроиде псевдографика опять разъехалась.

        Кстати, а что с символом 0xAD? Это пробел нулевой ширины какой-то?
        Ответить
        • Какой QA-bormand )))
          Ответить
        • Почти: https://en.wikipedia.org/wiki/Soft_hyphen (мягкий перенос)
          Разница в том, что в отличии от пробела, он сохраняет кернинг.
          А вообще, мог бы и сам посмотреть:
          $ echo -en '\xad' | iconv -f cp1251 -t utf16le | od -An -tx4
           000000ad

          А затем погуглить U+00AD.
          Ответить
          • Там должно было быть utf32le, но для данного случая это несущественно.
            Ответить
          • Гуглить было лень... Прикольно, что у него в юникоде такой же код, как и в 1251.
            Ответить
            • У xA0 тоже — это неразрывный пробел.
              А x98 вообще не назначен ни на что в cp1251.
              Ответить
    • как не изголяйся, оно всё равно может поползти и понятно почему
      но конечно самое говно в призывах apt instant fpc оскорбляющих человеческое достоинство и общественную мораль
      Ответить
    • я придумал
      надо нагенерить cal'ом все 640 месяцев, чтобы было достаточно каждому
      и потом sed'ом выделять сегодня

      а по вопросу куда эти файлы класть начнется большая прыщевойна, которая наконец расколет FSF и избавит мир от насильников и коммунистов
      Ответить
      • Давайте начнём прыщевойну, создашь? А я в сторонке постою.
        Ответить
      • > расколет FSF и избавит мир от насильников и коммунистов

        Вычеркнул тебя из списка своих кумиров и примеров для подражания, проверть.
        Ответить
        • Лолечка, предлагаю тебе вступить в отряд прыщевоинов, вернее его возглавить! Твоей основной задачей будет придумывание мотивирующих лозунгов. Согласен?
          Ответить
          • Согласена.

            Ну что, братья прыщеборцы, попрыщим???
            Ответить
            • Отлично! Теперь нужно набрать отряд прыщевоинов и ждём когда гологуб начнёт войну.
              Ответить
        • облаял тебя из интернет-палисадника

          ­     |\_/|                  
               | @ @   Woof!                           ''',
               |   <>              _                o_)O \)____)"
               |  _/\------____ ((| |))              \_        )
               |               `--' |           woof!  '',,,,,, 
           ____|_       ___|   |___.'                    ||  ||
          /_/_____/____/_______|                        "--'"--'
          Ответить

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