はじめに
@pikさんの公開された記事『[Delphi][小ネタ]しかのこのこのここしたんたん』のC言語版です。
問題へのリンク:
実際書いてみたコード
101バイト
main(i){for(;++i<72;)printf("%.*s",3+3*(377>>i%7*2&3),"しかのこたん""\n"+3*(107556>>i%7*3&7));}
実行結果
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
しかのこのこのここしたんたん
とりあえずのたたき台的なやつです。もっと短くできる書き方があれば更新していきたいと思います。
文字コードはUTF-8を想定しておりひらがな1文字を3バイトで計算しています。
しかのこのこのここしたんたん≪改行≫✕10を、"しかのこたん"という文字配列一つから生成せよ
という問題内容からは改行の仕方がインチキくさいことは自覚しています。
1文字づつ出力したほうが短かった(8/25追記)
92バイト
main(i){for(;++i<152;)printf("%.3s","しかのこたん""\n"+3*(20619507376693>>i%15*3&7));}
出力する文字のオフセットを文字列リテラルで持ったほうが短かった(8/31追記)
90バイト
main(i){for(;++i<152;)printf("%.3s","しかのこたん""\n"+"psadgjgjgjjampm"[i%15]-97);}
おわりに
おわりです