Pascal's triangle/Puzzle: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
|||
Line 1,698: | Line 1,698: | ||
Y = 13.00 |
Y = 13.00 |
||
Z = 8.00 |
Z = 8.00 |
||
</pre> |
|||
=={{header|jq}}== |
|||
{{works with|jq}} |
|||
'''Also works with gojq, the Go implementation of jq, and with fq.''' |
|||
In the spirit of the simplicity of Pascal Triangle's definition, the |
|||
following solution works up from the bottom of the triangle using the |
|||
basic Pascal Triangle equation for each brick that is above two |
|||
others. |
|||
In the following, the value of the j-th brick in the i-th row is |
|||
denoted by rij if initially known (so r11 refers to the apex), and by |
|||
$Rij if initially unknown, so the variable "X" in the puzzle |
|||
could be denoted by $R51. |
|||
It is assumed that: |
|||
* all values in the triangle must be positive integers; |
|||
* the task is to solve for any given values of r11, r31, r52, r54; |
|||
* all solutions for the triple [X, Y, Z] should be found. |
|||
<syntaxhighlight lang=jq> |
|||
def solve(r11; r31; r52; r54): |
|||
range(1;r31 - 1) as $X |
|||
| range(1; r31 - 1) as $Y |
|||
| (($Y - $X) | select(. > 0)) as $Z |
|||
| (r52 + $X) as $R41 |
|||
| (r52 + $Y) as $R42 |
|||
| select($R41 + $R42 == r31) |
|||
| ($Y + r54) as $R43 |
|||
| (r54 + $Z) as $R44 |
|||
| ($R42 + $R43) as $R32 |
|||
| ($R43 + $R44) as $R33 |
|||
| (r31 + $R32) as $R21 |
|||
| ($R32 + $R33) as $R22 |
|||
| select($R21 + $R22 == r11) |
|||
| [$X, $Y, $Z]; |
|||
solve(151; 40; 11; 4), |
|||
</syntaxhighlight> |
|||
{{output}} |
|||
<pre> |
|||
[5,13,8] |
|||
</pre> |
</pre> |
||