5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【JS】スクリプト,バトルロワイヤル39【Perl,Ruby,PHP,Python】

170 :デフォルトの名無しさん:2013/09/18(水) 21:39:53.79
Squeak Smalltalk
ナイーブな総当たりかつハードコードだけど、簡潔かつ速かったので。
1.6秒。

| results check n1 n2 n3 |
results := OrderedCollection new.
check := [:S :E :N :D :M :O :R :Y |
 S > 0 and: [M > 0] and: [
  (n1 := ((S*10+E)*10+N)*10+D)
  +(n2 := ((M*10+O)*10+R)*10+E)
  =(n3 := (((M*10+O)*10+N)*10+E)*10+Y)]].
(0 to: 9) combinations: check numArgs atATimeDo: [:comb |
 comb permutationsDo: [:digits |
  (check valueWithArguments: digits)
    ifTrue: [results add: {#SEND->n1. #MORE->n2. #MONEY->n3}]]]
^results asArray


ついでに Ruby のほぼ直訳版。こちらは 2.0 で 4.9秒。

results = []
n1 = n2 = n3 = 0
check = proc{ |s,e,n,d,m,o,r,y|
s > 0 and m > 0 and
(n1 = ((s*10+e)*10+n)*10+d)+
(n2 = ((m*10+o)*10+r)*10+e)==
(n3 = (((m*10+o)*10+n)*10+e)*10+y) }
(0..9).to_a.permutation(check.arity){ |digits|
results << [[:send, n1], [:more, n2], [:money, n3]] if check[digits] }
p results

229 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)