Java 7、320 319 300 294 293バイト
void Z(){String a="AS Q[g_MTg O^j bU[ ",b="8OW aO[ ^_lbO O[R_SWgZK[U,\neOM_S g eOM_S 9ScbS_WJ!\n";for(char C:(a+"XjfU\nb]c a^OVW]k bU[ b_]ZS_L.\n"+a+"jfU\n^]c ZS PWJ ZSb_JSW bU QU.\n/^' bO XjXXOYO PQOYZK[U,\nbg[ 3YYL[g[ bO WS_J!\n"+b+b+b).toCharArray())System.out.print((char)(C>46?C+866:C));}
オンラインでお試しください!
これは、末尾の改行で国歌を出力します。関数を変換してa String
をa に変換したvoid
ので、文字列を返してバイトを保存する代わりに文字列を出力します。
午前中にさらにゴルフをしますかゴルファーは寝ません:P
説明(古い)
String Z(){
// X contains the value of the Greek Anthem
String X="",
// a and b contain some repeated parts of the anthem
a="AS Q[g_MTg O^j bU[ ",
b="8OW aO[ ^_lbO O[R_SWgZK[U,\neOM_S g eOM_S 9ScbS_WJ!\n";
// Then we loop over every char in this string
for(char C: (a+"XjfU\nb]c a^OVW]k bU[ b_]ZS_L.\n"+a+"jfU\n^]c ZS PWJ ZSb_JSW bU QU.\n/^' bO XjXXOYO PQOYZK[U,\nbg[ 3YYL[g[ bO WS_J!\n"+b+b+b).toCharArray())
// Adding 866 to the char if it is greater than `.` 46
// (we also want to preserve the punctuation)
X+=(char)(C>46?C+866:C);
return X;
}
この削減された文字列を取得するために、コードポイントからどの数値を引くのが最適かを手動で確認しました。これらの値は
との間にある必要があり~
ます。チャーは(句読点であるか否かを検出するために.
、'
、!
、
すべての値が上記の嘘をついている場合)かどうかを、それが最良であろう.
(46)。また\
、文字列にs があってはなりません。そうしないと、Javaはエスケープシーケンスと見なし、エスケープする必要があるためです。最後に、ギリシャ文字から866を引くことを思いつきました。