まぐげんがーです。

RubyでAAを作ってAtCoderの問題を解く

Happy New Year

atcoder.jp

1. 空白が入らないようにしながらACするコードを書く

eval"K,=%s
i,s=0,''
(s+=(1<<i)&K>0??2:'0';i+=1)while(1<<i)<=K
$><<s.reverse"%gets.chomp
  • $><< : print。後ろに空白を入れなくて済む。
  • eval"%s"%gets.chomp : %sの部分にgets.chompを入れてRubyのコードとして実行
  • 解法は冗長なやつの方がよいです あとでかさ増しする労力が減ります
  • Rubyだとputs gets.to_i.to_s(2).gsub('1','2')とかでACになります

2. 適当にかさ増しする

eval"Happy,New,Year,__2023='Happy','New',%s,2||0||2||3
happy,new,year=0,'',2023
Author='gengar_094'
Twitter='@gengar094kypro'
Today='2023/1/1'
'tyAtCoder!'
(new+=(1<<happy)&Year>0??2:'0';happy+=1)while(1<<happy)<=Year
$><<new.reverse"%gets.chomp
  • AtCoderに提出する予定の場合、tyAtCoderなどAtCoderへの感謝の気持ちを忘れずに入れましょう

3. AAを作る←大変!

#      #                                          #      #                      #       #
#      #                                          ##     #                       #     #
#      #  ######   # #####   # #####   #      #   # #    #   ####   #        #    #   #   ####    ######   # ######
######## #      #  ##     #  ##     #  #     #    #  #   #  #    #  #        #     # #   #    #  #      #  ##
#      #   ######  #       # #       #  #   #     #   #  # ######## #   ##   #      #   ########   ######  #
#      # ##     #  ##     #  ##     #    # #      #    # # #         # #  # #       #   #        ##     #  #
#      # #     ##  # #####   # #####      #       #     ##  #    #   # #  # #       #    #    #  #     ##  #
#      #  #####  # #         #           #        #      #   ####     #    #        #     ####    #####  # #

4. AAの形にRubyコードに空白を入れて、gsub(/\s/,'')で空白と改行文字を削除して実行するコードに直す

  • 行末の改行がなくなると動かなくなるので、代わりにセミコロンを入れます
eval"
H      a                                          p      p                      y       ,
N      e                                          w,     Y                       e     a
r      ,  __2023   = 'Happ   y ','Ne   w      '   , %    s   ,2||   0        |    |   2   ||3;    ;happy   , new,ye
ar=0,'', 2      0  23     ;  ;A     u  t     h    o  r   =  '    g  e        n     g a   r    _  0      9  4'
;      T   witter  =       ' @       g  e   n     g   a  r 094kypro '   ;T   o      d   ay='2023   /1/1';  '
t      y  A     t  Co     d  er     !    ' ;      (    n e w         + =  ( 1       <   <        ha     p  p
y      ) &     Ye  a r>0??   2 :'0';      h       a     pp  y    +   = 1  ) w       h    i    l  e     (1  <
<      h  appy)  < =         Y           e        a      r   ;;$>     <    <        n     ew.r    evers  e ;       ".gsub(/\s/,'')%gets.chomp

5. 完成!

  • こたつがめさんのICPCのやつ毎回すごいなあと思っていたので、それっぽいことをやってみました
  • 12/31の午後6~7時くらいから作り始めたので間に合うかどうか不安でした
  • コードゴルフのテクが活きました Ruby Golf最高!