这个代码高尔夫问题的灵感来自于谷歌的代码阻塞竞争。这个问题背后的前提是,给定两个不同长度的向量的输入,找到最小可能的标量。可以使用以下公式找到标量:
x1 * y1 + x2 * y2 + ... + xn * yn
但是,问题是,根据输入情况中数字的顺序,可以找到标量的多个值(见下文)。您的目标是确定最小可能的标量整数解,方法是将输入的大小写数插入方程并求解。您可以只使用输入中的每个数字一次,并且必须使用所有的数字。
请允许我提供一个有以下向量的例子。
3
1 3 -5
-2 4 1
-25
直线上的第一个整数表示每个向量中的数n。在这种情况下,我们在每个向量中有三个数字。
每个测试用例的数目n可能不同,但总是有两个向量。
在示例输入中,最小标量积为-25。
(-5 * 4) + (1 * 1) + (3 * -2) = 25
提示:您不需要强行解决这个问题,除非它使您的代码更短。在寻找最小跨越标量时有一种特定的方法:)。
发布于 2016-03-11 21:04:52
ṢṚ×Ṣ}S
使用暴力同样短:
Œ!×S€Ṃ
ṢṚ×Ṣ}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.
发布于 2016-03-11 22:38:34
https://codegolf.stackexchange.com/questions/75409
复制相似问题