Nimber arithmetic: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: factored out print_table(), as per Julia) |
|||
Line 498: | Line 498: | ||
end function |
end function |
||
integer |
procedure print_table(integer n, op) |
||
-- print a table of nim-sums or nim-products |
|||
string outstr = " + | " |
|||
printf(1," %c | "&join(repeat("%2d",n+1))&"\n",op&tagset(n,0)) |
|||
for a = 0 to 15 do |
|||
⚫ | |||
⚫ | |||
for j=0 to n do |
|||
⚫ | |||
constant hdrfmt = "%s\n--- -------------------------------------------------\n" |
|||
⚫ | |||
printf(1, hdrfmt, outstr) |
|||
printf(1,"%3d",iff(op='+' ? nimsum(i, j) : nimprod(i, j))) |
|||
for b = 0 to 15 do |
|||
end for |
|||
printf(1,"\n") |
|||
outstr &= sprintf("%2d ", nimsum(a,b)) |
|||
end for |
end for |
||
printf(1," |
printf(1,"\n") |
||
end |
end procedure |
||
printf(1,"\n") |
|||
print_table(15, '+') |
|||
outstr = " * | " |
|||
print_table(15, '*') |
|||
for a = 0 to 15 do |
|||
constant a = 21508, b = 42689 |
|||
outstr &= sprintf("%2d ", a) |
|||
end for |
|||
printf(1, hdrfmt, outstr) |
|||
for b = 0 to 15 do |
|||
outstr = sprintf("%2d | ", b) |
|||
⚫ | |||
outstr &= sprintf("%2d ", nimprod(a,b)) |
|||
end for |
|||
⚫ | |||
end for |
|||
printf(1,"\n") |
|||
a = 21508 |
|||
b = 42689 |
|||
printf(1,"%5d + %5d = %10d\n",{a,b,nimsum(a,b)}) |
printf(1,"%5d + %5d = %10d\n",{a,b,nimsum(a,b)}) |
||
printf(1,"%5d * %5d = %10d\n",{a,b,nimprod(a,b)})</lang> |
printf(1,"%5d * %5d = %10d\n",{a,b,nimprod(a,b)})</lang> |