programming puzzles
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 15 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-24 17:12:48  楼主  关注此帖评分:
programming puzzles
Write a "Hello World" program in 'C' without using a semicolon.
(this is tricky)

C/C++ : Exchange two numbers without using a temporary variable.
(somehow classic way)

C/C++ : Find if the given number is a power of 2.
(somehow classic way)

Write a program whose printed output is an exact copy of the source. Needless to say, merely echoing the actual source file is not allowed.
(a bit hard to think)

source: http://developers.slashdot.org/article.pl?sid=04/12/04/0116231
Put your OWN COOL signature here!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hash (等级:7 - 出类拔萃,发帖:5077) 发表:2007-04-24 18:10:14  2楼 评分:
interesting... let me try 1&2...
1.
#include <stdio.h>
void main() {
if (printf("hello world\n")) {}
}

2.
a=a+b;
b=a-b;
a=a-b;

欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:soc胖浪人 (等级:2 - 初出茅庐,发帖:194) 发表:2007-04-25 00:27:32  3楼
interesting... let me try 1&2...1. #include void main() { if (printf("hello world\n")) {} } 2. a=a+b; b=a-b; a=a-b;
世界真奇妙
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2007-04-25 11:33:42  4楼 评分:
what do you mean by classic way?
C/C++ : Find if the given number is a power of 2.
(somehow classic way)

can i check bit by bit?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2007-04-25 11:34:23  5楼
interesting... let me try 1&2...1. #include void main() { if (printf("hello world\n")) {} } 2. a=a+b; b=a-b; a=a-b;
oh, i was thinking using while
i did not know a pair of empty brackets can follow "if"
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hash (等级:7 - 出类拔萃,发帖:5077) 发表:2007-04-25 11:36:18  6楼
what do you mean by classic way?C/C++ : Find if the given number is a power of 2. (somehow classic way) can i check bit by bit?
i was thinking of checking bit also.
no. 4 is tricky...
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-25 12:26:14  7楼
what do you mean by classic way?C/C++ : Find if the given number is a power of 2. (somehow classic way) can i check bit by bit?
(3) can be done by less than 5 instructions
By classic (or classical?), I mean a lot of people use the method.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2007-04-25 12:56:54  8楼
(3) can be done by less than 5 instructionsBy classic (or classical?), I mean a lot of people use the method.
check equality with all 2's power
there are at most 32 of them...
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-25 15:26:25  9楼
check equality with all 2's powerthere are at most 32 of them...
can be simpler and faster
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2007-04-25 16:46:35  10楼
can be simpler and faster
先模1<<16和除 1<<16
两边应该有一边是0,如果两边都不是0,一定就不是2的power了

然后把不为0的那一边再模1<<8和除1<<8

当然这里假设是unsigned int, 32bits
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:这就是生活 (等级:3 - 略知一二,发帖:535) 发表:2007-04-26 00:31:50  11楼 评分:
(num > 0) && (((num - 1) & num) == 0) ?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-26 00:50:18  12楼
(num > 0) && (((num - 1) & num) == 0) ?
correct
just ((num - 1) & num) is enough

((num - 1) ^ num) also can

It's quite practical and quite frequent. It's important to know it, otherwise you don't understand what's going on.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-26 01:06:43  13楼
correctjust ((num - 1) & num) is enough ((num - 1) ^ num) also can It's quite practical and quite frequent. It's important to know it, otherwise you don't understand what's going on.
opps ^ is wrong. It's always true.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2007-04-27 21:56:17  14楼 评分:
my answer to (4)
#include <stdio.h>
int main (void)
{
const char *str = "#include <stdio.h>%cint main (void)%c{%c const char *str = %c%s%c;%c printf(str, 10, 10, 10, 34, str, 34, 10, 10, 10, 10);%c return 0;%c}%c";
printf(str, 10, 10, 10, 34, str, 34, 10, 10, 10, 10);
return 0;
}
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:hash (等级:7 - 出类拔萃,发帖:5077) 发表:2007-04-29 04:42:22  15楼
my answer to (4)#include int main (void) { const char *str = "#include %cint main (void)%c{%c const char *str = %c%s%c;%c printf(str, 10, 10, 10, 34, str, 34, 10, 10, 10, 10);%c return 0;%c}%c"; printf(str, 10, 10, 10, 34, str, 34, 10, 10, 10, 10); return 0; }
(Y)
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 15 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码