問:次のコードの空欄を埋めて、その下の表示が出るようにせよ。

#include <stdio.h>

int main(void) {
  int i;

  i = 1;
  while (空欄) {
    printf("%d\n", i);
  }
}

出力:

1
2
3
4
5
6
7
8
9
10

条件

このプログラムはC言語だが、ほかの言語でも同じないようであればOK。
カウントは"空欄"部分のみ。

とある教授はプラットフォーム依存で16バイト、とある教授はプラットフォーム非依存で16バイト。

提出

C言語

  • 10.03.16 kurohuku GCC4.2.4 (Ubuntu 8.04) 30バイト
    i==1?printf("%d\n",i++):i++<10
    

    久々に更新されてたのでやってみた.とりあえず動く.

  • 10.03.19 Takashi GCC4.2.1 (MacOSX 10.5.8) 16bytes.
    0);for(;i<11;i++
    
  • 10.03.22 siso GCC4.1.2 (Red Hat 4.1.2)
    • kurohukuさんの改変 20bytes
      ~-i++?i<11:puts("1")
      

      2の補数を計算する過程で1ビット足した後に、1の補数を取ると-1された値に

    • オリジナル(その1) 27bytes
      i=0);for(;(i=10*i/10+1)<11;
      

      最適化すると上の方で見た形に。

    • オリジナル(その2) 29bytes
      printf("%d\n",i++)<3);while(0
      

      ふと戻り値を使ってみたが、長すぎる。空欄以外も含めると今のところは最短。

ruby

プログラム

i = 1
while ここに何か書く
 printf "%d\n", i
end

ん?

できなくね? by masawaki
  • 10.04.24 Zauberer ruby 1.8.6 18bytes
    puts((1..10).to_a)
    

    反射的にやってみた.まだ工夫の余地はあるかも.

  • HTML
  • PDF
RSS2.0 RSS1.0 Atom1.0