15

7n5lureddit の URLは何ですか

http://www.reddit.com/r/reddit.com/comments/7n5lu/man_can_fly_if_you_watch_one_video_in_2

...そして、それはどのように生成されますか?

更新:@Gerald、私は当初、これはIDの難読化だと思っていました。整数からよりコンパクトな表現への変換を行っているだけです。私は考えています、なぜこれが行われているのですか?元の整数自体を使用しないでください!!

>>> to36(4000)
'334'
>>> to36(4001)
'335'
4

4 に答える 4

28

reddit のソース コードが公開されました。その文字列を生成するために私が見つけたものは次のとおりです。

def to_base(q, alphabet):
    if q < 0: raise ValueError, "must supply a positive integer"
    l = len(alphabet)
    converted = []
    while q != 0:
        q, r = divmod(q, l)
        converted.insert(0, alphabet[r])
    return "".join(converted) or '0'

def to36(q):
    return to_base(q, '0123456789abcdefghijklmnopqrstuvwxyz')

および他の場所では、「リンク」クラスの下に:

@property
def _id36(self):
    return to36(self._id)
于 2009-01-04T05:21:43.973 に答える
0

これは、スレッドの一意の ID のようです。データベースでスレッドを見つけるために使用される可能性が最も高いです。

于 2009-01-04T05:13:45.377 に答える
-1

ちょっと一言。

この例では十分ではありませんが、通常はリストに追加します

a = []
for i in range(NNN): a.append(i)
a.reverse()

頭に挿入するよりも本当に効率的です。

a = []
for i in range(NNN): a.insert(0,i)

.

于 2009-01-04T07:56:11.603 に答える