7行プログラミング


昔の自分で書いたプログラムソースを見て思い出した。


そういえば昔 2ch で7行プログラミングが盛り上がってたころにやってたなぁ。

もともとは、こちらの7行でDVD暗号を解読するプログラムから始まって、盛り上がっていたときには倉庫番とかテトリスも7行で書かれていた。

初代スレッドはここ


そのときはJavaをよく使っていて、Javaで7行プログラミングしてた。

今見てもあまりいい出来だと思わないが、、、作品は以下。

  • 時計
import javax.swing.*;import java.util.Date;import java.text.*;import java.awt.
event.*;class C{public static void main(String[] a){new JFrame(){Date d=new
Date();SimpleDateFormat f=new SimpleDateFormat("yyyy/MM/dd(E) HH:mm:ss");JLabel
t;{setDefaultCloseOperation(3);getContentPane().add(t=new JLabel(f.format(d)));
new Timer(1000,new ActionListener(){public void actionPerformed(ActionEvent e){
d.setTime(System.currentTimeMillis());t.setText(f.format(d));}}).start();pack()
;show();}};}}
  • 画像ビューア
import javax.swing.*;import java.awt.event.*;class I{public static void main(
String[] a){new JFrame(){JLabel l=new JLabel();{setSize(600,480);JToolBar t=new
JToolBar();JButton b=new JButton("開");b.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e){JFileChooser f=new JFileChooser();
if(f.showOpenDialog(l)==0)l.setIcon(new ImageIcon(f.getSelectedFile().getPath()
));}});setDefaultCloseOperation(3);getContentPane().add(t,"North");t.add(b);
getContentPane().add(new JScrollPane(l));show();}};}}
import java.util.*;import javax.swing.*;class S{public static void main(String[
] a){new JFrame(){{Map m=new TreeMap(System.getProperties());Set e=m.keySet();
int i=0,s=e.size();setDefaultCloseOperation(3);String[][]d=new String[s][];for(
Iterator k=e.iterator();i<s;i++){String v=(String)k.next();d[i]=new String[]{v,
(String)m.get(v)};}getContentPane().add(new JScrollPane(new JTable(d,new String
[]{"key","value"})));pack();show();}};}}


いくつかはスレッドにも書き込みした記憶があるが、どれだったか・・・


他にも、7行じゃできなかったけど、10行のWebブラウザとか、Telnetクライアントとかを発見した。

やっぱJavaだとそれほど汚くならないなぁ。


クラス名が長いのでそれほどのものは作れそうにない気がするけど、やっぱり汎用的なライブラリは充実しているので、結構いろいろ作れる。


で今はPerlをメインに使っているけど、Perlを7行に逆リファクタリングすると多分自分でもわかんなくなるだろうな。