APL技术问询:如何找出900-1000间数乘积中的回文数
解决900-1000两两乘积回文数的APL实现问题
你的代码最后一行返回0,是因为仅生成了判断回文的布尔矩阵,未提取对应乘积值,且直接执行布尔矩阵时APL会返回其逻辑聚合值(而非目标回文数集合)。以下是修正后的实现:
步骤1:生成目标数字集合
new_set ← 900 + ⍳100 // 生成900到1000的整数集合
步骤2:计算乘积并筛选回文数
// 计算所有两两乘积,转为字符串后判断回文,提取符合条件的乘积 palindrome_products ← {⍵≡⌽⍵}¨⍕¨⊢ / new_set ∘.× new_set
代码解释
new_set ∘.× new_set:生成900到1000之间所有数的两两乘积二维数组⍕¨:将每个乘积转换为字符串,得到二维字符串数组{⍵≡⌽⍵}¨:对每个字符串执行回文判断,返回与乘积数组同维度的布尔矩阵/:将二维乘积数组展平,并筛选出布尔矩阵中对应为1(真)的乘积值,最终得到所有回文乘积的集合
可选:获取回文乘积对应的乘数对
如果需要同时得到每个回文乘积对应的两个乘数,可使用以下代码:
// 组合乘数对与乘积 factor_product_pairs ← ,⊂[1] (new_set ∘., new_set),⊂new_set ∘.× new_set // 筛选回文对应的乘数对与乘积 palindrome_pairs ← {⍵[3]≡⌽⍵[3]}¨⍕¨⊢ / factor_product_pairs
内容的提问来源于stack exchange,提问作者ArbIn
相关产品推荐
相关产品推荐

