首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数字转换为Emoji数学

将数字转换为Emoji数学
EN

Code Golf用户
提问于 2019-05-05 15:14:06
回答 8查看 3.7K关注 0票数 13

在Emoji Math中,用户为视频游戏“不停说话”和“无人爆炸”创建了模块,数字被写成符号串,其中每个表情符号代表一个基数10位数。下面是数字和表情符号之间的转换表。

代码语言:javascript
复制
Digit | Emoticon
  0   |    :) 
  1   |    =(  
  2   |    (: 
  3   |    )=  
  4   |    :(    
  5   |    ):  
  6   |    =)  
  7   |    (= 
  8   |    :|  
  9   |    |: 

给定一个数字,以Emoji数学编码输出它。您可以假设没有非数字字符。

这是密码-高尔夫,所以以字节为单位的最短答案获胜。

EN

回答 8

Code Golf用户

发布于 2019-05-05 16:04:16

05AB1E,26字节

代码语言:javascript
复制
"|:(=):)=:)"2ôºJ2ô`Šr)sSèJ

在网上试试!

票数 5
EN

Code Golf用户

发布于 2019-05-05 20:03:11

TI-BASIC,79个字节

代码语言:javascript
复制
Ans→Str1:" :For(I,1,length(Str1:Ans+sub(":)=((:)=:():=)(=:||:",1+2expr(sub(Str1,I,1)),2:End:sub(Ans,2,length(Ans)-1

输入是Ans中的一串数字。

输出是Emoji数学编码的数字.

示例:

代码语言:javascript
复制
"134
134
prgmCDGF1C
:)(:)=
"2213894
2213894
prgmCDGF1C
(:(:=()=:||::(

解释:

代码语言:javascript
复制
Ans→Str1                                                 ;store the input in Ans
"                                                        ;leave " " in Ans
For(I,1,length(Str1                                      ;loop over each character in the
                                                         ; input string
Ans+sub(":)=((:)=:():=)(=:||:",1+2expr(sub(Str1,I,1)),2  ;convert the current character
                                                         ; to a number and use it as the
                                                         ; index into the encoding string
                                                         ; then append the encoded digit
End
sub(Ans,2,length(Ans)-1                                  ;remove the prepended space and
                                                         ; store the result in Ans
                                                         ;implicit print of Ans

或者,下面是一个94字节的解决方案,它将数字作为输入而不是字符串:

代码语言:javascript
复制
int(10fPart(Ans₁₀^(seq(⁻X-1,X,0,log(Ans→L₁:" :For(I,dim(L₁),1,-1:Ans+sub(":)=((:)=:():=)(=:||:",1+2L₁(I),2:End:sub(Ans,2,length(Ans)-1

示例:

代码语言:javascript
复制
134
             134
prgmCDGF1C
:)(:)=
2213894
         2213894
prgmCDGF1C
(:(:=()=:||::(

Explanation:

代码语言:javascript
复制
int(10fPart(Ans₁₀^(seq(⁻X-1,X,0,log(Ans→L₁     ;generate a list of the input's digits
                                             ; reversed and store it in L₁
"                                            ;leave " " in Ans
For(I,dim(L₁),1,-1                            ;loop over L₁ backwards
Ans+sub(":)=((:)=:():=)(=:||:",1+2L₁(I),2     ;use the value of the I-th element in L₁ as
                                              ; the index into the encoding string then
                                              ; append the encoded digit
End
sub(Ans,2,length(Ans)-1                       ;remove the prepended space and store the
                                              ; result in Ans
                                              ;implicit print of Ans

备注:

  • TI-BASIC是标记化语言.字符计数不等于字节计数。
  • |是只能使用这个装配程序访问的两个字节令牌0xBBD 8。
票数 4
EN

Code Golf用户

发布于 2019-05-05 16:43:28

Perl 5 -p,42字节

代码语言:javascript
复制
s/./substr":)=((:)=:():=)(=:||:",A4*2,2/ge

在网上试试!

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

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

复制
相关文章

相似问题

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