先輩の学年の授業のプログラミングの課題を見せられてコードゴルフして遊んでいました。
問題の概要としては、
- 1以上999以下の数を一つ入力し、
- 1からその数までをそれぞれ13で割った余りの分布を例のような感じで表示する。
INPUT:
30
OUTPUT:
0:13,26 1:1,14,27 2:2,15,28 3:3,16,29 4:4,17,30 5:5,18 6:6,19 7:7,20 8:8,21 9:9,22 10:10,23 11:11,24 12:12,25
んで結局こうなりました。
i,p,x;main(){ for(scanf("%d",&x);i<13&&printf("%d:",i);) for(p=i++;p<=x;p+=13) p&&printf("%d%c",p,p+12<x?44:10); }
こんなもん短くしたからなんだと言った感じですが、楽しかったので。
正直ショートコーディングのテクニックって分からない・・・。
(ちなみに正規ルートだと二次元配列を使うらしいです。[恐らくこれが999以下の理由])