Language agnostic 代码高尔夫-横幅生成

Language agnostic 代码高尔夫-横幅生成,language-agnostic,code-golf,rosetta-stone,Language Agnostic,Code Golf,Rosetta Stone,当你感谢某人时,你不想只给他们发一封电子邮件说“谢谢!”,你想得到一些华丽的东西: Input: THANKS!! Output: TTT H H AAA N N K K SSS !!! !!! T H H A A NNN K K S !!! !!! T HHH AAA NNN KK SSS !!! !!! T H H A A N N K K S T H H A A N N K K SSS !!! !!! 编写一个程序来生成横幅。您只需

当你感谢某人时,你不想只给他们发一封电子邮件说“谢谢!”,你想得到一些华丽的东西:

Input: THANKS!!
Output:
TTT H H AAA N N K K SSS !!! !!! 
 T  H H A A NNN K K S   !!! !!! 
 T  HHH AAA NNN KK  SSS !!! !!! 
 T  H H A A N N K K   S            
 T  H H A A N N K K SSS !!! !!! 
编写一个程序来生成横幅。您只需生成大写A-Z以及空格和感叹号(没有感叹号的横幅是什么?)。所有字符都由相同字符的3x5网格组成(因此S是由S组成的3x5网格)。所有输出都应该在一行上(因此没有换行符)。以下是您需要的所有信件:

Input: ABCDEFGHIJKL
Output:
AAA BBB CCC DD  EEE FFF GGG H H III JJJ K K L
A A B B C   D D E   F   G   H H  I    J K K L
AAA BBB C   D D EE  FF  G G HHH  I    J KK  L
A A B B C   D D E   F   G G H H  I  J J K K L
A A BBB CCC DD  EEE F   GGG H H III JJJ K K LLL

Input: MNOPQRSTUVWX
Output:
M M N N OOO PPP QQQ RR  SSS TTT U U V V W W X X
MMM NNN O O P P Q Q R R S    T  U U V V W W  X
M M NNN O O PPP Q Q RR  SSS  T  U U V V WWW  X
M M N N O O P   QQQ R R   S  T  U U V V WWW  X
M M N N OOO P   QQQ R R SSS  T  UUU  V  WWW X X

Input: YZ!
Output:
Y Y ZZZ !!!
Y Y   Z !!!
YYY  Z  !!!
  Y Z
YYY ZZZ !!!
优胜者是最短的源代码,以utf-8编码存储文件所需的字节数计算。源代码应该从标准输入读取输入,输出到标准输出。您可以假设输入只包含
[A-Z!]
。如果您在输入错误时侮辱用户,您将获得10个字符的折扣=P

我本打算要求这些精确的28个字符,但为了让它更有趣,你可以选择你想要它们的外观-无论什么使你的代码更短!要证明您的字母看起来确实像普通字母,请显示最后三次运行的输出


迄今为止最短的代码,以字符为单位(utf8编码,如果不存在ASCII码):

133 J 205蟒蛇 209红宝石 313哈斯克尔 345 C89 382 F#Python,250 224个字符 注:

  • 相当依赖于2.x打印报表
  • 支持空格
跑步(我改变了几个字母的外观,只是出于审美的原因;):

有尾随空格。

F#,382个字符 我将每行的两个字母压缩成ascii可打印字节,并专门处理空格和感叹号

let s,(!)=stdin.ReadLine(),printf"%s"
for n in 0..4 do
 for c in s do if c=' '||n=3&&c='!'then !"    "elif c='!'then !"!!! "else for x in 0..3 do printf"%c"(if(Array.collect(fun b->let B n=int b&&&n=0 in[|(B 64)||not(B 8);B 32;B 16;true;B 4;B 2;B 1;true|])"wvwuwTUwvwUUWUEDEiTwUUBURQwEfWidWWVrUrrUEDUmTUTuZUr\\WvtuwWUturruw"B).[n*104+(int c-int 'A')*4+x]then ' 'else c)
 !"\n"
样本I/O如下:

HELLO WORLD!!!
H H EEE L   L   OOO     W W OOO RR  L   DD  !!! !!! !!!
H H E   L   L   O O     W W O O R R L   D D !!! !!! !!!
HHH EE  L   L   O O     WWW O O RR  L   D D !!! !!! !!!
H H E   L   L   O O     WWW O O R R L   D D
H H EEE LLL LLL OOO     WWW OOO R R LLL DD  !!! !!! !!!

