🔧

つくつくわいん / Quineアートを作成してみた

2023/02/09に公開約76,600字

Quineアートが欲しいだけの方向け

下記ソースコードの実行結果は等幅フォントで閲覧してください。
行間の幅はできるだけ小さい方が結果を綺麗に閲覧することができます。

tsukutsuquine.rb
                                               eval$s=%w'             b="BAhsKwIUBQAAA                                     AAAgP8BwP8/             AAAAAP          g/APgB+P//A+AAAAAAAAD+B           /D/
                                                 AQAAwP//Pw         D4/////wHAAAA                             AAAAA/h/8HwAA8P///38A+AP             A//8BwAAAAAAAAPD//wEA+P//////AP4HHAD/B             /A
                                                 AAAAAAADA/z8     AwP///////8                       Mf+AcA////AAAAAAAAgP8/APz/////////D            /gBAP//            /wAAAAAAAAD//4P////             //
                                                    ////wfgAID///8AAAAAAA                  AAf/7///////////8DwADg////AAAAAAAAwB/A///////         /////D8CB/       f//           AAAAAAAAAOA         H/P/
                                                      //////////z/A//8                BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD////    ///////      ///4D/Hw             AAAAAAAAAAAD74//////////
                                                       +///8D/F8AAAAAA            AAAAAAf/v////////////7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAA       AAAAAw               If/////////////8f8/wP8FA
                                                        AAAAAAAAOCD///////     /////38P/f4D/DwAAAAAAAADgwf///////////z+P//8B/x8AAAAAAAAA8PH////////          ///               x/Yv//A/4/AAAAAAAAAPjw///
                                                        /////z3  f4//n+/wf8fwAAAAAAAAB8+P//////rw/m+f/h//8P+H8AAAAAAAAAfPj///8/9y4jBv3/w///P/D/AgA            AA             AAAAD78////XxeDY8T+/4f//z/g
                                                      /wUAAAA         AAAA+/P///w+VlXTg+/+f////wP8LAAAAAAAAP/z///+PE7D2wf//P////4D/HwAAAAAAAD/+////x          zCw      +s P//3////+B/38AAAAAAAA/        
                                                     /t//v8       s45v/v/////v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAAAAAgD/+z/737/7d//////////8H/v        8DAAAAAIA//s/+//d9/                       
                                                    /////      //////D/7/DwAAAACAP//n/v///////////////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAAAIA//      nP8////////////                             
                                                   ////P     /z/fwAAAACAP/5z/f///////////////z/4//8AAAAAgD/+f/z////////////+//8/+P//AAAAAIA//n/9////////       /////f//f/j/7w                           
                                                 AAAAC     Af/x//f//////v/////H//3/4/z8AAAAAgH/4//n//////3/8///j//9/4P9/AAAAAIB/eAD+/v //////8P//5////+D//        wAAAACAf3gA /                         
                                                P7///    ///9H//8f////g//8AAAAAAH90APv8//////9H///P////gf//AAAAAAD/+P//8f//////D/z/j//// 4H//wAAAAAA//z///H         //////x8IooP                        
                                               ///+D    //8AAAAAAP78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD  /wf2///n0QAABv7///+        H//9fAAAAAP z                      
                                              RAeAD    uv//DwAAgPn/////3///vQAAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/wf4//   /////0AwAAAPj3//8H        +P8PAAAAwB8 A                     
                                             +P///     ///6AcAAAD47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw///////gHwAAAPD ////    H//8HAAAAAAAA4P//        ////wG8AAADw/                    
                                             ///9     ///PwAAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD/////8P9/AAAAAAAAw  P///   ///AP7/BwDw/////+D       /IgAAAAAAAMD/                   
                                            /////   wD8/x8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////g  P///wDw////Hw  N   zA AAAAAAAAID//////8D       ///8A+P///z8I                  
                                           AAAAA    BwAAACA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8/  ///fw AAA    AAAEAAAAAD////  //+D/ //8Hvv7///8BAAAAAA       AAAAAA/v/////                 
                                          A////    Hz/+////AQAAAAAAAAAAAP7/////gP////8v/P///wMAAAAAA P A/AAD     +/  ////  wD/////I/z//58    DAAAAAMD/fwAA/v////8A/v       //A6D8//8fAA                 
                                          AAAAD    //38AAPz/////APz//89A/f//HyAAAADg//  8/A AD// /// /  wD   4   //     9 /gPz//x+AAAAA8P/    /HwCA//////8A0P///4H+///      /4wIAAPD//wc A              
                                         gP///    ///AID8/z8D/f////8HAAPg//8AAPD///// / wAA /   l8     BOP   //   /   // /D8ABAP4PAAD4/////    /8AAPQBAAD//////3/gAQAA       AAAA5P////// A             
                                         AB4AA    DA/v//////4QEAAAAAAOH//////wAAOIA7    7 / /  // / /  /  / /8B      AAAAA MDg//////8AAAzAAAD  8////////AwAAAAAY4P//////      AAADMAAA+P// /            
                                        ////wM    AAAAABOD//////wCAAQjg+fj///////9/A   AAA  g       AP g // ////8     AwAAD8B/5/////////z8AAPA  A4P//////AMCAAAQA9v/////       ////DfwAOAPD//           
                                        ////wD   AYAADAPD////////jA4D/AQDg//////8Aw   CB    AA      HD x / ///////    /QMAAAAA8P//////AIAAMIAF2 P////////0BAAAAAOD//////w      AAAwxAAOD///////         
                                        //AAAA   AADgf/D///8A AAMCGID///////// PQA A  AA   AAQ   P8  A+P//AAAHAAL4// ///////w8AAAAAAAD/AwDg/wAAD oAB//////////8PAAAAAAAA8       x/6A8AAADhAwP/ /        
                                       7//////   /BwAAAAAAAII f/v//AABgAMD/ fwD///    /// wcAAA   AA  AAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA7APgAAAAZwP//AfD/////AwAAAAAA      AAjAPwD8AAAAIsD /       
                                       /wPg///   //wEAAAAAAA  AI gB8A/gAAAM WA//8HIP /// /8AAAAAA AAA CAAcAP8AAICBgf//HxD+///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAAIA      OD//wAAYAAO/v//Dv      
                                       j/v3kAA   AAAAAAACADA  // 8AAGAAcPj//3DgPwF4 AAAAA AAAAA gAwM//AABgAIDx/4/B4R8AOAAAAAAAAAAIAMAfAAAAMAAA3v+DAAI/ADwAAAAAAAAACADwfwAAAD     AAAPh/wAF4/gA8AAAAA    
                                       AAAAAgA  +P8AAAA4AAD  AAe AAAPgBHAAAAAAAAAAIAP7/AQAAGAAAAHgwAADRA5wAAAAAAAAACMD//wMAAAAAAADACAAAgAKcAAAAAAAAAAj8//8D";n=Marshal.load(      b.unpack("m")[0]);e   
                                       ="eval$  s=%w"<<39<<  ($s  *10);o="";j=-1;0.up to(104*200-1){|i|o<<((n[i]==1)?e[j+=1]:32);o<<((i%200==199)?10:"")};o.rstrip!;o[-6,6]="     "<<39<<".join";puts(o 
                                       )#b="BA   hsKwIUBQA  AAA   AAgP8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/AQAAwP//PwD4/////wHAAAAAAAAA/h/8HwAA8P///38A+APA//8BwAAAAAAAAPD//w    EA+P//////AP4HHAD/B/A 
                                       AAAAAAA   DA/z8AwP/  /// / //8Mf+AcA////AAAAAAAAgP8/APz/////////D/gBAP///wAAAAAAAAD//4P//////////wfgAID///8AAAAAAAAAf/7///////////8DwAD     g////AAAAAAAAwB/A////
                                       ///////   /D8CB/f//AAAAA   AAAAOAH/P///////////z/A//8BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD//// //////////4D/HwAAAAAAAAAAAD74     //////////+///8D/F8AA
                                       AAAAAAA   AAAf/v//////// / ///7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAAAAAAAwIf/////////////8f8/wP8FAA AAAAAAAOCD////////////38P/f4D    /DwAAAAAAAADgwf// ///
                                       //////z+   P//8B/x8AAAAA A AAA8PH///////////x/Yv//A/4/AAAAAAAAAPjw////////z3f4/ /n+/wf8fwAAAAAAAAB8+P/////   /rw/m+f/h//8P+H8AAAAAAAAAfP    j///8/9y4jBv3/w///P  
                                       /D/AgAAA    AAAAD78////Xxe  DY8T+/4f//z/g/wUAAAAAAAA+/P///w+VlXTg+/+f////wP8LAAA   AAAAAP/z///+PE7D2wf//P//   //4D/HwAAAAAAAD/+////xzCw+      sP//3////+B/38AAAA 
                                       AAAA//t/    /v8s          45v/v// ///v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAA    AAAgD/+z/737/7d////////  //8H/v8DAAAAAIA//s/+//d9///     /////////D/7/DwAAAA
                                       CAP//n/v    ////           ////// /////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAA   A IA//nP8//////////////   //P/z/fwAAAACAP/5z/f//////     /////////z/4//8AAAA
                                        AgD/+f/   z ///         // /////  //+//8/+P//AAAAAIA//n/9/////////////f//f/j/7wAAAA   C Af/x//f//////v/////H  //3/4/z8AAAAAgH/4//n//////3      /8///j//9/4P9/AAA
                                        AAIB/eAD   +/v//////8P//5////+D//   wAAAACAf3gA/P7//////9H//8f////g//8AAAAAAH90APv8/      /////9H///P////gf/   /AAAAAAD/+P//8f//////D/z/j      ////4H//wAAAAAA//
                                        z///H///  ///x8IooP///+D//8AAAAAA   P78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/Tw      D     4   w f//     /4f//y8AAAAA/sGD/wf2///n0QA     ABv7///+H//9fAAAA
                                         APzRAeA  Duv//DwAAgPn/////3///vQ AA  AAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAA                         ACA/wf4///////0AwAAAPj3//8     H+P8PAAAAwB8A+P//
