🐍

ドドスコPythonワンライナー

2022/08/23に公開

元ネタ

https://twitter.com/Sheeeeepla/status/1554028833942441984?s=20&t=CcCYp7Bzw2A24Dwj6V7vAw

回答

112文字。

exec("p=print;i=-1\nwhile(i:=i*2|(__import__('random').random()<.5))&8190^3822:p(['ドド','スコ'][i&1])\np('ラブ注入♡')")

補足

execの中身
p = print
i = -1
while (i := i * 2 | (__import__('random').random() < .5)) & 8190 ^ 3822:
    p(['ドド','スコ'][i & 1])
p('ラブ注入♡')
  • ドド⇔0、スコ⇔1で対応させたビット列 i をドドスコ履歴として使う。(末尾が最後の要素)
  • i := i * 2 | (__import__('random').random() < .5)i の末尾に0 or 1を追加する。
    • 追加したビットに対応する文字列を p(['ドド','スコ'][i & 1]) で出力する。
    • ドドスコスコスコが3回出力された
      i の下位13ビットが 0b011101110111?
      i & 0b1111111111110 ^ 0b0111011101110 == 0
      i & 8190 ^ 3822 == 0

Discussion