2005-01-01から1年間の記事一覧

思考過程3

長さ n の文字列を食わせて長さ n+1 の文字列のリストを得る関数はできた。 def f(s): return map(lambda i: s[:i] + str(len(s) + 1) + s[i:], range(0, len(s) + 1))例えば、"123456" を食わせると f('123456') ['7123456', '1723456', '1273456', '123745…

思考過程2

さっきのは 3 までの決め打ちなので、使い回せない。ただ、この方針で煮詰めてみる価値はありそう。とりあえず、問題を帰納的に捉えてみよう。 問題の条件を満たす、長さ n の文字列を仮定する。 この文字列に n+1 を挿入する。挿入する位置は n+1 箇所ある…

思考過程

とりあえず 1 から 3 までの数え上げを考えてみる。 Python で書くと、 v = range(1, 4) [100*x+10*y+z for x in v for y in v for z in v if (x!=y) and (y!=z) and (z!=x)]こんな感じか? 出力結果は、 [123, 132, 213, 231, 312, 321]ん、大丈夫っぽい。 …

順列の数え上げ

1 から 7 までの数字を一回だけ使って作れる、7 文字の文字列のすべての組み合わせを出力するプログラムを、「できるだけ短く」書け。 言語は自由。実行速度不問。

切り詰め作業2

そもそも、一度しか呼ばない関数をわざわざ定義する意味なんぞないことに気づけという話か。 L=['1'] for x in L: n=len(x)+1 if n<8:L+=map(lambda i:x[:i]+str(n)+x[i:],range(n)) else:print xこれで 99byte! なんとか 100byte 切りは達成。