📌

Python で ”OK” と出力してみよう

2020/09/19に公開

Python で OK と出力してみます。

前提条件

お使いの PC に Python がインストールされていたら問題ありません。本記事のコードは MacOS Catalina 上にインストールされた Python 3.8.2 上で動作確認済みです。

もしインストールされていない場合は以下のチュートリアルをご参照ください。

あと、文字リテラル・文字列リテラル・数リテラルは使わないこととします。(ハードコーディング縛り的な。)

下準備

リテラル縛りということは "OK" が使えませんので、どうにかして生成することとしましょう。

Python には chr() がありますので数値さえ準備できればなんとかなりそうです。しかしながら数リテラルは使えませんので、別の方法を使って準備する必要があります。数学では 任意の数を0乗した数は1 という定義があるので、0さえ用意できれば良さそうです。そう言えば空配列の要素数は0ですね。なんとかなりそうです。良かった良かった。

問題なさそうです。

以上の内容をコードにしてみます。

zero = len([])
one = zero**zero

では chr() を使って "OK" を生成します。ASCII において O79K75 です。79 = 2^6+2^3+2^2+2^1+175 = 2^6+2^3+2^1+1 ですね。コードにしてみます。(計算式を簡単にするために two を定義してます。)

zero = len([])
one = zero**zero
two = one + one
O = chr(two**(two+two+two)+two**(two+one)+two**two+two+one)
K = chr(two**(two+two+two)+two**(two+one)+two+one)

準備完了!

あとは print() で出力するだけですね、お疲れさまでした!

zero = len([])
one = zero**zero
two = one + one
six = two + two + two
O = chr(two**(six)+two**(two+one)+two**two+two+one)
K = chr(two**(six)+two**(two+one)+two+one)
p = eval(chr(two**six+two**(six-one)+two**(two+two)) + chr(two**six+two**(six-one)+two**(two+two)+two) + chr(two**six+two**(six-one)+two**(two+one)+one) + chr(two**six+two**(six-one)+two**(two+one)+two**two+two) + chr(two**six+two**(six-one)+two**(two+two)+two**two))
p(O+K)

謝辞

Proglove の syoch さんが Python で遊んでたのを見て今回のネタを思いつきました、感謝感謝です。

Discussion