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

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.

• Из-за 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

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

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

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

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

``````­     |\_/|
| @ @   Woof!                           ''',
|   <>              _                o_)O \)____)"
|  _/\------____ ((| |))              \_        )
|               `--' |           woof!  '',,,,,,
____|_       ___|   |___.'                    ||  ||
/_/_____/____/_______|                        "--'"--'``````
Ответить
• И где здесь пассал?
Ответить