指定された数未満の素数を出力(ただし0〜9の文字は使用禁止)

という話題が86チャットで出たので帰りの電車で実装してみる流れ@23:01

っていうか

>>> len(())
0
>>> len(" ")
1

これで数値作れるんだよね。

>>> primes = []
>>> for i in range(len("  "), input()):
...     for p in primes:
...             if i % p == len(()): break
...     else:
...             primes.append(i)
... 
100
>>> primes
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

つまらん。立ってコーディングは疲れる。23:06。

座れた。23:09。

        • -

23:34。東部伊勢崎線の発車待ち。

import re
N = input("IN>>")
lines = []
while N:
    lines = [[]]+[[x]for x in lines]
    N -= True

def mul(xs, n, result=""):
    if xs:
        return mul(xs.pop()[:], n, result + n)
    return result

def to_num(xs, result=False):
    if xs:
        return to_num(xs.pop()[:], result + True)
    return result


lines.pop(False)
lines.pop(False)
primes = []
for i in lines:
    for p in primes:
        if re.match("(%s)+$"%mul(p[:], ".."), str(i[:].pop())): break
    else:
        primes.append(i)

print [to_num(p[:]) for p in primes]

とりあえずlenを駆逐してみた。読みやすい名前の関数とかがあるのをつぶせばもっと見にくくなるけどやらない。

つまらん。もっと血湧き肉踊るような問題はないのか!

        • -

それはそうと86チャットで出ていた話題は他に「幽々白書みたいに徐々に使える文字が減る」とか「使われている文字種の少なさでゴルフ」とかがあった。

        • -

23:50。文字35種類。このゲームはあんまり面白くないってことがわかった。ゴルフと違って局所的に「ここをこれに変えれば縮まる」って感じじゃないから、何をどれに置き換えたら縮まるのかわかりにくくて。

import re
m = input()
o = []
while m:
    o = [[]]+[[x]for x in o]
    m -= not(())

def po(xs, n, r=""):
    if xs:
        return po(xs.pop()[:], n, r + n)
    return r

def op(pp, r=not([()])):
    if pp:
        return op(pp.pop()[:], r + (not(())))
    return r


o.pop(not([()]))
o.pop(not([()]))
pp = []
for i in o:
    for p in pp:
        if re.match("(%s)+$"%po(p[:], ".."), str(i[:].pop())): break
    else:
        pp=pp+[i]

print [op(p[:]) for p in pp]