ふと思い立って九九を表示するプログラムを考えてみる
課題は「できるだけサイズが小さいコード」で書くこと
結果C/C++で83バイトを達成
んでJavaやDだとどんなもんかなと思い試してみるも基本的なロジックは同じになってしまいサイズも減らすことはできなかった
#include
main(){for(int i=9;i<99;)printf(++i%10?"%3d":"\n",i/10*(i%10));}
ただそのとき気付いたことが一つ
とりあえず以下のコードを見てもらいたい
C/C++
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
#include
main(){
int i=0,j=0;
printf(++i?"%d %d\n":"",i,j);
printf("i=%d j=%d\n",i,j);
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 0
i=1 j=0
========================================
JAVA
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
class test{
public static void main(String[] args){
int i=0,j=0;
System.out.printf(++i!=0?"%d %d\n":"",i,j);
System.out.printf("i=%d j=%d\n",i,j);
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 0
i=1 j=0
========================================
D
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
import std.stdio;
void main(){
int i=0,j=0;
printf(++i?"%d %d\n":"",i,j);
printf("i=%d j=%d\n",i,j);
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0 0
i=1 j=0それぞれ各言語のコードと結果である
注意すべきはDの三項演算子の条件句
前置インクリメントをしているのだが、同じ行の実行結果に影響を与えていない
自分は今までCやJAVAな動作が正しいと思っていたのでDコンパイラのバグかと思うんだがどうなんだろうか
誰か詳しく解る偉い人居たら教えて欲しいです