ペースダウン

ゴルフやるペースがすっかり落ちてしまった。
モチベーション上げて行こう。

transpose lines

入力された文字列を縦読みして出力しろっていう問題。
最初の方針として文字列を全て読み込んでから、1行の長さを判断して1文字づつ縦読みしていく方針で挑んでみた。
長くなりそうだなと思いつつ、とりあえず作ってみたけど案の定長くなってしまってへこむorz
そこから軽く削ってみてやっぱり駄目だと思って放棄。
出力用の文字列を作っておいてまとめて出力する方針に変更して106Bまで縮んだ。
まだまだ無駄が多いけど80B台まで削っていけるかな・・・


106B

char c[99][99];
j, k, l;

main(i)
{
  for(; (i = getchar()) > 0;)
    i > 10 ? c[j++][k] = i : (l = j, j = 0, k++);
  for(; j < l;)
    puts(c[j++]);
}

記録として最初のコードもぺたり。
124B版

char c[];
j, k , l, m;

main(i)
{
  for(i = read(0, c, 999), j = strchr(c, 10) - c; m < j;)
    l < i / (j + 1) ? putchar(c[k]), k += j + 1, l++ : (puts(""), k = ++m, l = 0);
}

119B版

char c[];
j, k , l, m;

main(i)
{
  for(j = read(0, c, 999), i += strchr(c, 10) - c; m < i;)
    l < j / i ? putchar(c[k]), k += i, l++ : (puts(""), k = ++m, l = 0);
}