我们都做到了,嗯,也许不是,但制作自己的外星语言和编号系统是一个主要的幻想写作,但主要是一个有趣的活动。
任务很简单,接受两个输入:
并以给定的形式输出等效整数结果。
下面是一个例子:
INPUT
abcdefghij
bcd + efg + hijOUTPUT
bdgi在示例中,“abcdefghij”的输入列表(您可以选择列表的形式)对应于“0123456789”,正如“hjkloiwdfp”也对应1到1与'0123456789‘,而不是'a’与零关联,'h‘。下面的算法“转换”为123 + 456 + 789,等于1368。这必须以我们给出的形式输出,所以b(代表1) d(对于2) g(代表6)和i(代表8)。
abcdefghij
abc + def - ghij
-gedcqwertyuiop
qwerty / uiop
e%y83l;[=9|
(83l * 9) + 8%
y9|8发布于 2019-08-08 16:23:11
DECLARE @ CHAR(99)
SELECT @='SELECT TRANSLATE('+TRANSLATE(e,c,'0123456789')+',''0123456789'','''+c+''')'FROM t
EXEC(@)换行符只用于可读性。
输入通过一个预先存在的表t,其中包含文本列c(字符)和e(等式),根据我们的IO规则。
使用SQL 2017函数TRANSLATE在字符之间切换并生成一个字符串,该字符串不仅包含等式,还包含代码,以便将其转换回原始字符:
SELECT TRANSLATE(123 + 456 + 789,'0123456789','abcdefghij') 然后使用EXEC()计算此字符串。
可能有一些字符(例如单引号')会破坏这段代码;我还没有测试所有可能的ASCII字符。
根据挑战,我正在评估给出的表达式,这取决于我的语言如何解释这些运算符。因此,由于整数除法,第二个测试用例返回1 (w),而不是2 (e)。
发布于 2019-08-08 20:32:07
⍘UV⭆η⎇№θι⌕θιιθ在网上试试!链接是详细的代码版本。注意:表达式是根据Python 3语义计算的,因此,例如,将零引向非零数是非法的。解释:
⭆η Map over expression's characters and join
ι Current character
№θ Count matches in first input
⎇ If non-zero
⌕θι Replace with position in first input
ι Otherwise keep character unchanged
UV Evaluate as Python 3
⍘ θ Convert to base using first input as digitshttps://codegolf.stackexchange.com/questions/189537
复制相似问题