2015年01月09日

【ですころ8】Javaゴルフ講座

はい、またまたデスマコロシアムですよ。
ですころ8でもJavaの最短賞です!
しかもバーは今回はベスト8まで進出!Javaという不利言語の割には頑張りました!

今回の問題は
BAAAAAAAAAAAAAAAAAAAAAAAA
ACAAAAAAAAAAAAAAAAAAAAAAA
AADAAAAAAAAAAAAAAAAAAAAAA
AAAEAAAAAAAAAAAAAAAAAAAAA
AAAAFAAAAAAAAAAAAAAAAAAAA
AAAAAGAAAAAAAAAAAAAAAAAAA
AAAAAAHAAAAAAAAAAAAAAAAAA
AAAAAAAIAAAAAAAAAAAAAAAAA
AAAAAAAAJAAAAAAAAAAAAAAAA
AAAAAAAAAKAAAAAAAAAAAAAAA
AAAAAAAAAALAAAAAAAAAAAAAA
AAAAAAAAAAAMAAAAAAAAAAAAA
AAAAAAAAAAAANAAAAAAAAAAAA
AAAAAAAAAAAAAOAAAAAAAAAAA
AAAAAAAAAAAAAAPAAAAAAAAAA
AAAAAAAAAAAAAAAQAAAAAAAAA
AAAAAAAAAAAAAAAARAAAAAAAA
AAAAAAAAAAAAAAAAASAAAAAAA
AAAAAAAAAAAAAAAAAATAAAAAA
AAAAAAAAAAAAAAAAAAAUAAAAA
AAAAAAAAAAAAAAAAAAAAVAAAA
AAAAAAAAAAAAAAAAAAAAAWAAA
AAAAAAAAAAAAAAAAAAAAAAXAA
AAAAAAAAAAAAAAAAAAAAAAAYA
AAAAAAAAAAAAAAAAAAAAAAAAZ

というのを出力するだけの簡単なお仕事です。

まずは、ゴルフ意識せずに書いてみましょう。

わかりやすいので説明は省略!(えー
まあ、ちょっと特殊なのはimport staticですが、これは前回のデスマで教えて頂いた技なので省略。
まあ、それでも解説しますと、25おきに改行、26おきにA+α、それ以外はA(65)を出力しています。

さて、これをどうやって短くするかですけど、かなり厳しいです。
色々といじくり回して出たのがこれ。

やってることは変わりません。あまり短くなりませんね。
ここで、出力内容をもう一度見直してみます。
改行コードを*に置き換えると
BAAAAAAAAAAAAAAAAAAAAAAAA*A
CAAAAAAAAAAAAAAAAAAAAAAA*AA
DAAAAAAAAAAAAAAAAAAAAAA*AAA
EAAAAAAAAAAAAAAAAAAAAA*AAAA
FAAAAAAAAAAAAAAAAAAAA*AAAAA
GAAAAAAAAAAAAAAAAAAA*AAAAAA
HAAAAAAAAAAAAAAAAAA*AAAAAAA
IAAAAAAAAAAAAAAAAA*AAAAAAAA
JAAAAAAAAAAAAAAAA*AAAAAAAAA
KAAAAAAAAAAAAAAA*AAAAAAAAAA
LAAAAAAAAAAAAAA*AAAAAAAAAAA
MAAAAAAAAAAAAA*AAAAAAAAAAAA
NAAAAAAAAAAAA*AAAAAAAAAAAAA
OAAAAAAAAAAA*AAAAAAAAAAAAAA
PAAAAAAAAAA*AAAAAAAAAAAAAAA
QAAAAAAAAA*AAAAAAAAAAAAAAAA
RAAAAAAAA*AAAAAAAAAAAAAAAAA
SAAAAAAA*AAAAAAAAAAAAAAAAAA
TAAAAAA*AAAAAAAAAAAAAAAAAAA
UAAAAA*AAAAAAAAAAAAAAAAAAAA
VAAAA*AAAAAAAAAAAAAAAAAAAAA
WAAA*AAAAAAAAAAAAAAAAAAAAAA
XAA*AAAAAAAAAAAAAAAAAAAAAAA
YA*AAAAAAAAAAAAAAAAAAAAAAAA
Z

おおお?これって27文字ごとに処理すればいいんでは?
つまり
・26の倍数は改行
・27の倍数はA+α
・それ以外はA
を出力すれば、formatで改行コードとかせず、1文字ずつ出力できるってこと!
あとは細かいところを調整して…出た答えがこれ(60文字)

ちなみに、670ってなってるところは試してみればわかりますけど、650から701までの好きな数字でOKです。
なんでかというと、System.out.writeはバッファされるので、System.out.flash();しない限り、バッファの切れ目以降は出力されないからです(偶然出力文字数がバッファサイズの切れ目に一致してます)。

posted by バー at 17:39| Comment(0) | TrackBack(0) | CodeIQ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/412068058
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。