Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Sum-to-100/Sidef/sum-to-100.sidef
Normal file
40
Task/Sum-to-100/Sidef/sum-to-100.sidef
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
func gen_expr() is cached {
|
||||
var x = ['-', '']
|
||||
var y = ['+', '-', '']
|
||||
|
||||
gather {
|
||||
cartesian([x,y,y,y,y,y,y,y,y], {|a,b,c,d,e,f,g,h,i|
|
||||
take("#{a}1#{b}2#{c}3#{d}4#{e}5#{f}6#{g}7#{h}8#{i}9")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func eval_expr(expr) is cached {
|
||||
expr.scan(/([-+]?\d+)/).sum_by { Num(_) }
|
||||
}
|
||||
|
||||
func sum_to(val) {
|
||||
gen_expr().grep { eval_expr(_) == val }
|
||||
}
|
||||
|
||||
func max_solve() {
|
||||
gen_expr().grep { eval_expr(_) >= 0 } \
|
||||
.group_by { eval_expr(_) } \
|
||||
.max_by {|_,v| v.len }
|
||||
}
|
||||
|
||||
func min_solve() {
|
||||
var h = gen_expr().group_by { eval_expr(_) }
|
||||
for i in (0..Inf) { h.exists(i) || return i }
|
||||
}
|
||||
|
||||
func highest_sums(n=10) {
|
||||
gen_expr().map { eval_expr(_) }.uniq.sort.reverse.first(n)
|
||||
}
|
||||
|
||||
sum_to(100).each { say "100 = #{_}" }
|
||||
|
||||
var (n, solutions) = max_solve()...
|
||||
say "Sum of #{n} has the maximum number of solutions: #{solutions.len}"
|
||||
say "Lowest positive sum that can't be expressed : #{min_solve()}"
|
||||
say "Highest sums: #{highest_sums()}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue