首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合中的基地

混合中的基地
EN

Code Golf用户
提问于 2016-09-23 07:12:12
回答 13查看 1.1K关注 0票数 23

输入:

每项位于2-36范围内的整数的列表/数组。

输出:

整数之和(作为基数10),其中每个下一个整数位于前一个值的基数中(从一个常规基数10开始)。

示例:

假设我们有这样的输入:[4, 12, 34, 20, 14, 6, 25, 13, 33]

那么我们有这样一笔钱:

代码语言:javascript
复制
4    (4  in base-10) +
6    (12 in base-4 ) +
40   (34 in base-12) +
68   (20 in base-34) +
24   (14 in base-20) +
6    (6  in base-14) +
17   (25 in base-6 ) +
28   (13 in base-26) +
42   (33 in base-13)
= 235

数学基础解释:

我考虑过假设每个人都知道基是如何工作的,但我会给出一个简单的例子,说明它是如何工作的,以防万一。以34 in base-12为例,我们是如何获得40的?

代码语言:javascript
复制
1-34 in regular base-10:
 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
 So, from 1 to 34 is 34 steps in base-10

1-34 in base-12:
 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 30, 31, 32, 33, 34
 So, from 1 to 34 is 40 steps in base-12

这里也许有一个有用的计算器。

挑战规则:

  • 数组大小将在合理范围内(如1-100 /见测试用例)。
  • 测试用例将永远不包含当前值对其上一个基无效的整数(也就是说,您永远不会有类似于19 in base-66 in base-6的东西,因为基-6只包含数字0-5)。
  • 你可以用任何你想要的方式输入。可以是int数组,也可以是逗号/空格分隔的字符串,等等。(您还可以反转int数组,这对于基于堆栈的编程语言很有用。)

一般规则:

  • 这是密码-高尔夫,所以最短的答案(以字节为单位)-- wins. --不要让代码-高尔夫语言阻止你用非高尔夫语言发布答案。试着为任何编程语言提供尽可能简短的答案。
  • 适用标准规则作为您的答案,因此您可以使用STDIN/STDOUT,函数/方法具有适当的参数,完整的程序。你说了算。
  • 违约漏洞是禁止的。
  • 如果可能,请为您的代码添加一个带有测试的链接。
  • 此外,如有必要,请补充说明。

测试用例:

代码语言:javascript
复制
[4, 12, 34, 20, 14, 6, 25, 13, 33]                            ->   235
 4+ 6+  40+ 68+ 24+ 6+ 17+ 28+ 42

[5, 14, 2, 11, 30, 18]                                        ->   90
 5+ 9+  2+ 3+  33+ 38

[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 12, 2, 11, 3, 10, 2, 10]    ->   98
 12+ 13+ 11+ 9+ 8+ 7+ 6+ 5+ 4+ 3+ 5+  2+ 3+  3+ 3+  2+ 2

[36, 36]                                                      ->   150
 36+ 114
EN

回答 13

Code Golf用户

发布于 2016-09-23 08:27:03

Python 3,40字节

代码语言:javascript
复制
lambda a:sum(map(int,map(str,a),[10]+a))

测试在意为

map(str, a)创建一个生成器G,该生成器对a中的每个值调用str,并转换为字符串。

map(int, G, [10]+a)创建了一个生成器,该生成器为跨G[10]+a的对调用int(g, v)

int(g, v)从整数基v转换字符串g (如果v[2,36]中且g是有效的)

sum做它在罐头上说的

票数 9
EN

Code Golf用户

发布于 2016-09-23 08:10:44

Python2,48字节

代码语言:javascript
复制
lambda a:sum(int(`x`,y)for x,y in zip(a,[10]+a))

测试在意为

zip(a,[10]+a)遍历a中的值对和第一个值的前一个值或10

backticksint调用中将x转换为字符串s

int(s, y)从整数基y转换字符串s (如果y[2,36]中且s是有效的)

sum做它在罐头上说的

票数 7
EN

Code Golf用户

发布于 2016-09-23 07:43:04

果冻,7字节

代码语言:javascript
复制
ṙ1DḅṖḌS

在网上试试!

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

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

复制
相关文章

相似问题

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