トップページ⇒tech
35コメント8KB

回文プログラミング in C

■ このスレッドは過去ログ倉庫に格納されています
0001トリッキーの1NGNG
こちらの方が熱くなりそうなので、プログラマ板から引っ越しました。

回文、というと「たけやぶやけた」みたいな物を指しますが、
それをC言語上で書くことは可能でしょうか?

有名な物で、↓の様な物がありますが、
http://www.jelks.nu/misc/geek/palindrome_c.html
これは行ごとに回文であるだけで、全体は回文ではありません。

Lispでは可能なのですが、果たして、Cで書くことが出来るでしょうか。
一応ルールとして、
・C++特有の書き方は禁止(例えば//など)
という風にしましょう。

腕に覚えがある人、時間のある人、トライしてみて下さい。
ちなみに私は1通り方法を思いついたけれど、コンパイラ依存の可能性が高そうです。
0002デフォルトの名無しさんNGNG
/* 終 */
0003デフォルトの名無しさんNGNG
; int gnol ; char trohs ; short rahc ; long tni ;
0004デフォルトの名無しさんNGNG
なるほど

main(){}//
//{}()nima

は駄目なのね
0005デフォルトの名無しさんNGNG
ma -> am

逝ってきます
0006デフォルトの名無しさんNGNG
むずくないか?
本当に出来るのか?
出来ないことを証明出来そうな気がするのだが
0007デフォルトの名無しさんNGNG
おいおい
せっかくトリッキースレ残ってるんだから、そっちでやろうよ
0008デフォルトの名無しさんNGNG
トリッキースレは完全に荒れたYO!
途中まではかなり面白いスレだったのにNE!
0009デフォルトの名無しさんNGNG
出来たよ。

int printf(const char /* YMMUD enifed#
} ;)"n\!!hc2 ,olleH"(ftnirp { )(niam tni
;)... ,tamrof */* format, ...);
int main() { printf("Hello, 2ch!!\n"); }
#define DUMMY */ rahc tsnoc)ftnirp tni
0010デフォルトの名無しさんNGNG
>>9
すげー
処理系依存ちゃうし
00119NGNG
mainの戻り値忘れてたよ。

int printf(const char /* YMMUD enifed#
} ;0 nruter ;)"n\!!hc2 ,olleH"(ftnirp { )(niam tni
;)... ,tamrof */* format, ...);
int main() { printf("Hello, 2ch!!\n"); return 0; }
#define DUMMY */ rahc tsnoc)ftnirp tni
00129NGNG
>>10
gccは通った。VC、BCBはリンクで失敗。
00139NGNG
これでいい? 処理系依存はしないよ。
ナンカ詰まらんが(^^;

#include <stdio.h> /* YMMUD enifed#
} ;0 nruter ;)"n\!!hc2 ,olleH"(ftnirp { )(niam tni
/*/
int main() { printf("Hello, 2ch!!\n"); return 0; }
#define DUMMY */ >h.oidts< edulcni#
0014トリッキーの1NGNG
なるほど、/*/は盲点でした。

ちなみにコメントも似たような方法です。

/* 回文プログラム */
#define co int main(){return 0;}
#define oc /##*
co oc
*##/ co enifed#
};0 nruter{)(niam tni oc enifed#
/* ムラグロプ文回 */

VCでは確認したけれど、
手元にgccなどが無いので、コンパイルできるかどうか不明
0015トリッキーの1NGNG
じゃ、コメントを利用しない方法って無いですか?
俺は無いと確信しているのですが……
0016デフォルトの名無しさんNGNG
>>15
やっぱり不可能なんじゃない?
0017デフォルトの名無しさんNGNG
S-JIS漢字を使うってのはだめ?
バイト単位での回文だとして。
0018デフォルトの名無しさんNGNG
>>17
S-JIS漢字でバイト単位の回文って、プログラムでなくても
すごいと思う(笑)
0019デフォルトの名無しさんNGNG
COM(MS-DOSの奴)でバイト単位の回文なら可能そう。
エLヘ!ヘLエ
0020デフォルトの名無しさんNGNG
>>9
すごい。感服。

>>14
gcc(2.95.x)では通らなかったよ。3行目のdefineでコケ。
0021デフォルトの名無しさんNGNG
>>18
いやSJIS の2バイト目が '\\' になってるようなやつとかを
うまく利用してできないかなぁと
0022トリッキーの1NGNG
>>20
をを、gccだと#define中に/##*が使えないんだ。情報tnx。
とすると、たぶん/##/も使えないな。ま〜まず使わないからいいけど。

それ以前に、##が無いんだろうか??
002320NGNG
>>22
##はあるよ
0024デフォルトの名無しさんNGNG
token ## tokenしか認められてないんだろ
0025デフォルトの名無しさんNGNG
しかし #define xx */ は通るんだよね。一貫性ないな。
00269NGNG
>>15
コメント使わないでできた!

char *x = "Hello, 2ch!! n\"
\n a enifed#
} ;0 nruter ;)x(ftnirp { )(niam tni
>h.oidts< edulcni#
;";
#include <stdio.h>
int main() { printf(x); return 0; }
#define a n\
"\n !!hc2 ,olleH" = x* rahc

gccでコンパイルできた。VCでは出来ず。
0027通りすがりの人NGNG
>>26 なるほど。
0028デフォルトの名無しさんNGNG
トリッキーだのぅ。
0029デフォルトの名無しさんNGNG
ところで回文にする理由は?
0030デフォルトの名無しさんNGNG
>>26
ぢゃ、次は完全に全てのコンパイラに対応するべし

>>29
考えるのが面白いから。
0031デフォルトの名無しさんNGNG
回文じゃないけどこんなん見つけた。

http://www.layer-8.com/sce/view_src.php3?argSrcId=94

すごいけどプリプロセッサにたよりまくり・・・
0032デフォルトの名無しさんNGNG
続き。

説明
http://www.layer-8.com/sce/smp_detail.php3?argCatId=1&argSubCat=23&argSmpId=94
0033デフォルトの名無しさんNGNG
>>31
#define ee ;printf("%lf\n",__);}
,__); がとっても顔文字に見えるッス
なんかちょっと可愛いし
0034デフォルトの名無しさんNGNG
てすと
a    a
0035デフォルトの名無しさんNGNG
てすと
b&nbsp;&nbsp;&nbsp;&nbsp;b
■ このスレッドは過去ログ倉庫に格納されています