- プログラミングのお題スレ Part4
896 :デフォルトの名無しさん[sage]:2014/09/11(木) 16:45:35.36 ID:oL03u+Kk - >>890
Squeak Smalltalk で。 | primeFactors sumAllocOfCages | primeFactors := [:n | (Integer primesUpTo: n+1) select: [:m | n isDivisibleBy: m]]. sumAllocOfCages := [:n | (primeFactors value: n) inject: 0 into: [:sum :d | ((d to: n by: d) inject: 1 into: [:k :rest | k * (rest take: d)]) / (n/d) factorial + sum ] ]. sumAllocOfCages value: 4. "=> 3 " sumAllocOfCages value: 6. "=> 25 "
| - 【Python】スクリプト バトルロワイヤル46【pl,rb,php,js】
408 :デフォルトの名無しさん[sage]:2014/09/11(木) 19:22:21.66 ID:oL03u+Kk - 動的型付けか、型無しか、とかとはぜんぜん関係なく、
Smalltalk でメソッドが無いときの挙動を、 なんかおもしろそうなので >>401 風味に書いてみました。 (いろいろ嘘はある。あくまで雰囲気なのであしからず。) ググりながら書いたので、Python使いさん方には添削をよろしくお願いします。 class Obj(dict): def __init__(self, sup = None): self.sup = sup if sup == None: self['missing'] = lambda key: print(key + ' is missing (default action)') def __missing__(self, key): sup = self.sup while not sup == None and not key in sup: sup = sup.sup return sup[key] if not sup == None and key in sup else lambda: self['missing'](key) obj = Obj() sup = Obj(obj) sub = Obj(sup) sup['foo'] = lambda: print('foo on sup') sub['foo']() #=> foo on sup sub['bar']() #=> bar is missing (default action) sup['missing'] = lambda key: print(key + ' is intercepted within sup') sub['bar']() #=> bar is intercepted within sup
|
|