人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【プログラム クイズ】
Codepad(http://codepad.org/)を使って
「自分自身を出力するプログラム」を作ってみて下さい。


つまり、ソースと出力結果が同じになるプログラムです。
言語はCodepadで使用可能な言語であればどれでも構いません。

●質問者: garyo
●カテゴリ:コンピュータ インターネット
✍キーワード:クイズ ソース プログラム 可能 結果
○ 状態 :終了
└ 回答数 : 11/11件

▽最新の回答へ

1 ● imo758
●15ポイント

http://codepad.org/CgFGPB8O

とりあえず完成速度第一に考えたのでひねりなくてすいません

@a=<DATA>;
print @a;
print "__DATA__\n";
print @a;
__DATA__
@a=<DATA>;
print @a;
print "__DATA__\n";
print @a;
◎質問者からの返答

ありがとうございます。

言語はPerlですね。


2 ● practicalscheme
●15ポイント

ちょっと変化球。Schemeだけど処理系依存あり: http://codepad.org/V2GaSgfk

Gaucheでは上のを走らせると出力が止まらないので注意。かわりにこれを: #0=(write/ss '#0#)

◎質問者からの返答

ありがとうございます。

いろいろな言語が出てきて嬉しいです。


3 ● snmp
●15ポイント

perlで書いてみました。

($0で自身のファイル名を取得)

#!/usr/bin/perl

use strict;
use warnings;

open(FILE,"<$0");
while(my $line = <FILE>){
 chomp $line;
 print $line."\n";
}
exit;
◎質問者からの返答

ありがとうございます。

Codepadで動くのかなと思って試してみたらちゃんと動きました。

サーバー上でのファイル名を取得するんですね。


4 ● 勇者よっしー
●15ポイント

// もしも引数が指定できるならそこに吐き出します

// 引数なしならそこに標準出力で出力します

#include <stdio.h>

int main(int argc, char *argv[])

{

char buf[4096];

FILE *rfd = fopen(__FILE__,"r");

FILE *wfd;

if( argc == 2 ) {

wfd = fopen( argv[1], "w" );

if( !wfd )

{

printf("Error! %s cannot output path\n", argv[1] );

return 1;

}

} else {

wfd = stdout;

}

while( fgets(buf,sizeof(buf),rfd ) ) {

fprintf(wfd,"%s",buf);

}

fclose(wfd);

fclose(rfd);

}

◎質問者からの返答

ありがとうございます。

c言語版ですね。


5 ● tyne
●15ポイント

Pythonでかいてみました。

ソース:

import os

path = os.path.abspath(__file__)

for line in open(path):

print line

リンク:Python code by yoshiyukiohta - 4 lines - codepad

◎質問者からの返答

ありがとうございます。

ファイルをソースにする方が多いですね。


1-5件表示/11件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