Four bit adder: Difference between revisions

Added Wren
No edit summary
(Added Wren)
Line 6,127:
 
end struct;</lang>
 
=={{header|Wren}}==
{{trans|Go}}
<lang ecmascript>var xor = Fn.new { |a, b| a&(~b) | b&(~a) }
 
var ha = Fn.new { |a, b| [xor.call(a, b), a & b] }
 
var fa = Fn.new { |a, b, c0|
var res = ha.call(a, c0)
var sa = res[0]
var ca = res[1]
res = ha.call(sa, b)
return [res[0], ca | res[1]]
}
 
var add4 = Fn.new { |a3, a2, a1, a0, b3, b2, b1, b0|
var res = fa.call(a0, b0, 0)
var s0 = res[0]
var c0 = res[1]
res = fa.call(a1, b1, c0)
var s1 = res[0]
var c1 = res[1]
res = fa.call(a2, b2, c1)
var s2 = res[0]
var c2 = res[1]
res = fa.call(a3, b3, c2)
return [res[1], res[0], s2, s1, s0]
}
 
System.print(add4.call(1, 0, 1, 0, 1, 0, 0, 1))</lang>
 
{{out}}
<pre>
[1, 0, 0, 1, 1]
</pre>
 
=={{header|XPL0}}==
9,476

edits