Twitterでふぁぼったものをひたすら試します

JavaのFizzBuzz(2行)に騙された話と騙されないエディタの話

まずはこちらをご覧いただきたい。

http://rextester.com/RTUBF6888

次のようなFizzBuzz in Java。↑で「Run it」するとちゃんとFizzBuzzされるやつ。

public static void main(String args[])
{
    for ( int i( ;001 > ++i ;0 =
        System.out.println( ( i;( ( i : "" ? 1 > 3 % i : "zzuB" ? 1 > 5 % i ) + ( "" : "zziF" ? 1 > 3 %
}

一体どういう原理で動いているのか。
こんなごちゃごちゃなソースコードなのに……

…ごちゃごちゃに見えるだけでした、はいざんねーん騙されたそこのあなた
冷静に考えてカッコの数あってないし FizzBuzz がひっくり返ってるし、制御記号202eが混じっているだけというのは案外見破れるのかもしれない。騙された。

f:id:S_Shimotori:20160406153505p:plain

制御記号202eとは

e-words.jp

なぜか↑のFizzBuzzでは1行中に2個も3個も202eが入っているが、2個入れたらそこで打ち消されるということはなく、1個目以降全て←の向きに表示される。っぽい。
拡張子偽装に注意とのこと。

ニコ動のコメントに202eを入れるとちゃんと←になるらしい。(例外: win2000)
dic.nicovideo.jp
空白・特殊記号 - ニコニコ動画まとめwiki

制御記号について徳丸さんが頑張っていた形跡もある。
d.hatena.ne.jp

202eを混ぜた時のエディタの反応

Sublime text

表示されない。ただし文字列の流れは202eの存在に関わらず→になっている。入力のカーソルをぽちぽち動かすと、202eのあるところでは見かけ上1回カーソルが止まるので、存在はしている。

IntelliJ IDEA

表示されない。ただし文字列の流れは202eの存在に関わらず→になっている……んだが202eの所にカーソルを持っていくと何だか表示がおかしいぞ。

f:id:S_Shimotori:20160406160005p:plain

vim

表示される。1番上の黒いエディタはvim

emacs

えっ???emacsザコじゃないですか?????wwwww
f:id:S_Shimotori:20160406160859p:plain
設定とかでなんとかなるのかな。知らないけど。

Eclipse

←向きになってしまった。

Xcode

こいつも←向き表示しててダメだった。
が、改行等で202e入りの行がずれるとなぜか直る。編集中に202eがいつの間にか消えてる。意味がわからねえ。何をトリガーにどんな操作してんだこいつ。

まとめ

悪戯はやめよう。
制御文字の疑いがある時はいつもSublime textに貼り付けて確認とってたけど、202eはダメだということを知った。vimか。vimなのか。