えびちゃんの日記

えびちゃん(競プロ)の日記です。

Writeup for pyjs, Daily AlpacaHack 2026/02/28

Daily AlpacaHack 2026/02/28 の write-up です。

alpacahack.com

やったこと

えびちゃんは Polyglot が好きなのでうれしくなりました。

1 行しか受け取ってくれないので、1 行でやる方針を考えます(\r を使おうというのが過去にも出題されていますが忘れがち、少し反省)。

"""...""" などの連結の仕方が狙えるかと思ったものの JS だとうまくいってくれないようなので捨てました。 // を使う方針も浮かびはしましたが、面倒そうな気がしたので深追いしませんでした。

そういえば JS って NaN っていうのがあったよなと思って、NaN に代入したときどうなるんだっけというのを試しました。

> NaN = 0
0
> NaN
NaN
> NaN == NaN
false

Python だと下記のようになります。

>>> NaN = 0
>>> NaN
0
>>> NaN == NaN
True

あとはこれを使って適当にやればよさそうです。 両方の言語で共通して使えるリテラル・関数・メソッドがあれば楽に済ませられそうなので探します。

eval[x, y][k] を使えばよさそうです。JS だと Boolean をそのまま添字に使えなさそうなので適当に変換します。

solve.txt

NaN=0; eval(['console.log("I LOVE SECCON")', 'print("I LOVE ALPACA")'][+(NaN==NaN)])

これができるのであれば、JS と Python で真偽・0/1 が変わる式クイズに帰着できるので、次のようなものも使えます。

  • 1+2**53-2**53
  • "aa".replace("a", "b") == "ba"
  • (2**53+1)/3 == 3002399751580331

Wow... Alpaca{fluent in two languages} 👏

9つのC言語を操りたいです。最近の人に通じるのでしょうかこれ(?)。

あとがき

A-SIDE 3 ヶ月分と B-SIDE 1 ヶ月分を走り切って満足です。

おわり

おわりです。