使用 Claude Sonnet 4.6 的 Knuth 测试,问题 1.1.1

1作者: daly6 个月前
Knuth《计算机程序设计艺术》第一卷 第9页: [1] 变量 m 和 n 的值可以通过以下方式互换: t = m,然后 m = n,然后 n = t。 演示如何通过一系列替换将四个变量 (a, b, c, d) 的值重新排列为 (b, c, d, a)。换句话说,a 的新值应该是 b 的原始值,以此类推。 尝试使用最少的替换次数。 ======================================================================== Claude Sonnet 4.6 ======================================================================== 我们希望将 (a, b, c, d) 转换为 (b, c, d, a) 使用一个临时变量 t,以下是序列: t = a a = b b = c c = d d = t 跟踪验证: 步骤: a b c d t 开始: a b c d — t = a: a b c d a a = b: b b c d a b = c: b c c d a c = d: b c d d a d = t: b c d a a 结果:(a, b, c, d) → (b, c, d, a) 这使用了 5 次替换,这是所需的最小值——一次将 a 的被替换值保存到 t 中,三次将 b→a、c→b、d→c,以及最后一步将保存的值放入 d 中。
查看原文
Knuth Art Of Computer Programming V1 p9:<p>[1] The values of variables m and n, can be interchanged using t = m, then m = n, then n = t. Show how the values of four variables (a,b,c,d) can be rearranged to (b,c,d,a) by a sequence of replacements. In other words, the new value of a is to be the original value of b, etc. Try to use the minimum number of replacements.<p>======================================================================== Claude Sonnet 4.6 ========================================================================<p>We want to transform (a, b, c, d) → (b, c, d, a) Using a temporary variable t, here is the sequence:<p>t = a a = b b = c c = d d = t<p>Trace through to verify:<p>Step.: a b c d t Start: a b c d — t = a: a b c d a a = b: b b c d a b = c: b c c d a c = d: b c d d a d = t: b c d a a<p>Result: (a, b, c, d) → (b, c, d, a)<p>This uses 5 replacements, which is the minimum needed — one to save the displaced value of a into t, three to shift b→a, c→b, d→c, and one final step to place the saved value into d.