謹賀新年

あけまして、おめでとうございます。

プログラマ書き初め大会をやったら面白いんじゃないかと思った。プログラムで「謹賀新年」を出力するってやつ。出力先はコンソール、Windowsフォーム、ブラウザなんでもあり。もちろんFlashCanvasを使った動的な視覚化もありってルールで

http://twitter.com/#!/kojo_sugita/status/20743093800140800

謹んで以下のプログラムと画像でご挨拶申しあげます。

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;


public class NewYear {
  public static void main(String[] args) {
    try {
      BufferedImage img = ImageIO.read(new File(args[0]));
      for(int y = 0; y < img.getHeight(); y++) {
        for(int x = 0; x < img.getWidth(); x++) {
          System.out.print(img.getRGB(x, y) == 0xFFFFFFFF ? " " : "*"); 
        }
        System.out.println();
        Thread.sleep(50L);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

// 出力

                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                     **                         
                                                   *******                      
                        *****                      *********                    
                   ************         *           ********                    
                   *************        ***          *******                    
                    *************       ****         *******                    
                      ************      *****        *******                    
                       ************     ******      ************                
                         **********      *****  *******************             
                        ***********      ****************************           
                       ************   *******************************           
                      ********        *******************************           
                                        *************************               
                             ****        *****************                      
                         *********       *******  *******                       
                    ****************      ****** ********                       
             ***********************      ****** *******                        
      ******************************      *************                         
     ******************************        ***********                          
     ***************************            *********                           
      **************   *******              *******     *******                 
        *******       *****                 **********************              
                      **           *       *************************            
                     ********     ****  *****************************           
                   ***********     ********************** ***********           
                  ************     ********************   ***********           
                  ************     ********     *******  ***********            
                   **********       ******      *******************             
                    *******         *******     ******************              
                      *              ****************************               
                        ****         **************************                 
                   ***********        **********************                    
                 **************        ****************                         
                 **************         ****    ******                          
                   ***********                  **************                  
                    *********                 *****************                 
                   ********                ********************                 
                   ******               *********************                   
                  ******               ********************                     
                 *****                 *****************                        
                ****                            ******                          
                **       ********              ***************                  
                      ************            *****************                 
           ***      ***************         *******************                 
           ****   *****************       ********************                  
           ************************       *****************                     
            ************  *********         ************                        
            *********     ********           *********                          
            *******      ********            *********                          
             *******    *********             ************                      
             ******** **********              *********************             
              *****************          ****************************           
               ***************        ********************************          
               **************     *************************************         
                ************      **************************************        
                 **********        *************************************        
                  ******                                    ************        
                   ***                                                          
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                             *****                                              
                            ********                                            
                           *********                                            
                             *******                                            
                             *******                                            
                             ******                                             
                            *******                                             
                            ********                                            
                           ***********               *************              
                         **************           *****************             
                       ****************  **      *******************            
                     ******************* ***   *********************            
                   *************  ****** **** **********************            
                  *************   ****** ***********      *********             
                   ***********    ******  ********       *********              
                     *********   *******  *******      **********               
                     ********    ******   *******     **********                
                    ********    *******    *******   **********                 
                   *********    *******    ********************                 
                ***********   ********      *******************                 
                **********************      ********************                
                *********************        *******************                
                ******** ************          ****                             
                *******   **********        ******                              
                 *****    *********     ************                            
                  ***      *******     **************                           
                            *******   *******  ******                           
                                ***  *****     *******                          
                                ***  ***        ******                          
                               ****             *******                         
                               **************   *******                         
                               **************   *******                         
                              ***** *********   *******                         
                              *****  ********   *******                         
                              *****   ******    *******                         
                             ******   *****     *******                         
                             ******  *****      *******                         
                             ****** ****         *******                        
                            ****** ********      *******                        
                            ****** *********     *******                        
                            ******  ********     *******                        
                            ******   *******     *******                        
                            ******   ******      *******                        
                           ******   ******       *******                        
                           ******   ****   ***   *******                        
                           ******        ***************                        
                           ******     ******************                        
                           *****************************                        
                         **********************  *******                        
                      ************************    ******                        
                      ***********************     ******                        
                      *********************        ****                         
                      ********************      ******                          
                       ******* **********     **********                        
                        ***  ***********       **********                       
                            **********          ***********                     
                          ***********            ***********                    
                        ************               **********                   
                      ************                  *********                   
                     ***********                    **********                  
                     *********                      *********                   
                      ******                          *******                   
                                                       ******                   
                                                         **                     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                              **                                                
                          *********                  *****                      
                         ***********              **********                    
                          **********             ************                   
                            ********              ***********                   
                             *******              ************                  
                              ******              ************                  
                                                 ************                   
                      *                         ************                    
                      **     ****               **********                      
                      *************            *********                        
                       *************          *********                         
                       *************         ********                           
                        ***********          *******                            
                          *************     ******                              
                         ***************    *****                               
                       *****************   *****                                
                       *****************   ****                                 
                       *****************   ****                                 
                       ******* ********    *****                                
                        ****  ********     *****                                
                        *   *********      *****                                
                           **********      ******              *******          
                        **************     ******          *************        
                      ****************     ******      *****************        
                  ******************       ******   *********************       
             **********************        *****************************        
        ***************************        ***********************              
        ****************************      ******************                    
         ****************************     *******************                   
              ****    ****************    ********   ********                   
                    ******************    *******     ********                  
                   ******************    *******      ********                  
                 *******************     *******      ********                  
                 *****************       *******      ********                  
                 ****************        *******      ********                  
                 ****************       *******       ********                  
                 ********** *********   *******       ********                  
                  ******    *******************       ********                  
                         ** *******************       ********                  
                      ****  ******************        ********                  
             **    ******   *****  ******* **         ********                  
            ************   ******    ***              ********                  
            *************  ******                     ********                  
            ********** **********                     ********                  
             ********  **********                     ********                  
               *****    ********                      ********                  
                         *******                      ********                  
                         *******                      ********                  
                          ******                      ********                  
                          ******                      ********                  
                           *****                       ******                   
                            ***                        ******                   
                             **                        ******                   
                                                       ******                   
                                                       *****                    
                                                      ******                    
                                                      *****                     
                                                     *****                      
                                                     ****                       
                                                    ***                         
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                         ***                                                    
                         *****                                                  
                          *****                                                 
                          ******                                                
                         *******        **************                          
                         ******* **********************                         
                        *******************************                         
                       ********************************                         
                      *********************************                         
                      ***********       ************                            
                     ***********         *********                              
                    **********           *******                                
                    *********           *******                                 
                    ********           ********                                 
                    *******          **********                                 
                    ******     ***  *************                               
                     ****     ********************                              
                      **      ********************                              
                              *******************                               
                              ******************                                
                               ****************                                 
                                **   **********                                 
                                   ************                                 
                                  *************                                 
                                       ********                                 
                             ********  ********                                 
                         ************* ********                                 
                        ************** ********                                 
                         ************* ********                                 
                           **********  ********                                 
                           *********   ********                                 
                          ********     ********                                 
                         ******** ******************************                
                        ******************************************              
                       ********************************************             
                      **********************************************            
                  ***************************************************           
            *************************  ********       ***************           
           ********************        ********              *******            
           ***************             ********                                 
           ***********                 ********                                 
            *******                    ********                                 
             ***                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       ********                                 
                                       *******                                  
                                       *******                                  
                                       *******                                  
                                       *******                                  
                                       *******                                  
                                        ******                                  
                                        ******                                  
                                        ******                                  
                                        *****                                   
                                         ****                                   
                                         ****                                   
                                          **                                    
                                          **