// //                                    6AcAAAD4    7///F/7/HwAAAAABAPD////  / //APAAAA+P///4P//ycAAAAA AADw///////gHwAAAPD  /            ///H//     8HAAAAAAAA4P//////wG8AAADw///    /9///PwAAAAAAAOD/
//// /                                   4B/AAAA8     P///     //7/38AAAAAA      AD g//////8AnwEAAPD/////8P  9/AA   A AA                 AA      AwP//////AP7/BwDw/////+D/IgAAAAAAA    MD//////wD8/x8A8P
///// g                                   DxwAAAA   A AAD            A////       / /8A /v8/APD///9/wAEHAAAAA                           AA  AgP//////gP///wDw////HwNzAAAAAAAAAID////// 8D///8A+P///z8IAAA
A ABwA A                                  ACA////   / //          g////Afj         ///8  /AAAAAAAEAAAAAP   /                          /  ////4P///wN8////fwAAAAAAEAAAAAD//////+D///8Hvv7///8BAAAAAAAAAAA
 A /v/ ///                                /A////Hz  /+////AQAAAAAAAAAAAP7//      //     /gP////8   v/                                  P///wMAAAAAA        PA/AAD+/////wD/////I/z//58DAAAAAMD/fwAA/v////
  8 A/v//A                                 6D8//8fA AAAAAD//38AAPz/////APz/        /89A/f//HyAAAADg/                                  /8/AAD/              /////wD4//9/gPz//x+AAAAA8P//HwCA//////8A0P///
   4 H+////                                4wIAAPD// wcAgP//////AID8/z8D/f/ /    //8HAAPg//8AAPD/////                                   /                   wAA/l8BOP//////D8ABAP4PAAD4//////8AAPQBAAD//
    ////3/gA                               QAAAAAA5P//////AAB4AADA/v//////     4QEAAAAAAOH//////wAA  O                                                      IA77/////////8BAAAAAMDg//////8AAAzAAAD8/////
     ///AwAAA                               AAY4P//////AAADMAAA+P///////wMA   AAAABOD//////wCAAQjg+                                                          fj///////9/AAAAgAPg//////8AwAAD8B/5////////
      /z8AAP AA                             4P//////AMCAAAQA9v/////////DfwA OAPD//////wDAYAADAPD//////                                                       //jA4D/AQDg//////8AwCBAAHDx/////////QMAAAAA
       8P//////                             AIAAMIAF2P////////0BAAAAAOD//////wAAAw xAAOD/////////AAAAAA                                                      Dgf/D///8AAAMCGID/////////PQAAAAAAQP8A+P//A
        AAHAA  L4                           /////////w8AAAAAAAD/AwDg/wAADoAB////    //////8PAAAAAAAA8x/                                                       6A8AAADhAwP//7///////BwAAAAAAAIIf/v//AABgA
         MD/fwD//////wcAAAA                 AAAAE+vj//wAAwATg//8A+P////8DAAAAAAA     ACPA7APgAAA A   Z                                                        wP//AfD/////AwAAAAAAAAjAPwD8AAAAIsD//wPg//
          ///wEAAAAAAAAIgB8A/               gAAAMWA//8HIP////8AAAAAAAAACAAcAP8AA     ICBgf//      HxD                                                         +///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAA
         AAAAAAIAOD//wAAYAAO/v              //Dvj/v3kAAAAAAAAACADA//8AAGAAcPj//       3Dg       PwF                                                            4AAAAAAAAAAgAwM//AABgAIDx/4/B4R8AOAAAAAAA
       AAAIAMAfAAAAMAAA3v+DAAI/A            DwAAAAAAAAACADwfwAAADAAAPh/wAF4/g   A8      AA  AAA                                                                AAAAAgA+P8AAAA4AADAAeAAAPgBHAAAAAAAAAAIAP
      7/AQAAGAAAAHgwAADRA5wAAAAA           AAAACMD//wMAAAAAAADACAAAgAKcAAAAAAA     A                                      AAj                                  8//8D";n=Marshal.load(b.unpack("m")[0]);e
     ="eval$s=%w"<<39<<($s*10);o=          "";j=-1;0.upto(104*200-1){|i|o<<((n                                            [                                     i]==1)?e[j+=1]:32);o<<((i%200==199)?10:"
     ")};o.rstrip!;o[-6,6]=""<<39<        <".jo in";puts(o)#b="BAhsKwIUBQAAAAAA                                             g                                   P8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/A
     QAAwP//PwD4/////wHAAAAAAAAA/h/      8HwAA 8 P///38A+APA//8BwAAAAAAAAPD//wEA+                                                                                P//////AP4HHAD/B/AAAAAAAADA/z8AwP//////
      /8Mf+AcA////AAAAAAAAgP8/APz////   /////D   /gBAP///wAAAAAAAAD//4P//////////                                                                                wfgAID///8AAAAAAAAAf/7///////////8DwADg
       ////AAAAAAAAwB/A////////////D8CB/f//A A    AAAAAAAOAH/P///////////z/A//8BAA                                                  AAAAAAAADw                   gf////////////8/8P8HAAAAAAAAAAAA+OD////
        //////////4D/HwAAAAAAAAAAAD74/////   /    ////+///8D/F8AAAAAAAAAAAAf/  v//                                            //////////7/B/D/A                  AAAAAAAAACAD//////////////8/x/g/wIAAAAA
         AAAAwIf/////////////8f8/w           P 8  FAAAAAAAAAOCD////////////38                                           P/f4D/DwAAAAAAAADgwf///                   ////////z+P//8B/x8AAAAAAAAA8PH////////
          ///x/Yv//A/4/AAAAAAAAAPjw/  //      / / ///z3f4//n+/wf8fwAAAAAAAAB8        +                               P//////rw/m+f/h//8P+H8AAA                  AAAAAAfPj///8/9y4jBv3/w///P/D/AgAAAAAAAD
           78////XxeDY8T+/4f//z/g/wUAAA        A  AAAA+/P///w+VlXTg+/+f////wP          8                            LAAAAAAAAP/z///+PE7D2wf//                  P////4D/HwAAAAAAAD/+////xzCw+sP//3////+B/
            3 8AAAAAAAA//t//v8s45v/v/////      v //Af+/AAAAAACAP/7f//fDfcz////////   //w P                          /fwEAAAAAgD/+z/737/7d//                    ////////8H/v8DAAAAAIA//s/+//d9///////////
               /  D/7/DwAAAACAP//n/v//  //      / //////////w/8/x8AAAAAgD//5/z/3///////////             //           8f/P9/AAAAAIA//nP8/                    ///////////////P/z/fwAAAACAP/5z/f///////////
                 ////z/4//8AA A A          AgD  /+f/z////////////+//8/+P//AAAAAIA//n/9//////          ///                ////f//f/j/                       7wAAAACAf/x//f//////v/////H//3/4/z8AAAAAgH/4/
                  / n////                       //3/8///j//9/4P9/AAAAAIB/eAD+/v//////8P//5////+      D//w                                                 A  AAACAf3gA/P7//////9H//8f////g//8AAAAAAH90AP
                   v8//                       // //9H///P////gf//AAAAAAD/+P//8f//////D/z/j////4H/    /wAA                                               A    AAA//z///H//////x8IooP///+D//8AAAAAAP78///N
                   ///         /// 9/A  AAA/ ///g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD/wf2///n0                                             QA     ABv7///+H//9fAAAAAPzRAeADuv//DwAAgPn/////3/
                  //          vQ                  AAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/w                                         f4        ///////0AwAAAPj3//8H+P8PAAAAwB8A+P//////6Ac
                AA          AD                     47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw//                                        /          ////gHwAAAPD////H//8HAAAAAAAA4P//////wG8AAA
               Dw          /         ///9  ///Pw   AAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD///                                //8           P9/AAAAAAAAwP//////AP7/BwDw/////+D/IgAAAAAA
              AM        D/          /////wD8/   x  8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////gP///                      wDw/             ///HwNzAAAAAAAAAID//////8D///8A+P///z8IAAAA
              AB       w          A              AA CA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8////fwAAAAAA    EAAAAAD//          ///                /+D///8Hvv7///8BAAAAAAAAAAAA/v/////A////Hz/+
              //     //         AQ                  AAAAAAAAAAAP7/////gP////8v/P///wMAAAAAAPA/AAD+/////wD/   ////I             /z//58DAAA                    AAMD/fwAA/v////8A/v//A6D8//8fAAAAAAD//38AAP
              z/     /        /             //A P   z//89A/f//HyAAAADg//8/AAD//////wD4//9/gPz//x+AAAAA8P/ /HwCA///                                          ///8A0P///4H+////4wIAAPD//wcAgP//////AID8/z8
               D            /f         // /        /8 HAAPg//8AAPD//////wAA/l8BOP//////D8ABAP4PAAD4////// 8AAPQBA                                            AD//////3/gAQAAAAAA5P//////AAB4AADA/v//////
                4Q        EA          A              AAAAOH//////wAAOIA77/////////8BAAAAAMDg//////8AAAzAAAD8////                                             ////AwAAAA     AY4P//////AAADMAAA+P///////w
                MA       A         AA          ABOD//////wCAAQjg+fj///////9/AAAAgAPg//////8AwAAD8B/5///// ////                                                z 8AAPAA4P           //////AMCAAAQA9v/////
                ///              /         DfwAOAPD//////wDAYAADAPD////////jA4D/AQDg//////8AwCBAAHDx////////                                                    /QMAAAAA8P                   //////AIAAM
                 IAF           2P       ////////0BAAAAAOD//////wAAAwxAAOD/////////AAAAAADgf/D///8AAAMCGID///                                                    //  ////PQAAA    A AAQP8A+            P/
                   /AA        A       HAAL4/////////w8AAAAAA AD/AwDg/wAADoAB//////////8PAAAAAAAA8x/6A8AAADh                                                      A     wP//7/    //////BwAAAAAAAIIf/v//A
                     AB               gAMD/fwD//////wcA         AAAAAAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA                                                       7      A PgAAA   AZwP//AfD/////AwAAAAA
                      AA  A          jAPwD8AAAAIsD//wPg/           ////wEAAAAAAAAIgB8A/gAAAMWA//8HIP////8A                                                         A        AAAAAA ACA             AcAP8
                        A  AI         CBgf//HxD+///3AAAAA           AAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAA                                                         I          AOD//wAA            YAAO/v
                         /   /        Dvj/v3kAAAAAAAAACADA           //8AAGAAcPj//3DgPwF4AAAAAAAAAAgAwM//                                                          A           ABgAID            x/4/B4R
                        8 A   OA       AAAAAAAAAIAMAfAAAAMA          A  A3v+DAAI/ADwAAAAAAAAACADwfwAAADA                                                           A              APh           /wAF4/gA
                       8A      AA      AAAAAAAgA+P8AAAA4AADAA       e    AAAPgBHAAAAAAAAAAIAP7/AQAA GAAA                                                           A               HgwA       ADRA5wAAAA
                       A        AAA     ACMD//wMAAAAAAADACAAAgAKc   A     AAAAAAAAAj8//8D";n=Marsh al.lo                                                           a                 d(b.unpack("m")[0])
                     ;e          ="e     val$s=%w"<<39<<($s*10); o="       ";j=-1;0.upto(104*2 00  -1){                                                            |                  i|o<<((n[i]==1)?e[
                     j+             =1]    :32);o<<((i%200==199)    ?10      :"")};o.r  s          trip                                                            !                  ;o[-6,  6]=""<<39<
                     <"                .j   oin";puts(o)#b="   BA     hsK    wIUBQAAA              AAA                                                             g                  P8BwP8/           
                    AA                   AAAP g/APgB+P//A+     A         A      AAAAAA            D+B/                                                             D                /AQAAwP//Pw         
                    D4                     /////wHAAAAA       AAA          A/h/  8HwAA8P          ///3                                                             8               A+APA//8BwAAA        
                   AAA                        AAP            D//                   wEA+P/         ///                                                              /             /AP4HHAD/B/AAAAA       
                   AA                              ADA/     z8                  A   w P///        ///  /                                                           8          Mf+AcA////AAAAAAAAgP      
                                                      8/   A                           P z        ///  /                                                           /      ////D/gBAP///wAAAA'.join

Zennのフォントですと行間の幅の関係で縦長に見えますね。

はじめに

「図月つくる[1]」というYouTuberをご存じでしょうか。私は存じ上げています。
その図月つくるさんが、ファンの方々が作成されたDIY作品を募集するイベント[2]を開催されました。
私はそれに無謀にもプログラミングをテーマに参加しました[3]DIYとは。
本記事では、そのイベントへの提出物について解説をします。

概要

今回作成したのはQuineアート(Quine[4] + アスキーアート[5])です。
実装はこちらの記事を参考にしました。

下記にQuineアートの作成手順を示します。

  1. 元となるアスキーアートを作成する
  2. アスキーアートを圧縮テキストデータに変換する
  3. Quineアートジェネレータを実装する
  4. Quineアート生成

Quineアートの作成手順

本記事で取り扱うコードは全てRuby[6]で記述しています。

元となるアスキーアートを作成する

アスキーアートの元画像として、図月つくるさんのYouTubeアカウントのアイコンを参照しました。
なお、後の作業のためアスキーアートは# の二値で作成します。
今回作成したアスキーアートは下記です。

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

後述の処理を実行することで#の位置にソースコードが挿入されます。

作成するアスキーアートの制約として、各行の文字数を同じにし長方形にする必要があります。
そのため、各行の末尾に適宜 を挿入し文字数が等しくなるように調整してください。

アスキーアートを圧縮テキストデータに変換する

今回作成するQuineのコードは、アスキーアートのデータをソースコードに埋め込むことになりますので、最終的なコードの文字数よりもアスキーアートのデータサイズを小さくする必要があります。
そのため、下記のスクリプトで圧縮テキストデータに変換します。

encode.rb
str = STDIN.read
bits = str.split(/\n/).join().tr(" #", "01").reverse.to_i(2)
puts [Marshal.dump(bits)].pack("m").gsub("\n", "")

前述のアスキーアートを変換した結果は下記の通りです。

BAhsKwIUBQAAAAAAgP8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/AQAAwP//PwD4/////wHAAAAAAAAA/h/8HwAA8P///38A+APA//8BwAAAAAAAAPD//wEA+P//////AP4HHAD/B/AAAAAAAADA/z8AwP///////8Mf+AcA////AAAAAAAAgP8/APz/////////D/gBAP///wAAAAAAAAD//4P//////////wfgAID///8AAAAAAAAAf/7///////////8DwADg////AAAAAAAAwB/A////////////D8CB/f//AAAAAAAAAOAH/P///////////z/A//8BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD//////////////4D/HwAAAAAAAAAAAD74//////////+///8D/F8AAAAAAAAAAAAf/v////////////7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAAAAAAAwIf/////////////8f8/wP8FAAAAAAAAAOCD////////////38P/f4D/DwAAAAAAAADgwf///////////z+P//8B/x8AAAAAAAAA8PH///////////x/Yv//A/4/AAAAAAAAAPjw////////z3f4//n+/wf8fwAAAAAAAAB8+P//////rw/m+f/h//8P+H8AAAAAAAAAfPj///8/9y4jBv3/w///P/D/AgAAAAAAAD78////XxeDY8T+/4f//z/g/wUAAAAAAAA+/P///w+VlXTg+/+f////wP8LAAAAAAAAP/z///+PE7D2wf//P////4D/HwAAAAAAAD/+////xzCw+sP//3////+B/38AAAAAAAA//t//v8s45v/v/////v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAAAAAgD/+z/737/7d//////////8H/v8DAAAAAIA//s/+//d9////////////D/7/DwAAAACAP//n/v///////////////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAAAIA//nP8////////////////P/z/fwAAAACAP/5z/f///////////////z/4//8AAAAAgD/+f/z////////////+//8/+P//AAAAAIA//n/9/////////////f//f/j/7wAAAACAf/x//f//////v/////H//3/4/z8AAAAAgH/4//n//////3/8///j//9/4P9/AAAAAIB/eAD+/v//////8P//5////+D//wAAAACAf3gA/P7//////9H//8f////g//8AAAAAAH90APv8//////9H///P////gf//AAAAAAD/+P//8f//////D/z/j////4H//wAAAAAA//z///H//////x8IooP///+D//8AAAAAAP78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD/wf2///n0QAABv7///+H//9fAAAAAPzRAeADuv//DwAAgPn/////3///vQAAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/wf4///////0AwAAAPj3//8H+P8PAAAAwB8A+P//////6AcAAAD47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw///////gHwAAAPD////H//8HAAAAAAAA4P//////wG8AAADw////9///PwAAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD/////8P9/AAAAAAAAwP//////AP7/BwDw/////+D/IgAAAAAAAMD//////wD8/x8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////gP///wDw////HwNzAAAAAAAAAID//////8D///8A+P///z8IAAAAABwAAACA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8////fwAAAAAAEAAAAAD//////+D///8Hvv7///8BAAAAAAAAAAAA/v/////A////Hz/+////AQAAAAAAAAAAAP7/////gP////8v/P///wMAAAAAAPA/AAD+/////wD/////I/z//58DAAAAAMD/fwAA/v////8A/v//A6D8//8fAAAAAAD//38AAPz/////APz//89A/f//HyAAAADg//8/AAD//////wD4//9/gPz//x+AAAAA8P//HwCA//////8A0P///4H+////4wIAAPD//wcAgP//////AID8/z8D/f////8HAAPg//8AAPD//////wAA/l8BOP//////D8ABAP4PAAD4//////8AAPQBAAD//////3/gAQAAAAAA5P//////AAB4AADA/v//////4QEAAAAAAOH//////wAAOIA77/////////8BAAAAAMDg//////8AAAzAAAD8////////AwAAAAAY4P//////AAADMAAA+P///////wMAAAAABOD//////wCAAQjg+fj///////9/AAAAgAPg//////8AwAAD8B/5/////////z8AAPAA4P//////AMCAAAQA9v/////////DfwAOAPD//////wDAYAADAPD////////jA4D/AQDg//////8AwCBAAHDx/////////QMAAAAA8P//////AIAAMIAF2P////////0BAAAAAOD//////wAAAwxAAOD/////////AAAAAADgf/D///8AAAMCGID/////////PQAAAAAAQP8A+P//AAAHAAL4/////////w8AAAAAAAD/AwDg/wAADoAB//////////8PAAAAAAAA8x/6A8AAADhAwP//7///////BwAAAAAAAIIf/v//AABgAMD/fwD//////wcAAAAAAAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA7APgAAAAZwP//AfD/////AwAAAAAAAAjAPwD8AAAAIsD//wPg/////wEAAAAAAAAIgB8A/gAAAMWA//8HIP////8AAAAAAAAACAAcAP8AAICBgf//HxD+///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAAIAOD//wAAYAAO/v//Dvj/v3kAAAAAAAAACADA//8AAGAAcPj//3DgPwF4AAAAAAAAAAgAwM//AABgAIDx/4/B4R8AOAAAAAAAAAAIAMAfAAAAMAAA3v+DAAI/ADwAAAAAAAAACADwfwAAADAAAPh/wAF4/gA8AAAAAAAAAAgA+P8AAAA4AADAAeAAAPgBHAAAAAAAAAAIAP7/AQAAGAAAAHgwAADRA5wAAAAAAAAACMD//wMAAAAAAADACAAAgAKcAAAAAAAAAAj8//8D

Quineアートジェネレータを実装する

前述の変換後アスキーアートデータを用いて、Quineアートを生成するジェネレータを実装します。

generate.rb
eval$s=%w'b="BAhsKwIUBQAAAAAAgP8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/AQAAwP//PwD4/////wHAAAAAAAAA/h/8HwAA8P///38A+APA//8BwAAAAAAAAPD//wEA+P//////AP4HHAD/B/AAAAAAAADA/z8AwP///////8Mf+AcA////AAAAAAAAgP8/APz/////////D/gBAP///wAAAAAAAAD//4P//////////wfgAID///8AAAAAAAAAf/7///////////8DwADg////AAAAAAAAwB/A////////////D8CB/f//AAAAAAAAAOAH/P///////////z/A//8BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD//////////////4D/HwAAAAAAAAAAAD74//////////+///8D/F8AAAAAAAAAAAAf/v////////////7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAAAAAAAwIf/////////////8f8/wP8FAAAAAAAAAOCD////////////38P/f4D/DwAAAAAAAADgwf///////////z+P//8B/x8AAAAAAAAA8PH///////////x/Yv//A/4/AAAAAAAAAPjw////////z3f4//n+/wf8fwAAAAAAAAB8+P//////rw/m+f/h//8P+H8AAAAAAAAAfPj///8/9y4jBv3/w///P/D/AgAAAAAAAD78////XxeDY8T+/4f//z/g/wUAAAAAAAA+/P///w+VlXTg+/+f////wP8LAAAAAAAAP/z///+PE7D2wf//P////4D/HwAAAAAAAD/+////xzCw+sP//3////+B/38AAAAAAAA//t//v8s45v/v/////v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAAAAAgD/+z/737/7d//////////8H/v8DAAAAAIA//s/+//d9////////////D/7/DwAAAACAP//n/v///////////////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAAAIA//nP8////////////////P/z/fwAAAACAP/5z/f///////////////z/4//8AAAAAgD/+f/z////////////+//8/+P//AAAAAIA//n/9/////////////f//f/j/7wAAAACAf/x//f//////v/////H//3/4/z8AAAAAgH/4//n//////3/8///j//9/4P9/AAAAAIB/eAD+/v//////8P//5////+D//wAAAACAf3gA/P7//////9H//8f////g//8AAAAAAH90APv8//////9H///P////gf//AAAAAAD/+P//8f//////D/z/j////4H//wAAAAAA//z///H//////x8IooP///+D//8AAAAAAP78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD/wf2///n0QAABv7///+H//9fAAAAAPzRAeADuv//DwAAgPn/////3///vQAAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/wf4///////0AwAAAPj3//8H+P8PAAAAwB8A+P//////6AcAAAD47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw///////gHwAAAPD////H//8HAAAAAAAA4P//////wG8AAADw////9///PwAAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD/////8P9/AAAAAAAAwP//////AP7/BwDw/////+D/IgAAAAAAAMD//////wD8/x8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////gP///wDw////HwNzAAAAAAAAAID//////8D///8A+P///z8IAAAAABwAAACA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8////fwAAAAAAEAAAAAD//////+D///8Hvv7///8BAAAAAAAAAAAA/v/////A////Hz/+////AQAAAAAAAAAAAP7/////gP////8v/P///wMAAAAAAPA/AAD+/////wD/////I/z//58DAAAAAMD/fwAA/v////8A/v//A6D8//8fAAAAAAD//38AAPz/////APz//89A/f//HyAAAADg//8/AAD//////wD4//9/gPz//x+AAAAA8P//HwCA//////8A0P///4H+////4wIAAPD//wcAgP//////AID8/z8D/f////8HAAPg//8AAPD//////wAA/l8BOP//////D8ABAP4PAAD4//////8AAPQBAAD//////3/gAQAAAAAA5P//////AAB4AADA/v//////4QEAAAAAAOH//////wAAOIA77/////////8BAAAAAMDg//////8AAAzAAAD8////////AwAAAAAY4P//////AAADMAAA+P///////wMAAAAABOD//////wCAAQjg+fj///////9/AAAAgAPg//////8AwAAD8B/5/////////z8AAPAA4P//////AMCAAAQA9v/////////DfwAOAPD//////wDAYAADAPD////////jA4D/AQDg//////8AwCBAAHDx/////////QMAAAAA8P//////AIAAMIAF2P////////0BAAAAAOD//////wAAAwxAAOD/////////AAAAAADgf/D///8AAAMCGID/////////PQAAAAAAQP8A+P//AAAHAAL4/////////w8AAAAAAAD/AwDg/wAADoAB//////////8PAAAAAAAA8x/6A8AAADhAwP//7///////BwAAAAAAAIIf/v//AABgAMD/fwD//////wcAAAAAAAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA7APgAAAAZwP//AfD/////AwAAAAAAAAjAPwD8AAAAIsD//wPg/////wEAAAAAAAAIgB8A/gAAAMWA//8HIP////8AAAAAAAAACAAcAP8AAICBgf//HxD+///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAAIAOD//wAAYAAO/v//Dvj/v3kAAAAAAAAACADA//8AAGAAcPj//3DgPwF4AAAAAAAAAAgAwM//AABgAIDx/4/B4R8AOAAAAAAAAAAIAMAfAAAAMAAA3v+DAAI/ADwAAAAAAAAACADwfwAAADAAAPh/wAF4/gA8AAAAAAAAAAgA+P8AAAA4AADAAeAAAPgBHAAAAAAAAAAIAP7/AQAAGAAAAHgwAADRA5wAAAAAAAAACMD//wMAAAAAAADACAAAgAKcAAAAAAAAAAj8//8D";n=Marshal.load(b.unpack("m")[0]);e="eval$s=%w"<<39<<($s*10);o="";j=-1;0.upto(104*200-1){|i|o<<((n[i]==1)?e[j+=1]:32);o<<((i%200==199)?10:"")};o.rstrip!;o[-6,6]=""<<39<<".join";puts(o)#'.join

このコードは実行コードをテキストデータとして持ち、eval関数でそれを実行しています。
実行コード部分を抜き出し、簡易的なコードフォーマットとコメントの付与をしたもの(後から付与したコメントはあえてRubyの構文とは異なる//で始めるようにしています)が下記のコードとなります。

$s = <<'EOS'
// アスキーアートの変換後文字列
b = "BAhsKwIUBQAAAAAAgP8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/AQAAwP//PwD4/////wHAAAAAAAAA/h/8HwAA8P///38A+APA//8BwAAAAAAAAPD//wEA+P//////AP4HHAD/B/AAAAAAAADA/z8AwP///////8Mf+AcA////AAAAAAAAgP8/APz/////////D/gBAP///wAAAAAAAAD//4P//////////wfgAID///8AAAAAAAAAf/7///////////8DwADg////AAAAAAAAwB/A////////////D8CB/f//AAAAAAAAAOAH/P///////////z/A//8BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD//////////////4D/HwAAAAAAAAAAAD74//////////+///8D/F8AAAAAAAAAAAAf/v////////////7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAAAAAAAwIf/////////////8f8/wP8FAAAAAAAAAOCD////////////38P/f4D/DwAAAAAAAADgwf///////////z+P//8B/x8AAAAAAAAA8PH///////////x/Yv//A/4/AAAAAAAAAPjw////////z3f4//n+/wf8fwAAAAAAAAB8+P//////rw/m+f/h//8P+H8AAAAAAAAAfPj///8/9y4jBv3/w///P/D/AgAAAAAAAD78////XxeDY8T+/4f//z/g/wUAAAAAAAA+/P///w+VlXTg+/+f////wP8LAAAAAAAAP/z///+PE7D2wf//P////4D/HwAAAAAAAD/+////xzCw+sP//3////+B/38AAAAAAAA//t//v8s45v/v/////v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAAAAAgD/+z/737/7d//////////8H/v8DAAAAAIA//s/+//d9////////////D/7/DwAAAACAP//n/v///////////////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAAAIA//nP8////////////////P/z/fwAAAACAP/5z/f///////////////z/4//8AAAAAgD/+f/z////////////+//8/+P//AAAAAIA//n/9/////////////f//f/j/7wAAAACAf/x//f//////v/////H//3/4/z8AAAAAgH/4//n//////3/8///j//9/4P9/AAAAAIB/eAD+/v//////8P//5////+D//wAAAACAf3gA/P7//////9H//8f////g//8AAAAAAH90APv8//////9H///P////gf//AAAAAAD/+P//8f//////D/z/j////4H//wAAAAAA//z///H//////x8IooP///+D//8AAAAAAP78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD/wf2///n0QAABv7///+H//9fAAAAAPzRAeADuv//DwAAgPn/////3///vQAAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/wf4///////0AwAAAPj3//8H+P8PAAAAwB8A+P//////6AcAAAD47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw///////gHwAAAPD////H//8HAAAAAAAA4P//////wG8AAADw////9///PwAAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD/////8P9/AAAAAAAAwP//////AP7/BwDw/////+D/IgAAAAAAAMD//////wD8/x8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////gP///wDw////HwNzAAAAAAAAAID//////8D///8A+P///z8IAAAAABwAAACA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8////fwAAAAAAEAAAAAD//////+D///8Hvv7///8BAAAAAAAAAAAA/v/////A////Hz/+////AQAAAAAAAAAAAP7/////gP////8v/P///wMAAAAAAPA/AAD+/////wD/////I/z//58DAAAAAMD/fwAA/v////8A/v//A6D8//8fAAAAAAD//38AAPz/////APz//89A/f//HyAAAADg//8/AAD//////wD4//9/gPz//x+AAAAA8P//HwCA//////8A0P///4H+////4wIAAPD//wcAgP//////AID8/z8D/f////8HAAPg//8AAPD//////wAA/l8BOP//////D8ABAP4PAAD4//////8AAPQBAAD//////3/gAQAAAAAA5P//////AAB4AADA/v//////4QEAAAAAAOH//////wAAOIA77/////////8BAAAAAMDg//////8AAAzAAAD8////////AwAAAAAY4P//////AAADMAAA+P///////wMAAAAABOD//////wCAAQjg+fj///////9/AAAAgAPg//////8AwAAD8B/5/////////z8AAPAA4P//////AMCAAAQA9v/////////DfwAOAPD//////wDAYAADAPD////////jA4D/AQDg//////8AwCBAAHDx/////////QMAAAAA8P//////AIAAMIAF2P////////0BAAAAAOD//////wAAAwxAAOD/////////AAAAAADgf/D///8AAAMCGID/////////PQAAAAAAQP8A+P//AAAHAAL4/////////w8AAAAAAAD/AwDg/wAADoAB//////////8PAAAAAAAA8x/6A8AAADhAwP//7///////BwAAAAAAAIIf/v//AABgAMD/fwD//////wcAAAAAAAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA7APgAAAAZwP//AfD/////AwAAAAAAAAjAPwD8AAAAIsD//wPg/////wEAAAAAAAAIgB8A/gAAAMWA//8HIP////8AAAAAAAAACAAcAP8AAICBgf//HxD+///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAAIAOD//wAAYAAO/v//Dvj/v3kAAAAAAAAACADA//8AAGAAcPj//3DgPwF4AAAAAAAAAAgAwM//AABgAIDx/4/B4R8AOAAAAAAAAAAIAMAfAAAAMAAA3v+DAAI/ADwAAAAAAAAACADwfwAAADAAAPh/wAF4/gA8AAAAAAAAAAgA+P8AAAA4AADAAeAAAPgBHAAAAAAAAAAIAP7/AQAAGAAAAHgwAADRA5wAAAAAAAAACMD//wMAAAAAAADACAAAgAKcAAAAAAAAAAj8//8D"

// アスキーアート文字列を元の01列に戻す
n = Marshal.load(b.unpack("m")[0])

// 先頭のお作法とソースコード文字列を複数回繰り返したものを連結した文字列を用意
e = "eval$s=%w" << 39 << ($s * 10)

// 出力文字列とカウンタを初期化
o = ""
j = -1

// アスキーアートのサイズ分繰り返す(今回使用したアスキーアートは縦104文字、横200文字)
0.upto(104 * 200 - 1) { |i|
  // アスキーアートの`#`(1)に相当する位置にソースコード文字列を、` `(0)に相当する位置に` `を挿入
  o << ((n[i] == 1) ? e[j += 1] : 32)

  // 改行が必要な位置なら挿入する
  o << ((i % 200 == 199) ? 10 : "")
}

// 末尾の空白を取り除き、末尾のお作法を挿入する
o.rstrip!
o[-6,6] = "" << 39 << ".join"

// 生成した出力文字列を標準出力へ出力する
puts(o)

// 2週目以降のコードを無効化するためのコメント開始文字
#
EOS

ソースコード文字列を複数回繰り返すのはアスキーアード描画に必要な文字数を確保するためです。
また、ソースコードの最後の文字をコメント開始文字の#にすることで2週目以降は全てコメントアウトされるようにし、動作に影響を与えないようにします。

本手法ではソースコードのトークンが で分断される可能性があります。
この対策として、%wを用いることで空白文字を区切り文字とした文字列の配列の定義として扱い、これをjoinで結合することで なしの文字列に変換します。

Quineアート生成

前述のジェネレータを実行することで、目的のQuineアートを生成することができます(記事冒頭のソースコードと同じです)

tsukutsuquine.rb
                                               eval$s=%w'             b="BAhsKwIUBQAAA                                     AAAgP8BwP8/             AAAAAP          g/APgB+P//A+AAAAAAAAD+B           /D/
                                                 AQAAwP//Pw         D4/////wHAAAA                             AAAAA/h/8HwAA8P///38A+AP             A//8BwAAAAAAAAPD//wEA+P//////AP4HHAD/B             /A
                                                 AAAAAAADA/z8     AwP///////8                       Mf+AcA////AAAAAAAAgP8/APz/////////D            /gBAP//            /wAAAAAAAAD//4P////             //
                                                    ////wfgAID///8AAAAAAA                  AAf/7///////////8DwADg////AAAAAAAAwB/A///////         /////D8CB/       f//           AAAAAAAAAOA         H/P/
                                                      //////////z/A//8                BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD////    ///////      ///4D/Hw             AAAAAAAAAAAD74//////////
                                                       +///8D/F8AAAAAA            AAAAAAf/v////////////7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAA       AAAAAw               If/////////////8f8/wP8FA
                                                        AAAAAAAAOCD///////     /////38P/f4D/DwAAAAAAAADgwf///////////z+P//8B/x8AAAAAAAAA8PH////////          ///               x/Yv//A/4/AAAAAAAAAPjw///
                                                        /////z3  f4//n+/wf8fwAAAAAAAAB8+P//////rw/m+f/h//8P+H8AAAAAAAAAfPj///8/9y4jBv3/w///P/D/AgA            AA             AAAAD78////XxeDY8T+/4f//z/g
                                                      /wUAAAA         AAAA+/P///w+VlXTg+/+f////wP8LAAAAAAAAP/z///+PE7D2wf//P////4D/HwAAAAAAAD/+////x          zCw      +s P//3////+B/38AAAAAAAA/        
                                                     /t//v8       s45v/v/////v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAAAAAgD/+z/737/7d//////////8H/v        8DAAAAAIA//s/+//d9/                       
                                                    /////      //////D/7/DwAAAACAP//n/v///////////////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAAAIA//      nP8////////////                             
                                                   ////P     /z/fwAAAACAP/5z/f///////////////z/4//8AAAAAgD/+f/z////////////+//8/+P//AAAAAIA//n/9////////       /////f//f/j/7w                           
                                                 AAAAC     Af/x//f//////v/////H//3/4/z8AAAAAgH/4//n//////3/8///j//9/4P9/AAAAAIB/eAD+/v //////8P//5////+D//        wAAAACAf3gA /                         
                                                P7///    ///9H//8f////g//8AAAAAAH90APv8//////9H///P////gf//AAAAAAD/+P//8f//////D/z/j//// 4H//wAAAAAA//z///H         //////x8IooP                        
                                               ///+D    //8AAAAAAP78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD  /wf2///n0QAABv7///+        H//9fAAAAAP z                      
                                              RAeAD    uv//DwAAgPn/////3///vQAAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/wf4//   /////0AwAAAPj3//8H        +P8PAAAAwB8 A                     
                                             +P///     ///6AcAAAD47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw///////gHwAAAPD ////    H//8HAAAAAAAA4P//        ////wG8AAADw/                    
                                             ///9     ///PwAAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD/////8P9/AAAAAAAAw  P///   ///AP7/BwDw/////+D       /IgAAAAAAAMD/                   
                                            /////   wD8/x8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////g  P///wDw////Hw  N   zA AAAAAAAAID//////8D       ///8A+P///z8I                  
                                           AAAAA    BwAAACA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8/  ///fw AAA    AAAEAAAAAD////  //+D/ //8Hvv7///8BAAAAAA       AAAAAA/v/////                 
                                          A////    Hz/+////AQAAAAAAAAAAAP7/////gP////8v/P///wMAAAAAA P A/AAD     +/  ////  wD/////I/z//58    DAAAAAMD/fwAA/v////8A/v       //A6D8//8fAA                 
                                          AAAAD    //38AAPz/////APz//89A/f//HyAAAADg//  8/A AD// /// /  wD   4   //     9 /gPz//x+AAAAA8P/    /HwCA//////8A0P///4H+///      /4wIAAPD//wc A              
                                         gP///    ///AID8/z8D/f////8HAAPg//8AAPD///// / wAA /   l8     BOP   //   /   // /D8ABAP4PAAD4/////    /8AAPQBAAD//////3/gAQAA       AAAA5P////// A             
                                         AB4AA    DA/v//////4QEAAAAAAOH//////wAAOIA7    7 / /  // / /  /  / /8B      AAAAA MDg//////8AAAzAAAD  8////////AwAAAAAY4P//////      AAADMAAA+P// /            
                                        ////wM    AAAAABOD//////wCAAQjg+fj///////9/A   AAA  g       AP g // ////8     AwAAD8B/5/////////z8AAPA  A4P//////AMCAAAQA9v/////       ////DfwAOAPD//           
                                        ////wD   AYAADAPD////////jA4D/AQDg//////8Aw   CB    AA      HD x / ///////    /QMAAAAA8P//////AIAAMIAF2 P////////0BAAAAAOD//////w      AAAwxAAOD///////         
                                        //AAAA   AADgf/D///8A AAMCGID///////// PQA A  AA   AAQ   P8  A+P//AAAHAAL4// ///////w8AAAAAAAD/AwDg/wAAD oAB//////////8PAAAAAAAA8       x/6A8AAADhAwP/ /        
                                       7//////   /BwAAAAAAAII f/v//AABgAMD/ fwD///    /// wcAAA   AA  AAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA7APgAAAAZwP//AfD/////AwAAAAAA      AAjAPwD8AAAAIsD /       
                                       /wPg///   //wEAAAAAAA  AI gB8A/gAAAM WA//8HIP /// /8AAAAAA AAA CAAcAP8AAICBgf//HxD+///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAAIA      OD//wAAYAAO/v//Dv      
                                       j/v3kAA   AAAAAAACADA  // 8AAGAAcPj//3DgPwF4 AAAAA AAAAA gAwM//AABgAIDx/4/B4R8AOAAAAAAAAAAIAMAfAAAAMAAA3v+DAAI/ADwAAAAAAAAACADwfwAAAD     AAAPh/wAF4/gA8AAAAA    
                                       AAAAAgA  +P8AAAA4AAD  AAe AAAPgBHAAAAAAAAAAIAP7/AQAAGAAAAHgwAADRA5wAAAAAAAAACMD//wMAAAAAAADACAAAgAKcAAAAAAAAAAj8//8D";n=Marshal.load(      b.unpack("m")[0]);e   
                                       ="eval$  s=%w"<<39<<  ($s  *10);o="";j=-1;0.up to(104*200-1){|i|o<<((n[i]==1)?e[j+=1]:32);o<<((i%200==199)?10:"")};o.rstrip!;o[-6,6]="     "<<39<<".join";puts(o 
                                       )#b="BA   hsKwIUBQA  AAA   AAgP8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/AQAAwP//PwD4/////wHAAAAAAAAA/h/8HwAA8P///38A+APA//8BwAAAAAAAAPD//w    EA+P//////AP4HHAD/B/A 
                                       AAAAAAA   DA/z8AwP/  /// / //8Mf+AcA////AAAAAAAAgP8/APz/////////D/gBAP///wAAAAAAAAD//4P//////////wfgAID///8AAAAAAAAAf/7///////////8DwAD     g////AAAAAAAAwB/A////
                                       ///////   /D8CB/f//AAAAA   AAAAOAH/P///////////z/A//8BAAAAAAAAAADwgf////////////8/8P8HAAAAAAAAAAAA+OD//// //////////4D/HwAAAAAAAAAAAD74     //////////+///8D/F8AA
                                       AAAAAAA   AAAf/v//////// / ///7/B/D/AAAAAAAAAACAD//////////////8/x/g/wIAAAAAAAAAwIf/////////////8f8/wP8FAA AAAAAAAOCD////////////38P/f4D    /DwAAAAAAAADgwf// ///
                                       //////z+   P//8B/x8AAAAA A AAA8PH///////////x/Yv//A/4/AAAAAAAAAPjw////////z3f4/ /n+/wf8fwAAAAAAAAB8+P/////   /rw/m+f/h//8P+H8AAAAAAAAAfP    j///8/9y4jBv3/w///P  
                                       /D/AgAAA    AAAAD78////Xxe  DY8T+/4f//z/g/wUAAAAAAAA+/P///w+VlXTg+/+f////wP8LAAA   AAAAAP/z///+PE7D2wf//P//   //4D/HwAAAAAAAD/+////xzCw+      sP//3////+B/38AAAA 
                                       AAAA//t/    /v8s          45v/v// ///v//Af+/AAAAAACAP/7f//fDfcz//////////wP/fwEAA    AAAgD/+z/737/7d////////  //8H/v8DAAAAAIA//s/+//d9///     /////////D/7/DwAAAA
                                       CAP//n/v    ////           ////// /////w/8/x8AAAAAgD//5/z/3/////////////8f/P9/AAAA   A IA//nP8//////////////   //P/z/fwAAAACAP/5z/f//////     /////////z/4//8AAAA
                                        AgD/+f/   z ///         // /////  //+//8/+P//AAAAAIA//n/9/////////////f//f/j/7wAAAA   C Af/x//f//////v/////H  //3/4/z8AAAAAgH/4//n//////3      /8///j//9/4P9/AAA
                                        AAIB/eAD   +/v//////8P//5////+D//   wAAAACAf3gA/P7//////9H//8f////g//8AAAAAAH90APv8/      /////9H///P////gf/   /AAAAAAD/+P//8f//////D/z/j      ////4H//wAAAAAA//
                                        z///H///  ///x8IooP///+D//8AAAAAA   P78///N//////9/AAAA////g///GwAAAAD+4f//T/////7/Tw      D     4   w f//     /4f//y8AAAAA/sGD/wf2///n0QA     ABv7///+H//9fAAAA
                                         APzRAeA  Duv//DwAAgPn/////3///vQ AA  AAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAA                         ACA/wf4///////0AwAAAPj3//8     H+P8PAAAAwB8A+P//
// //                                    6AcAAAD4    7///F/7/HwAAAAABAPD////  / //APAAAA+P///4P//ycAAAAA AADw///////gHwAAAPD  /            ///H//     8HAAAAAAAA4P//////wG8AAADw///    /9///PwAAAAAAAOD/
//// /                                   4B/AAAA8     P///     //7/38AAAAAA      AD g//////8AnwEAAPD/////8P  9/AA   A AA                 AA      AwP//////AP7/BwDw/////+D/IgAAAAAAA    MD//////wD8/x8A8P
///// g                                   DxwAAAA   A AAD            A////       / /8A /v8/APD///9/wAEHAAAAA                           AA  AgP//////gP///wDw////HwNzAAAAAAAAAID////// 8D///8A+P///z8IAAA
A ABwA A                                  ACA////   / //          g////Afj         ///8  /AAAAAAAEAAAAAP   /                          /  ////4P///wN8////fwAAAAAAEAAAAAD//////+D///8Hvv7///8BAAAAAAAAAAA
 A /v/ ///                                /A////Hz  /+////AQAAAAAAAAAAAP7//      //     /gP////8   v/                                  P///wMAAAAAA        PA/AAD+/////wD/////I/z//58DAAAAAMD/fwAA/v////
  8 A/v//A                                 6D8//8fA AAAAAD//38AAPz/////APz/        /89A/f//HyAAAADg/                                  /8/AAD/              /////wD4//9/gPz//x+AAAAA8P//HwCA//////8A0P///
   4 H+////                                4wIAAPD// wcAgP//////AID8/z8D/f/ /    //8HAAPg//8AAPD/////                                   /                   wAA/l8BOP//////D8ABAP4PAAD4//////8AAPQBAAD//
    ////3/gA                               QAAAAAA5P//////AAB4AADA/v//////     4QEAAAAAAOH//////wAA  O                                                      IA77/////////8BAAAAAMDg//////8AAAzAAAD8/////
     ///AwAAA                               AAY4P//////AAADMAAA+P///////wMA   AAAABOD//////wCAAQjg+                                                          fj///////9/AAAAgAPg//////8AwAAD8B/5////////
      /z8AAP AA                             4P//////AMCAAAQA9v/////////DfwA OAPD//////wDAYAADAPD//////                                                       //jA4D/AQDg//////8AwCBAAHDx/////////QMAAAAA
       8P//////                             AIAAMIAF2P////////0BAAAAAOD//////wAAAw xAAOD/////////AAAAAA                                                      Dgf/D///8AAAMCGID/////////PQAAAAAAQP8A+P//A
        AAHAA  L4                           /////////w8AAAAAAAD/AwDg/wAADoAB////    //////8PAAAAAAAA8x/                                                       6A8AAADhAwP//7///////BwAAAAAAAIIf/v//AABgA
         MD/fwD//////wcAAAA                 AAAAE+vj//wAAwATg//8A+P////8DAAAAAAA     ACPA7APgAAA A   Z                                                        wP//AfD/////AwAAAAAAAAjAPwD8AAAAIsD//wPg//
          ///wEAAAAAAAAIgB8A/               gAAAMWA//8HIP////8AAAAAAAAACAAcAP8AA     ICBgf//      HxD                                                         +///3AAAAAAAAAAgAeMD/AACAAAf///8R/P//+wAAA
         AAAAAAIAOD//wAAYAAO/v              //Dvj/v3kAAAAAAAAACADA//8AAGAAcPj//       3Dg       PwF                                                            4AAAAAAAAAAgAwM//AABgAIDx/4/B4R8AOAAAAAAA
       AAAIAMAfAAAAMAAA3v+DAAI/A            DwAAAAAAAAACADwfwAAADAAAPh/wAF4/g   A8      AA  AAA                                                                AAAAAgA+P8AAAA4AADAAeAAAPgBHAAAAAAAAAAIAP
      7/AQAAGAAAAHgwAADRA5wAAAAA           AAAACMD//wMAAAAAAADACAAAgAKcAAAAAAA     A                                      AAj                                  8//8D";n=Marshal.load(b.unpack("m")[0]);e
     ="eval$s=%w"<<39<<($s*10);o=          "";j=-1;0.upto(104*200-1){|i|o<<((n                                            [                                     i]==1)?e[j+=1]:32);o<<((i%200==199)?10:"
     ")};o.rstrip!;o[-6,6]=""<<39<        <".jo in";puts(o)#b="BAhsKwIUBQAAAAAA                                             g                                   P8BwP8/AAAAAPg/APgB+P//A+AAAAAAAAD+B/D/A
     QAAwP//PwD4/////wHAAAAAAAAA/h/      8HwAA 8 P///38A+APA//8BwAAAAAAAAPD//wEA+                                                                                P//////AP4HHAD/B/AAAAAAAADA/z8AwP//////
      /8Mf+AcA////AAAAAAAAgP8/APz////   /////D   /gBAP///wAAAAAAAAD//4P//////////                                                                                wfgAID///8AAAAAAAAAf/7///////////8DwADg
       ////AAAAAAAAwB/A////////////D8CB/f//A A    AAAAAAAOAH/P///////////z/A//8BAA                                                  AAAAAAAADw                   gf////////////8/8P8HAAAAAAAAAAAA+OD////
        //////////4D/HwAAAAAAAAAAAD74/////   /    ////+///8D/F8AAAAAAAAAAAAf/  v//                                            //////////7/B/D/A                  AAAAAAAAACAD//////////////8/x/g/wIAAAAA
         AAAAwIf/////////////8f8/w           P 8  FAAAAAAAAAOCD////////////38                                           P/f4D/DwAAAAAAAADgwf///                   ////////z+P//8B/x8AAAAAAAAA8PH////////
          ///x/Yv//A/4/AAAAAAAAAPjw/  //      / / ///z3f4//n+/wf8fwAAAAAAAAB8        +                               P//////rw/m+f/h//8P+H8AAA                  AAAAAAfPj///8/9y4jBv3/w///P/D/AgAAAAAAAD
           78////XxeDY8T+/4f//z/g/wUAAA        A  AAAA+/P///w+VlXTg+/+f////wP          8                            LAAAAAAAAP/z///+PE7D2wf//                  P////4D/HwAAAAAAAD/+////xzCw+sP//3////+B/
            3 8AAAAAAAA//t//v8s45v/v/////      v //Af+/AAAAAACAP/7f//fDfcz////////   //w P                          /fwEAAAAAgD/+z/737/7d//                    ////////8H/v8DAAAAAIA//s/+//d9///////////
               /  D/7/DwAAAACAP//n/v//  //      / //////////w/8/x8AAAAAgD//5/z/3///////////             //           8f/P9/AAAAAIA//nP8/                    ///////////////P/z/fwAAAACAP/5z/f///////////
                 ////z/4//8AA A A          AgD  /+f/z////////////+//8/+P//AAAAAIA//n/9//////          ///                ////f//f/j/                       7wAAAACAf/x//f//////v/////H//3/4/z8AAAAAgH/4/
                  / n////                       //3/8///j//9/4P9/AAAAAIB/eAD+/v//////8P//5////+      D//w                                                 A  AAACAf3gA/P7//////9H//8f////g//8AAAAAAH90AP
                   v8//                       // //9H///P////gf//AAAAAAD/+P//8f//////D/z/j////4H/    /wAA                                               A    AAA//z///H//////x8IooP///+D//8AAAAAAP78///N
                   ///         /// 9/A  AAA/ ///g///GwAAAAD+4f//T/////7/TwD4wf///4f//y8AAAAA/sGD/wf2///n0                                             QA     ABv7///+H//9fAAAAAPzRAeADuv//DwAAgPn/////3/
                  //          vQ                  AAAAD80QD8A3j+/wgAAED+/////////7oDAAAA/PP//wcG/xgAAACA/w                                         f4        ///////0AwAAAPj3//8H+P8PAAAAwB8A+P//////6Ac
                AA          AD                     47///F/7/HwAAAAABAPD///////APAAAA+P///4P//ycAAAAAAADw//                                        /          ////gHwAAAPD////H//8HAAAAAAAA4P//////wG8AAA
               Dw          /         ///9  ///Pw   AAAAAAAOD//////4B/AAAA8P/////7/38AAAAAAADg//////8AnwEAAPD///                                //8           P9/AAAAAAAAwP//////AP7/BwDw/////+D/IgAAAAAA
              AM        D/          /////wD8/   x  8A8P/////gDxwAAAAAAADA//////8A/v8/APD///9/wAEHAAAAAAAAgP//////gP///                      wDw/             ///HwNzAAAAAAAAAID//////8D///8A+P///z8IAAAA
              AB       w          A              AA CA///////g////Afj///8/AAAAAAAEAAAAAP//////4P///wN8////fwAAAAAA    EAAAAAD//          ///                /+D///8Hvv7///8BAAAAAAAAAAAA/v/////A////Hz/+
              //     //         AQ                  AAAAAAAAAAAP7/////gP////8v/P///wMAAAAAAPA/AAD+/////wD/   ////I             /z//58DAAA                    AAMD/fwAA/v////8A/v//A6D8//8fAAAAAAD//38AAP
              z/     /        /             //A P   z//89A/f//HyAAAADg//8/AAD//////wD4//9/gPz//x+AAAAA8P/ /HwCA///                                          ///8A0P///4H+////4wIAAPD//wcAgP//////AID8/z8
               D            /f         // /        /8 HAAPg//8AAPD//////wAA/l8BOP//////D8ABAP4PAAD4////// 8AAPQBA                                            AD//////3/gAQAAAAAA5P//////AAB4AADA/v//////
                4Q        EA          A              AAAAOH//////wAAOIA77/////////8BAAAAAMDg//////8AAAzAAAD8////                                             ////AwAAAA     AY4P//////AAADMAAA+P///////w
                MA       A         AA          ABOD//////wCAAQjg+fj///////9/AAAAgAPg//////8AwAAD8B/5///// ////                                                z 8AAPAA4P           //////AMCAAAQA9v/////
                ///              /         DfwAOAPD//////wDAYAADAPD////////jA4D/AQDg//////8AwCBAAHDx////////                                                    /QMAAAAA8P                   //////AIAAM
                 IAF           2P       ////////0BAAAAAOD//////wAAAwxAAOD/////////AAAAAADgf/D///8AAAMCGID///                                                    //  ////PQAAA    A AAQP8A+            P/
                   /AA        A       HAAL4/////////w8AAAAAA AD/AwDg/wAADoAB//////////8PAAAAAAAA8x/6A8AAADh                                                      A     wP//7/    //////BwAAAAAAAIIf/v//A
                     AB               gAMD/fwD//////wcA         AAAAAAAE+vj//wAAwATg//8A+P////8DAAAAAAAACPA                                                       7      A PgAAA   AZwP//AfD/////AwAAAAA
                      AA  A          jAPwD8AAAAIsD//wPg/           ////wEAAAAAAAAIgB8A/gAAAMWA//8HIP////8A                                                         A        AAAAAA ACA             AcAP8
                        A  AI         CBgf//HxD+///3AAAAA           AAAAAgAeMD/AACAAAf///8R/P//+wAAAAAAAAA                                                         I          AOD//wAA            YAAO/v
                         /   /        Dvj/v3kAAAAAAAAACADA           //8AAGAAcPj//3DgPwF4AAAAAAAAAAgAwM//                                                          A           ABgAID            x/4/B4R
                        8 A   OA       AAAAAAAAAIAMAfAAAAMA          A  A3v+DAAI/ADwAAAAAAAAACADwfwAAADA                                                           A              APh           /wAF4/gA
                       8A      AA      AAAAAAAgA+P8AAAA4AADAA       e    AAAPgBHAAAAAAAAAAIAP7/AQAA GAAA                                                           A               HgwA       ADRA5wAAAA
                       A        AAA     ACMD//wMAAAAAAADACAAAgAKc   A     AAAAAAAAAj8//8D";n=Marsh al.lo                                                           a                 d(b.unpack("m")[0])
                     ;e          ="e     val$s=%w"<<39<<($s*10); o="       ";j=-1;0.upto(104*2 00  -1){                                                            |                  i|o<<((n[i]==1)?e[
                     j+             =1]    :32);o<<((i%200==199)    ?10      :"")};o.r  s          trip                                                            !                  ;o[-6,  6]=""<<39<
                     <"                .j   oin";puts(o)#b="   BA     hsK    wIUBQAAA              AAA                                                             g                  P8BwP8/           
                    AA                   AAAP g/APgB+P//A+     A         A      AAAAAA            D+B/                                                             D                /AQAAwP//Pw         
                    D4                     /////wHAAAAA       AAA          A/h/  8HwAA8P          ///3                                                             8               A+APA//8BwAAA        
                   AAA                        AAP            D//                   wEA+P/         ///                                                              /             /AP4HHAD/B/AAAAA       
                   AA                              ADA/     z8                  A   w P///        ///  /                                                           8          Mf+AcA////AAAAAAAAgP      
                                                      8/   A                           P z        ///  /                                                           /      ////D/gBAP///wAAAA'.join

結論

本記事ではQuineアートの生成方法について解説を行いました。
本記事の手法を応用することで、任意のアスキーアートを用いたQuineアートを作成することができます。
Quineアートに興味のある方はぜひ挑戦してみてください。

謝辞

本記事を作成するに当たり、下記の方々が作成された情報を参照いたしました(敬称略)
謹んで御礼を申し上げます。

  • 図月つくる, ライヴラリ所属, 株式会社ゆにクリエイト

本記事を作成するに当たり、下記の言語について取り扱いました。
謹んで御礼を申し上げます。

  • Ruby, Rubyコミュニティ
脚注
  1. 図月つくるさんのTwitterアカウント YouTubeチャンネル ↩︎

  2. DIY作品募集の告知1 告知2 ↩︎

  3. 筆者の投稿ツイート ↩︎

  4. クワイン ↩︎

  5. アスキーアート ↩︎

  6. Ruby ↩︎

Discussion

ログインするとコメントできます