gpt4 book ai didi

c - C中将中缀表达式转换为后缀(RPN)的最短方法

转载 作者:太空狗 更新时间:2023-10-29 16:37:38 25 4
gpt4 key购买 nike

给出了原始配方here (您也可以尝试您的程序的正确性)。

附加规则:
1.程序应该从标准输入读取并写入标准输出。
2. 程序应该向调用系统/程序返回零。
3. 程序应使用 gcc -O2 -lm -s -fomit-frame-pointer 编译和运行。

挑战有一些历史:在 Polish programming contest blog 上宣布了对短期实现的呼吁。 2009年9月,比赛结束后,最短的代码长度为81个字符。后来第二次调用更短的代码,在 matix2267 published his solution 之后78 字节:

main(c){read(0,&c,1)?c-41&&main(c-40&&(c%96<27||main(c),putchar(c))):exit(0);}

谁能把它做得更短或证明这是不可能的?

最佳答案

下面是将代码减少到 76 个字符的方法:

main(c){read(0,&c,1)?c-41&&main(c-40&&putchar(c,c%96>26&&main(c))):exit(0);}

为了清晰起见,一个更长的注释版本:

int main(int c)
{
if (read(0,&c,1)) { /* read char */
if (c-41) { /* if not ')' */
if (c-40) { /* then if not '(' */
if (c%96>26) { /* then if operator (not alphabet or <LF>) */
main(c); /* recurse */
}
putchar(c); /* print */
}
main(c); /* recurse */
}
} else exit(0); /* end program */
}

关于c - C中将中缀表达式转换为后缀(RPN)的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621151/

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