首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >最小标量积

最小标量积
EN

Code Golf用户
提问于 2016-03-12 03:18:30
回答 8查看 1.6K关注 0票数 15

最小标量积

这个代码高尔夫问题的灵感来自于谷歌的代码阻塞竞争。这个问题背后的前提是,给定两个不同长度的向量的输入,找到最小可能的标量。可以使用以下公式找到标量:

代码语言:javascript
代码运行次数:0
运行
复制
x1 * y1 + x2 * y2 + ... + xn * yn

但是,问题是,根据输入情况中数字的顺序,可以找到标量的多个值(见下文)。您的目标是确定最小可能的标量整数解,方法是将输入的大小写数插入方程并求解。您可以只使用输入中的每个数字一次,并且必须使用所有的数字。

请允许我提供一个有以下向量的例子。

输入

代码语言:javascript
代码运行次数:0
运行
复制
3
1 3 -5
-2 4 1

输出

代码语言:javascript
代码运行次数:0
运行
复制
-25

直线上的第一个整数表示每个向量中的数n。在这种情况下,我们在每个向量中有三个数字。

每个测试用例的数目n可能不同,但总是有两个向量。

在示例输入中,最小标量积为-25。

代码语言:javascript
代码运行次数:0
运行
复制
(-5 * 4) + (1 * 1) + (3 * -2) = 25

规则

  • 您可以只使用两个向量中的每个整数一次。
  • 必须使用向量中的所有整数。
  • 您的输出必须只包括最终产品。
  • 我将用最少的代码选择解决方案,它遵循上面列出的所有规范,使用任何语言!

提示:您不需要强行解决这个问题,除非它使您的代码更短。在寻找最小跨越标量时有一种特定的方法:)。

EN

回答 8

Code Golf用户

回答已采纳

发布于 2016-03-12 05:04:52

果冻,6字节

代码语言:javascript
代码运行次数:0
运行
复制
ṢṚ×Ṣ}S

在网上试试!

使用暴力同样短:

代码语言:javascript
代码运行次数:0
运行
复制
Œ!×S€Ṃ

是如何工作的

代码语言:javascript
代码运行次数:0
运行
复制
ṢṚ×Ṣ}S  Main link. Arguments: u (vector), v (vector)

Ṣ       Sort the components of u.
 Ṛ      Reverse.
   Ṣ}   Sort the components of v.
  ×     Multiply the results, element by element.
     S  Compute the sum of the products.
票数 8
EN

Code Golf用户

发布于 2016-03-12 06:38:34

我是认真的,6字节

代码语言:javascript
代码运行次数:0
运行
复制
,SR,S*

在网上试试!

解释:

代码语言:javascript
代码运行次数:0
运行
复制
,SR,S*
,SR     input first vector, sort, reverse
   ,S   input second vector, sort
     *  dot product
票数 6
EN

Code Golf用户

发布于 2016-03-12 06:55:31

APL,15字节

代码语言:javascript
代码运行次数:0
运行
复制
{+/⍺[⍒⍺]×⍵[⍋⍵]}

这是一个并进函数,它接受左边和右边的数组,并返回一个整数。它使用与我的朱莉娅回答相同的方法:排序数组的点积,一个降序数组和一个升序数组。

在这里试试

票数 5
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/75409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档