C,125
假定big-endian和16位整数。
通过对每两个字节应用按位“或”运算。
输入文件为y
,输出为z
。
unsigned a,b;main(c){void*f=fopen("y","r"),*g=fopen("z","w");while(b=fread(&c,1,2,f))c|=a,a?a/=2:(a=32768),fwrite(&c,1,b,g);}
不打高尔夫球
// The commented out /* short */ may be used if int is not 16 bits, and short is.
unsigned /* short */ a = 0,b;
main(/* short */ c){
void *f = fopen("y", "r"), *g = fopen("z", "w");
while(b = fread(&c, 1, 2, f)){
// __builtin_bswap16 may be used if you are using GCC on a little-endian machine.
//c = __builtin_bswap16(c);
c |= a;
if(a) a >>= 1;
else a = 32768;
//c = __builtin_bswap16(c);
fwrite(&c, 1, b, g);
}
}
code-golf
,即以字节为单位的最短代码获胜。Acode-challenge
需要指定明确的评分系统。2.仅通过直接写入驱动器,才能将硬盘驱动器的第18位变成1。这不能通过创建和/或修改文件来实现。3.这样做会使整个驱动器无法使用,因此兼容的解决方案将具有破坏性。我不知道社区会收到编写恶意软件的请求的程度……