gpt4 book ai didi

language-agnostic - 这个罗马数字到整数转换器代码可以更短吗?

转载 作者:行者123 更新时间:2023-12-04 07:48:55 24 4
gpt4 key购买 nike

当前在 python 中的 95 个字节

I,V,X,L,C,D,M,R,r=1,5,10,50,100,500,1000,vars(),lambda x:reduce(lambda T,x:T+R[x]-T%R[x]*2,x,0)

这是几个测试结果,它应该适用于 1 到 3999(假设输入仅是有效字符)
>>> r("I")
1
>>> r("MCXI")
1111
>>> r("MMCCXXII")
2222
>>> r("MMMCCCXXXIII")
3333
>>> r("MMMDCCCLXXXVIII")
3888
>>> r("MMMCMXCIX")
3999

这与 this 不重复,这是反了。

那么,是否有可能在 Python 中缩短它,或者其他语言(如 ruby​​)可以做得更短?

最佳答案

来自 codegolf.com 的最短解决方案

Roman to decimal 有一场“Code Golf”比赛前一段时间。 (嗯,实际上它仍在运行,因为它们永远不会结束。)一位名叫 eyepopslikeamosquito 的 Perl 高尔夫球手决定赢得所有四种语言(Perl、PHP、Python 和 Ruby),他做到了。他写了一个引人入胜的四部分系列“The golf course looks great, my swing feels good, I like my chances”(part IIpart IIIpart IV)在Perl Monks上描述了他的方法。 .

以下是他的解决方案:

ruby ,53招

n=1;$.+=n/2-n%n=10**(494254%C/9)%4999while C=getc;p$.

Perl, 58 笔画
$\+=$z-2*$z%($z=10**(19&654115/ord)%1645)for<>=~/./g;print

他还有一个 53 冲程的解决方案,但它现在可能不起作用:(它在 2011 年的几秒钟内使用了 $^T 变量!)
$\+=$z-2*$z%($z=10**(7&$^T/ord)%1999)for<>=~/./g;print

PHP,70 笔画
<?while(A<$c=fgetc(STDIN))$t+=$n-2*$n%$n=md5(o²Ûö¬Ñ.$c)%1858+1?><?=$t;
md5(..)中的六个怪字是 chr(111).chr(178).chr(219).chr(246).chr(172).chr(209)在 Perl 符号中。

python ,78招
t=p=0
for r in raw_input():n=10**(205558%ord(r)%7)%9995;t+=n-2*p%n;p=n
print t

关于language-agnostic - 这个罗马数字到整数转换器代码可以更短吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com