ABCDEFGHIJKL
AAA BBB CCC DD  EEE FFF GGG H H III JJJ K K L
A A B B C   D D E   F   G   H H  I    J K K L
AAA BBB C   D D EE  FF  G G HHH  I    J KK  L
A A B B C   D D E   F   G G H H  I  J J K K L
A A BBB CCC DD  EEE F   GGG H H III JJJ K K LLL

MNOPQRSTUVWXYZ
M M N N OOO PPP QQQ RR  SSS TTT U U V V W W X X Y Y ZZZ
MMM NNN O O P P Q Q R R S    T  U U V V W W  X  Y Y   Z
M M NNN O O PPP Q Q RR  SSS  T  U U V V WWW  X  YYY  Z
M M N N O O P   QQQ R R   S  T  U U V V WWW  X    Y Z
M M N N OOO P   QQQ R R SSS  T  UUU  V  WWW X X YYY ZZZ
C89,345个字符 为您的理智添加的换行符(它们不包括在字符计数中,可以/应该删除):

charo[5][99];
d[]={0x2df7fbef、0x3927bb6b、0x396792cf、0x3da7dbed、0x3A4 BFB27、0x2d76f249、0x2DBEDD、0x3db793ef、0x3fb7daeb、0x3ce7a497、0x3db6ab6d、0x3ff6d495、0x3cf6f2a7、0x38ff8000};
c、 i,j;
main(){memset(o,32495);
而((c=getchar())>0){
对于(j=0;j>((c&1)*15+j)和1?c:32;i+=4;}
对于(j=0;jJ,133 135 79 83 84 88个字符(utf-8编码)
用法:

    ;/5 3$"1(' ',.s){~"1#:3 u:(ucp'翇篭篯礧歮禧禤祯寭璗牯宭䤧彭忭筯篤筿殭秏璒孯孪寿咕寏犧'){~0>.64-~a.i.s=:'ABCDEFGHIJKLMNOPQRSTUVWXYZ !'
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│AAA│BBB│CCC│DD │EEE│FFF│GGG│H H│III│JJJ│K K│L  │M M│N N│OOO│PPP│QQQ│RR │SSS│TTT│U U│V V│W W│X X│Y Y│ZZZ│   │!!!│
│A A│B B│C  │D D│E  │F  │G  │H H│ I │  J│K K│L  │MMM│NNN│O O│P P│Q Q│R R│S  │ T │U U│V V│W W│ X │Y Y│  Z│   │!!!│
│AAA│BBB│C  │D D│EE │FF │G G│HHH│ I │  J│KK │L  │M M│NNN│O O│PPP│Q Q│RR │SSS│ T │U U│V V│WWW│ X │YYY│ Z │   │!!!│
│A A│B B│C  │D D│E  │F  │G G│H H│ I │J J│K K│L  │M M│N N│O O│P  │QQQ│R R│  S│ T │U U│V V│WWW│ X │  Y│Z  │   │   │
│A A│BBB│CCC│DD │EEE│F  │GGG│H H│III│JJJ│K K│LLL│M M│N N│OOO│P  │QQQ│R R│SSS│ T │UUU│ V │WWW│X X│YYY│ZZZ│   │!!!│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

    ;/5 3$"1(' ',.s){~"1#:3 u:(ucp'翇篭篯礧歮禧禤祯寭璗牯宭䤧彭忭筯篤筿殭秏璒孯孪寿咕寏犧'){~0>.64-~a.i.s=:'this is incorrect input.'
|index error
解释(
NB.
是J中的注释):

Perl,69 74 77 78 79个字符 我假设您的系统上安装了figlet。:)

Haskell,313 316 320 Figlet(0个字符) 样本输出:

% echo ABCDEFGHIJKLMNOPQRS | perl banner.pl

 A  BB   CC DD  EEE FFF  GG H H III  JJ K K L   M M NNN  O  PP   Q  RR   SS 
A A B B C   D D E   F   G   H H  I    J K K L   MMM N N O O P P Q Q R R S   
AAA BB  C   D D EE  FF  G G HHH  I    J KK  L   MMM N N O O PP  Q Q RR   S  
A A B B C   D D E   F   G G H H  I  J J K K L   M M N N O O P    QQ R R   S 
A A BB   CC DD  EEE F    GG H H III  J  K K LLL M M N N  O  P     Q R R SS  
% echo TUVWXYZ \! | perl banner.pl 

TTT U U V V W W X X Y Y ZZZ      !  
 T  U U V V W W X X Y Y   Z      !  
 T  U U V V WWW  X   Y   Z       !  
 T  U U V V WWW X X  Y  Z           
 T  UUU  V  W W X X  Y  ZZZ      !  
% wget -q 3.ly/gzkv;figlet -f b ABCDEFGHIJKLMNOPQRS

 A  BB   CC DD  EEE FFF  GG H H III  JJ K K L   M M NNN  O  PP   Q  RR   SS 
A A B B C   D D E   F   G   H H  I    J K K L   MMM N N O O P P Q Q R R S   
AAA BB  C   D D EE  FF  G G HHH  I    J KK  L   MMM N N O O PP  Q Q RR   S  
A A B B C   D D E   F   G G H H  I  J J K K L   M M N N O O P    QQ R R   S 
A A BB   CC DD  EEE F    GG H H III  J  K K LLL M M N N  O  P     Q R R SS 
% wget -q 3.ly/gzkv;figlet -f b TUVWXYZ \!

TTT U U V V W W X X Y Y ZZZ     !!! 
 T  U U V V W W X X Y Y   Z     !!! 
 T  U U V V WWW  X   Y   Z      !!! 
 T  U U V V WWW X X  Y  Z           
 T  UUU  V  W W X X  Y  ZZZ     !!! 
Python,340个字符 样本输出 不太好,但写起来很有趣

编辑哎呀,我把输入改为小写。现在修复了,还为我保存了一个字符:)

Python 2.6251-243-227个字符 我尝试了一种稍微不同的方法(对字母的组成部分进行比特打包)

  • 处理大写字母、空格、感叹号
  • 为了可读性,此处添加了2个不必要的换行符(for循环可以是一行)
  • 确保将其保存为带有BOM的UTF-8
一如既往,欢迎所有评论和建议!最短Python解决方案的竞争者(现在又落后了几个字符)

w=原始输入()
对于范围(5)中的l:打印“”。加入(“11111111”
[int((%05d”%ord(u)Python,233231225224205个字符
最短python解决方案的候选方案:-)
这是一个两行程序-最后一行为了urrrr的可读性被分成了3行

另外,感谢您的评论,更正了问题,现在只使用7位ASCII

测试横幅:

TTT H H EEE     QQQ U U III CCC K K     BBB RR  OOO W W N N     FFF OOO X X     JJJ U U M M PPP SSS     OOO V V EEE RR      TTT H H EEE     L   AAA ZZZ Y Y     DD  OOO GGG !!!
 T  H H E       Q Q U U  I  C   K K     B B R R O O W W NNN     F   O O  X        J U U MMM P P S       O O V V E   R R      T  H H E       L   A A   Z Y Y     D D O O G   !!!
 T  HHH EE      Q Q U U  I  C   KK      BBB RR  O O WWW NNN     FF  O O  X        J U U M M PPP SSS     O O V V EE  RR       T  HHH EE      L   AAA  Z  YYY     D D O O G G !!!
 T  H H E       QQQ U U  I  C   K K     B B R R O O WWW N N     F   O O  X      J J U U M M P     S     O O V V E   R R      T  H H E       L   A A Z     Y     D D O O G G    
 T  H H EEE     QQQ UUU III CCC K K     BBB R R OOO WWW N N     F   OOO X X     JJJ UUU M M P   SSS     OOO  V  EEE R R      T  H H EEE     LLL A A ZZZ YYY     DD  OOO GGG !!!
德尔福,397个字符 好的,有了所有的begin/end语句,Delphi可能永远不会比任何其他语言短,但我确实看到了一个挑战,那就是如何使它尽可能短

vvar s:String;i,j,k:Word;const F:Array[65..92]of Word=($5BEA,$3AEB,$624E,$3B6B,$72CF,$12CF,$6B4E,$5BED,$7497,$2B26,$5AED,$7249,$5BFD,$5B6F,$2B6A,$12EB,$4D6A,$5AEB,$388E,$2497,$7B6D,$2B6D,$5FED,$5AAD,$24AD,$72A7,$2092,$0000);begin S:=ParamStr(1);for j:=0 to 4 do begin for k:=1 to Length(S)do begin for i := 0 to 2 do Write((' '+S[k])[1+(F[ord(S[k])]shr(i+j*3))and 1]);Write(' ');end;WriteLn;end;end.
字体如下所示:

010 110 011 110 111 111 011 101 111 011 101 100 101 111 010 110 010 110 011 111 101 101 101 101 101 111 010 000
101 101 100 101 100 100 100 101 010 001 101 100 111 101 101 101 101 101 100 010 101 101 101 101 101 001 010 000
111 110 100 101 110 110 101 111 010 001 110 100 111 101 101 110 101 110 010 010 101 101 111 010 010 010 010 000
101 101 100 101 100 100 101 101 010 101 101 100 101 101 101 100 011 101 001 010 101 101 111 101 010 100 000 000
101 110 011 110 111 100 011 101 111 010 101 111 101 101 010 100 001 101 110 010 111 010 101 101 010 111 010 000
此5x3字体中的字符占15位,按以下顺序存储在word(UINT16)中:

00 01 02
03 04 05
06 07 08
09 10 11
12 13 14
格式化代码:

var
  s:String;    
  i, j, k: Word;

const
  F: Array [65 .. 92] of Word = (
    $5BEA,$3AEB,$624E,$3B6B,    $72CF,$12CF,$6B4E,$5BED,
    $7497,$2B26,$5AED,$7249,    $5BFD,$5B6F,$2B6A,$12EB,
    $4D6A,$5AEB,$388E,$2497,    $7B6D,$2B6D,$5FED,$5AAD,
    $24AD,$72A7,$2092,$0000);

begin
  S := ParamStr(1);
  for j := 0 to 4 do
  begin
    for k := 1 to Length(S) do
    begin
      for i := 0 to 2 do
        Write((' '+S[k])[1+(F[ord(S[k])]shr(i+j*3))and 1]);
      Write(' ');
    end;
    WriteLn;
  end;
end.

Ruby:207215252345个字符

i=gets.chomp;5.times{|t|p i.gsub(/./){|c|j=3*(c>?@?c.ord-64:0);(3*t..3*t+2).map{|d|"mini5mbmzjf2bqjmof3prl72i5pn138iuhylmkpi65i278kq3qjfaihyjb66787odp8ktiy5hwt78tmnb"[j..j+2].to_i(36)[d]==1?c:" "}.join+" "}}
Python:259个字符 不是最短的,但考虑到这是我的第一个Python脚本,我非常满意

k=raw_input()
for i in range(5):print' '.join(''.join((' ',x)[int(z)]for z in bin(int(''.join('%02d'%(ord(q)-43)for q in'xwxvxabxwxbbdqbXWX@axbbUb_^qxXwd@kddcsbssqbXWvDabav7bs9+dwuvxdbuvssvxq')[i*28+'ABCDEFGHIJKLMNOPQRSTUVWXYZ! '.find(x)],8))[2:])for x in k)
C#,239231 229个字符(292字节) 我有点晚了,但这看起来很有趣

using C=System.Console;class P{static void Main(){var t=C.ReadLine();for(int
b=15,s;b>0;b-=3){foreach(var c in t)for(s=0;s++<4;)C.Write(s>3||c<33?' ':((
"翇篭篯礧歮禧禤祯寭璗牯宭䤧彭忭筯篤筿殭秏璒孯孪寿咕寏犧"[c<34?0:c-64])&1<<b-s)>0
?c:' ');C.WriteLine();}}}
使用C=System.Console;类P{static void Main(){var t=C.ReadLine();for(int)

b=15,s;b>0;b-=3){foreach(t中的var c)for(s=0;s++3 | | cI不明白:“所有输出都应该在一行上".如果有5行字符高度,这怎么可能?@doublep:假设这意味着没有多行横幅。是否应该支持空格?我们可以禁止
figlet
并按UTF-8计算代码大小吗?@KennyTM:好主意..这样会更公平。嗯,两次修订?看起来是这样将几个短的连续编辑合并为一次。@布莱恩:是的,从第4版开始。@M28:Awesome就是这样。@M28:explaution添加了说明。基本上,28个unicode字符中的每个字符都是15位整数,是字母的二进制表示形式。例如,第一个字符表示“a”,相当于111101101101(或31725)这伤了我的头、眼睛、脸颊、舌头和心脏。但我喜欢它。我的抗病毒药物抱怨篭篯礧歮禧禤祯寭璗牯宭䤧 partHmmm,好吧,这是作弊-至少在计算代码大小方面是这样。保存在磁盘上的文本需要多少?你必须以158字节的UCS-2或135字节的UTF-8格式保存它。我认为utf8是一个很好的选择来标准化计数,其中每个汉字将有3个字节。哈哈,很好。有趣的是ej实现只长1个字符,不依赖外部程序=P。这不算,尽管规则中没有规定不能依赖外部程序!:)不,但这是一个安全的假设。否则,您只需创建一个执行此操作的外部程序,让您的程序只传递输入字符串即可但是figlet和链接的figlet字体通常都安装在Linux系统上,就像Perl一样!@Jordan Lewis-因为主要工作是由figlet完成的,而不是由Perl完成的,所以您应该将您的解决方案命名为figlet!…这是一种编程语言吗?;-)哟
% wget -q 3.ly/gzkv;figlet -f b ABCDEFGHIJKLMNOPQRS

 A  BB   CC DD  EEE FFF  GG H H III  JJ K K L   M M NNN  O  PP   Q  RR   SS 
A A B B C   D D E   F   G   H H  I    J K K L   MMM N N O O P P Q Q R R S   
AAA BB  C   D D EE  FF  G G HHH  I    J KK  L   MMM N N O O PP  Q Q RR   S  
A A B B C   D D E   F   G G H H  I  J J K K L   M M N N O O P    QQ R R   S 
A A BB   CC DD  EEE F    GG H H III  J  K K LLL M M N N  O  P     Q R R SS 
% wget -q 3.ly/gzkv;figlet -f b TUVWXYZ \!

TTT U U V V W W X X Y Y ZZZ     !!! 
 T  U U V V W W X X Y Y   Z     !!! 
 T  U U V V WWW  X   Y   Z      !!! 
 T  U U V V WWW X X  Y  Z           
 T  UUU  V  W W X X  Y  ZZZ     !!! 
d=dict((i,[23535,31727,29263,15211,29391,4815,31567,23533,29847,31527,23277,29257,23421,23549,31599,5103,32623,23275,31183,9367,31597,11117,32749,21653,31213,29351][i-65])for i in range(65,91))
d[33]=29183
d[32]=0
s=raw_input()
for l in range(5):
 p=""
 for c in s:
  for n in range(3):
   if d[ord(c)]&2**(3*l+n):p+=c
   else:p+=" "
  p+=" "
 print p
>>> 
ABCDEFGHIJKLMNOPQRSTUVWXYZ !
aaa bbb ccc dd  eee fff ggg h h iii jjj k k l   m m n n ooo ppp qqq rr  sss ttt u u v v w w x x y y zzz     !!! 
a a b b c   d d e   f   g   h h  i    j k k l   mmm nnn o o p p q q r r s    t  u u v v w w  x  y y   z     !!! 
aaa bbb c   d d ee  ff  g g hhh  i    j kk  l   m m nnn o o ppp q q rr  sss  t  u u v v www  x  yyy  z      !!! 
a a b b c   d d e   f   g g h h  i  j j k k l   m m n n o o p   qqq r r   s  t  u u v v www  x    y z           
a a bbb ccc dd  eee f   ggg h h iii jjj k k lll m m n n ooo p   qqq r r sss  t  uuu  v  www x x yyy zzz     !!! 
>>> 
w=raw_input()
for l in range(5):print''.join("1111 11  11  1   1   "
[int(("%05d"%ord(u"<ϳϲࢬ禉ऐऒ࠾⬃ᅘᖆⰯ囌❿✛іϾь穏ࠂᅜ⭦⭪⫸㡩⬪㰼"
[max(0,ord(c)-64)]))[l])*3:][:3].replace("1",c)+" "for c in w)
s=raw_input()
for i in range(5):print' '.join(''.join((' ',c)[ord(
'W_E__U__QQ_QN_UQ_EA_Q]_D_Q_QYQ__D[_PP_B__F__Q__EG_Y__EZWU]A_A_P_OPO_\\_QNQWT_YUS'
[max(0,3*ord(c)-192-k)])>>i&1]for k in(2,1,0))for c in s)
TTT H H EEE     QQQ U U III CCC K K     BBB RR  OOO W W N N     FFF OOO X X     JJJ U U M M PPP SSS     OOO V V EEE RR      TTT H H EEE     L   AAA ZZZ Y Y     DD  OOO GGG !!!
 T  H H E       Q Q U U  I  C   K K     B B R R O O W W NNN     F   O O  X        J U U MMM P P S       O O V V E   R R      T  H H E       L   A A   Z Y Y     D D O O G   !!!
 T  HHH EE      Q Q U U  I  C   KK      BBB RR  O O WWW NNN     FF  O O  X        J U U M M PPP SSS     O O V V EE  RR       T  HHH EE      L   AAA  Z  YYY     D D O O G G !!!
 T  H H E       QQQ U U  I  C   K K     B B R R O O WWW N N     F   O O  X      J J U U M M P     S     O O V V E   R R      T  H H E       L   A A Z     Y     D D O O G G    
 T  H H EEE     QQQ UUU III CCC K K     BBB R R OOO WWW N N     F   OOO X X     JJJ UUU M M P   SSS     OOO  V  EEE R R      T  H H EEE     LLL A A ZZZ YYY     DD  OOO GGG !!!
vvar s:String;i,j,k:Word;const F:Array[65..92]of Word=($5BEA,$3AEB,$624E,$3B6B,$72CF,$12CF,$6B4E,$5BED,$7497,$2B26,$5AED,$7249,$5BFD,$5B6F,$2B6A,$12EB,$4D6A,$5AEB,$388E,$2497,$7B6D,$2B6D,$5FED,$5AAD,$24AD,$72A7,$2092,$0000);begin S:=ParamStr(1);for j:=0 to 4 do begin for k:=1 to Length(S)do begin for i := 0 to 2 do Write((' '+S[k])[1+(F[ord(S[k])]shr(i+j*3))and 1]);Write(' ');end;WriteLn;end;end.
010 110 011 110 111 111 011 101 111 011 101 100 101 111 010 110 010 110 011 111 101 101 101 101 101 111 010 000
101 101 100 101 100 100 100 101 010 001 101 100 111 101 101 101 101 101 100 010 101 101 101 101 101 001 010 000
111 110 100 101 110 110 101 111 010 001 110 100 111 101 101 110 101 110 010 010 101 101 111 010 010 010 010 000
101 101 100 101 100 100 101 101 010 101 101 100 101 101 101 100 011 101 001 010 101 101 111 101 010 100 000 000
101 110 011 110 111 100 011 101 111 010 101 111 101 101 010 100 001 101 110 010 111 010 101 101 010 111 010 000
00 01 02
03 04 05
06 07 08
09 10 11
12 13 14
var
  s:String;    
  i, j, k: Word;

const
  F: Array [65 .. 92] of Word = (
    $5BEA,$3AEB,$624E,$3B6B,    $72CF,$12CF,$6B4E,$5BED,
    $7497,$2B26,$5AED,$7249,    $5BFD,$5B6F,$2B6A,$12EB,
    $4D6A,$5AEB,$388E,$2497,    $7B6D,$2B6D,$5FED,$5AAD,
    $24AD,$72A7,$2092,$0000);

begin
  S := ParamStr(1);
  for j := 0 to 4 do
  begin
    for k := 1 to Length(S) do
    begin
      for i := 0 to 2 do
        Write((' '+S[k])[1+(F[ord(S[k])]shr(i+j*3))and 1]);
      Write(' ');
    end;
    WriteLn;
  end;
end.
i=gets.chomp;5.times{|t|p i.gsub(/./){|c|j=3*(c>?@?c.ord-64:0);(3*t..3*t+2).map{|d|"mini5mbmzjf2bqjmof3prl72i5pn138iuhylmkpi65i278kq3qjfaihyjb66787odp8ktiy5hwt78tmnb"[j..j+2].to_i(36)[d]==1?c:" "}.join+" "}}
k=raw_input()
for i in range(5):print' '.join(''.join((' ',x)[int(z)]for z in bin(int(''.join('%02d'%(ord(q)-43)for q in'xwxvxabxwxbbdqbXWX@axbbUb_^qxXwd@kddcsbssqbXWvDabav7bs9+dwuvxdbuvssvxq')[i*28+'ABCDEFGHIJKLMNOPQRSTUVWXYZ! '.find(x)],8))[2:])for x in k)
using C=System.Console;class P{static void Main(){var t=C.ReadLine();for(int
b=15,s;b>0;b-=3){foreach(var c in t)for(s=0;s++<4;)C.Write(s>3||c<33?' ':((
"翇篭篯礧歮禧禤祯寭璗牯宭䤧彭忭筯篤筿殭秏璒孯孪寿咕寏犧"[c<34?0:c-64])&1<<b-s)>0
?c:' ');C.WriteLine();}}}