首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >往返基地94

往返基地94
EN

Code Golf用户
提问于 2020-04-04 05:41:16
回答 15查看 4.1K关注 0票数 19

挑战

使两个程序转换小数点到和从基数94,或双向程序。

碱94?

基94和任何其他大本营一样,但它使用的是ASCII字符33到126,而不是0到9和字母。不是127号,因为chr(127)是戴尔。不是32因为那是个空间。

示例

代码语言:javascript
复制
0 - ! or empty string
1 - "
93 - ~
94 - "!
2020 - 6O
14233221 - 2-n8

评分

对于两个程序,分数将是两个程序的字节计数之和。

双向程序只是字节计数。把它想成是得分的-50%。

EN

回答 15

Code Golf用户

发布于 2020-04-04 13:32:14

哈斯克尔,42 + 31 = 73字节

到基本94: 42字节

代码语言:javascript
复制
(l!!)
l="":tail[s++[c]|s<-l,c<-['!'..'~']]

在网上试试!

我们没有使用模块化算法,而是按照所需的顺序生成所有字符串的列表l,并将其索引到其中。

l的递归定义类似于用于生成所有字符串的这一个,但通过追加新字符并使用tail以防止前导零的模拟,将其修改为以所需的顺序输出字符串。

从基94: 31字节

代码语言:javascript
复制
foldl(\n->(94*n-33+).fromEnum)0

在网上试试!

遍历字符串的字符c,将当前值n更新为94*n-33+fromEnum c

票数 8
EN

Code Golf用户

发布于 2020-04-04 13:55:51

Python 2,40 + 45 = 85字节

到基本94: 40字节

代码语言:javascript
复制
f=lambda n:n*"?"and f(n/94)+chr(n%94+33)

在网上试试!

Python3需要额外的一个字节来代替//而不是/

从基本94: 45字节

代码语言:javascript
复制
g=lambda s:s>''and g(s[:-1])*94+ord(s[-1])-33

在网上试试!

往返于基本94: 86字节

代码语言:javascript
复制
h=lambda x:x*'?'and h(x/94)+chr(x%94+33)if x<''else x>''and h(x[:-1])*94+ord(x[-1])-33

在网上试试!

弗兰肯斯坦的怪物从上述两个函数中拼接而成,结果仅仅比它们的字节总数长一点点。由于该函数同时接受数字和字符串,因此必须注意不要通过对错误类型的操作而产生由非法操作引起的错误。

票数 6
EN

Code Golf用户

发布于 2020-04-04 19:13:32

C (gcc),(34 + 44) = 78字节

'Decimal to Base94‘函数将Base94号打印到STDOUT,而'Base94到Decimal’函数实际上返回整数。

十进制到Base94:

代码语言:javascript
复制
f(n){n&&f(n/94)+putchar(n%94+33);}

在网上试试!

Base94 to Decimal:

代码语言:javascript
复制
n;f(char*s){for(n=0;*s;n=n*94+*s++-33);n=n;}

在网上试试!

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

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

复制
相关文章

相似问题

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