在C中

查看解决方案

显示罐装提示
关键词内容
开始

这个谜题的目标是从给定的53行代码中汇编一个工作的C程序。您需要做的第一件事是确定提供行的正确顺序的外部资源。该资源的性质将指示您在此之后需要做什么。

对应、注释、件

“In C”和程序之间的对应关系是基于音符的音高。注释的长度无关。平铺的音符和连续的休息算作一个音符。代码的某些元素(例如,括号)没有反映在通信中。

顺序、程序、编译

在“In C”中,片段是按顺序播放的,但每个片段都可以被跳过或重复任意次数,由表演者决定。类似地,在这个拼图中,您必须省略一些行并重复其他行,以形成最终的C程序。没有模式或外部通信;你只需要一步一步地完成它。您可以假设使用了大多数行,除非它们无效,并且这些行通常会实现填充数组的目标;程序没有空间浪费在执行无用或冗余的指令上。

行,重复,跳过

[我不知道如何为这部分写一个固定提示。只需根据他们的请求和解决方案中的列表给他们一些提示。错误是为了给他们更多帮助。如果他们还不知道,你也可以使用前一个固定暗示的最后一部分:]

您可以假设使用了大多数行,除非它们无效,并且这些行通常会实现填充数组的目标;程序没有空间浪费在执行无用或冗余的指令上。

提取物

程序在运行时设置数组F中的值。共有22个条目(F[22]处有一个哨兵)。第49-53行是最后一个循环,它遍历F并将所有值修改为适合提取的值。第46行的注释给出了提取的模式。如果你做得对,F中的最终值应该都接近整数,并且应该有一种自然的方式来读取它们。但是,如果某些值看起来无效,那么您可能需要再考虑一下这种方式是什么。

124567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
#包括<ctype.h>#包括<errno.h>#包括<信号.h>#包括<stdio.h>#包括<stdlib.h>#包括<tgmath.h>/*(c)1964年-这已经用clang和gcc进行了测试。确保使用“-lm”进行编译。-不允许未定义的行为。可以忽略其他编译器警告。-除最后一个sentinel之外的所有数组条目都将设置为非零值。-把评论算作一个整体,这个谜题有十种类型。*/整型main(){,++P类型定义类型定义(!&N);继续;}*P/*这里设置的值是一个浮点数,可能看起来不太准确,但仍会很清楚地在末尾给出字母S*/*P=10+*P=10++提升(9)+兰德()[&F]);+兰德()[&F]);-0*P(P)/=-0; *P(P)/=/*此时,22个数组项中的5个应设置为其最终值。*/*F;while(*(++P));“}”-“{”;*(P((isxdigit(*F)*/*最终程序不应显示不确定性行为*/*(P+=4);/*此时,P应该指向最后一个有意义的数组条目*/*F-*P/30);+'\x13')=(N='',-0.795**楼+平方米(0[&Y];}虽然我*(F-~(整数)(% 69; *P/=工厂(浮动)/*第一个数组条目用作暂存空间,也是唯一将被多次修改的条目之一。*/N=41};F类[/*此项位于数组中间,正在设置为其最终值。*/N-=32]=*F;=*F*log10((int)trunc(=9。/N;P-=(整数)F[3]=*F;/*程序结束后,此处设置的值将被读取为字母E*/浮子F[23]={Y=long time();0xe5cap3无效~(int)asinh(*P)++P;/*到目前为止,代码运行得很正常,*/float T;T/*但这很快就不再是真的了*/(*(F+16)=*(F+l圆形(*F-tan(-8,*P=(腹肌(*P)<<腹肌(*P))-8,*P=(abs(*P)<<abs(*1P))0[&N];如果(&Y)执行{*P-=Y) );N——;Z=~-(--P-F)+N*Y) );N——;Z=~-(--P-F)+N*free()volatile sin();restrict exit()/*Uh-oh*/整数N;浮子Y;复合Z;lround(*P))+3**P-!出口*(长)(58))/*F+13))=*P*tan(208)*F类=对数(*P))*(P+4)=*P+/*程序结束后,此处设置的值将被读取为字母N.*/*F-); F[--N]=*(P-&Y+&N)/*F+*(P+0xf);出口;)[N] =F[-~N];Y=F[N--]=*F*0x1.a895dp0;(退出,F[--N]=*F+0x1.b1aep21/(0xdead+0xbeef+0xcafe+0xf00d)),退出,F[--N]=++N+N---/(++P-P-)+*P-0x.accp4,退出18[F]=1[F]=P[~-N]-(N^12);Y(Y); F[--N]=*F=0x.9b3p5;出口-出口+出口-出口+exit,Z+=N---(F---P)*(F+N)=Z++/~-N;N++;(PZ-=N++;错误号[P++]=*(F+-~N)*P=--Z/~-N;(P++[N]=()=*(F+'b'-Y*'5')/*如下分析提取:*/=*F/*?(N) ,*/=*F/*此时使用N的当前值。*/=*F=*F+'\0';P-=“\x4”;-81+(*F+正弦(*F-cos(*F-tan(*F-fabs(*F))));/*此行将两个数组项设置为其最终值,*/if(*P==0x0)*P=fabs((0x.29c2p0**F)*Z)-*F--P、 /*总共18人(共22人)。*/Z*=.638424*}