1190912918 「人力検索」の回答欄でも「シンタックス・ハイライト」(「スーパーpre記法」の構文色分け表示機能)が使えるようになったようです。


■ 人力検索の回答欄でシンタックス・ハイライトが適用されるようになりました
http://hatena.g.hatena.ne.jp/hatenaquestion/20070927/1190891624

使えるファイルタイプは 500 種類近くあるようですが、知らない言語も多数あります。
それぞれ、どのような色分けがされるのか、興味がありますので、サンプルを募集したいと思います。

・ファイルタイプ名
・ファイルタイプの説明(もしくは参考となる URL)
・サンプルコード(Hello, World! 程度で構いません)

※ 1人、何件でも回答可能(最大50件)ですが、1回答、1サンプルでお願いします。

回答の条件
  • 1人50回まで
  • 登録:2007/09/28 02:08:42
  • 終了:2007/10/04 04:05:05

ベストアンサー

id:Mook No.9

Mook回答回数1312ベストアンサー獲得回数3912007/09/29 09:11:31

ポイント40pt

IOCCC(The International Obfuscated C Code Contest(国際邪悪なCコードコンテスト)

の1986年の作品です。


コメントにあるように、

C言語、f77、/bin/sh で動作するプログラム。「Hello world!」と出力する

プログラムです。同じコードで言語指定を変えてみました。


  • C
cat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/

  • Fortran
cat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/

  • sh
cat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/
id:cx20

面白いサンプルありがとうございます。

一応、色分けはされているようですが、やはり読みにくいですね(汗)

コメントを取り除いて、ようやく理解できました。

----------------------------------

<C>

※ 「/*」~「*/」はコメント

※ write() にて 標準出力(cat-~-cat → 13 - ( ~(-13) ) = 13 - 12 = 1 → stdout)に "Hello, world!" を出力

※ putchar() にて 標準出力に改行( ~-~-~-cat → ~(-(~(-(~(-13))))) = 10 → '\n'(0x0a) )を出力

----------------------------------

cat =13;

main() {

write(cat-~-cat,"Hello, world!",cat);

putchar(~-~-~-cat);

}

----------------------------------

<Fortran>

※ 先頭の「C」または「*」の場合コメント

※ 継続行の場合は6桁目に「0」でも「空白」でもない文字をセット

※ WRITE 文を用いて "Hello, world!" を出力

----------------------------------

write(*,'("Hello, world!")')

end

----------------------------------

<sh>

※ cat の結果を null デバイス出力

※ echo で "Hello, world!" を出力

※ exit 以降は実行されない

----------------------------------

cat =13 /*/ >/dev/null 2>&1;

echo "Hello, world!";

exit

----------------------------------

2007/09/29 17:05:28

その他の回答(8件)

id:heppokoA No.1

heppokoA回答回数65ベストアンサー獲得回数72007/09/28 06:18:11

ポイント20pt

PHPで!

<?php
require_once('sample.php');

class MyHello
{
    public $MyName;
    public function SayHello(){
        print "Hello, this is ".$this->MyName;
    }
}

$myHello = new MyHello();
$myHello->MyName = "heppokoA";
$myHello->SayHello();

exit;
?>
id:cx20

ありがとうございます。

2007/09/28 08:22:19
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/09/28 06:26:07

ポイント15pt
; test 1 program for checking segment overlap error

;lab.	mnemonic		comment	
	.text
	.word	_MAIN
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.dword	0x12312345

_MAIN:	ld	 #0x8
	push
	swp
	or	#0x00		; sp = 0x800
	mv	sp, acc
	in	0		; input n
	push
	call	radd
	pop
	out	0x0		; result
	halt
;

radd:	mv	ixr, sp
	ld	ixr, 1
	push	
	or	#0
	jpz	radd0
	dec	acc
	push
	call	radd
	pop
	mv	ixr, sp
	add	ixr, 0
radd0:	mv	ixr, sp
	st	ixr, 2
	pop			; dummy pop
	ret

	.data	0x020
ZERO:	.word	  0
D100:	.word	100

	.const	0xfff
	.word	_MAIN

masm

http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/samples...

id:cx20

ありがとうございます。16進数の色分け微妙ですね。MASM とは、ちょっと違うのかも・・・。

2007/09/28 08:27:40
id:GEN111 No.3

GEN111回答回数472ベストアンサー獲得回数582007/09/28 07:29:23

ポイント20pt

ocaml で。

let rec hoge m = Printf.printf "Hello,world\n" ; if (m > 0) then hoge(m - 1) ;;
id:cx20

ありがとうございます。

2007/09/28 08:27:49
id:b-wind No.4

b-wind回答回数3344ベストアンサー獲得回数4402007/09/28 09:15:00

ポイント20pt

やっとできるようになったんだ。

Perl

#!/usr/bin/perl
use strict;
use warnings;

my $message = "Hello,world!\n";
print $message;

sh

#!/bin/sh

MESSAGE="Hello,world!"

echo "$MESSAGE"

自動判別はないようですね。

id:cx20

ありがとうございます。

2007/09/28 12:11:37
id:rikuzai No.5

りくっち回答回数1366ベストアンサー獲得回数1412007/09/28 12:17:05

ポイント20pt

よくわからないのにやってみたがりですみません。

とりあえずvb。


Sub Say_Hello()

    Range("A1").Value = "Hello,World!"
    With ActiveCell.Font
        .ColorIndex = 3

    End With

End Sub
id:cx20

ありがとうございます。

2007/09/28 12:24:43
id:Bookmarker No.6

しおり回答回数191ベストアンサー獲得回数342007/09/28 12:33:32

ポイント30pt

ファイルタイプ一覧を見てたら、意外なものがあったので…

Valgrind:

==2756== Memcheck, a memory error detector for x86-linux.
==2756== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward.
==2756== Using valgrind-2.1.0, a program supervision framework for x86-linux.
==2756== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward.
==2756== Estimated CPU clock rate is 500 MHz
==2756== For more details, rerun with: -v
==2756== 
==2756== 
==2756== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==2756== malloc/free: in use at exit: 320 bytes in 1 blocks.
==2756== malloc/free: 1 allocs, 0 frees, 320 bytes allocated.
==2756== For counts of detected errors, rerun with: -v
==2756== searching for pointers to 1 not-freed blocks.
==2756== checked 2189936 bytes.
==2756== 
==2756== 320 bytes in 1 blocks are still reachable in loss record 1 of 1
==2756==    at 0x3C0382F3: operator new(unsigned) (in /usr/local/lib/valgrind/vgpreload_memcheck.so)
==2756==    by 0x3C0B7FC1: std::__default_alloc_template<true, 0>::_S_chunk_alloc(unsigned, int&amp;) (stl_alloc.h:108)
==2756==    by 0x3C0B7EDB: std::__default_alloc_template<true, 0>::_S_refill(unsigned) (stl_alloc.h:550)
==2756==    by 0x3C0B7C48: std::__default_alloc_template<true, 0>::allocate(unsigned) (stl_alloc.h:357)
==2756== 
==2756== LEAK SUMMARY:
==2756==    definitely lost: 0 bytes in 0 blocks.
==2756==    possibly lost:   0 bytes in 0 blocks.
==2756==    still reachable: 320 bytes in 1 blocks.
==2756==         suppressed: 0 bytes in 0 blocks.

# まだ、「&」がバグってる…

id:cx20

ありがとうございます。マニアックなファイルにも対応しているようですね。

2007/09/28 13:05:46
id:taknt No.7

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/09/28 19:01:24

ポイント25pt

pascal

http://dn.codegear.com/jp/article/33907

ソースは Delphiのものです。

一応 パスカルですからね。

procedure TfrmCalc.btnKeisanClick(Sender: TObject);
var
  Num1 : Integer;
  Num2 : Integer;
  Ans : Double;
begin
  Num1 := StrToIntDef(edtInput1.Text, 0);
  Num2 := StrToIntDef(edtInput2.Text, 0);
  if lblEnzan.Caption = '+' then
    Ans := Num1 + Num2 // セミコロン削除
  else if lblEnzan.Caption = '-' then
    Ans := Num1 - Num2 // セミコロン削除
  else if lblEnzan.Caption = '×' then
    Ans := Num1 * Num2 // セミコロン削除
  else if lblEnzan.Caption = '÷' then
    Ans := Num1 / Num2;
  edtKekka.Text := FloatToStr(Ans);
end;

コメントが 文字化けするので ハイライトしないのもつけておきます。

procedure TfrmCalc.btnKeisanClick(Sender: TObject);
var
  Num1 : Integer;
  Num2 : Integer;
  Ans : Double;
begin
  Num1 := StrToIntDef(edtInput1.Text, 0);
  Num2 := StrToIntDef(edtInput2.Text, 0);
  if lblEnzan.Caption = '+' then
    Ans := Num1 + Num2 // セミコロン削除
  else if lblEnzan.Caption = '-' then
    Ans := Num1 - Num2 // セミコロン削除
  else if lblEnzan.Caption = '×' then
    Ans := Num1 * Num2 // セミコロン削除
  else if lblEnzan.Caption = '÷' then
    Ans := Num1 / Num2;
  edtKekka.Text := FloatToStr(Ans);
end;
id:cx20

ありがとうございます。日本語全滅なんですね・・・。

2007/09/28 19:17:35
id:taknt No.8

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/09/29 07:24:23

ポイント20pt

zsh

UNIXのシェルです。

http://homepage1.nifty.com/blankspace/zsh/zsh.html

http://ja.wikipedia.org/wiki/Zsh

precmd() {
    hostnam=${HOST##.*}     # wildcard, not regex!
    usernam=$(whoami)
    newPWD=${PWD}
    #   アクセサリをつけていく
    promptstr="--(${usernam}@${hostnam})-<mm/dd-hh:mm>---(${PWD})--"
    fillsize=$(( ${COLUMNS} - ${#promptstr} ))      # プロンプト幅を計算
    if [ $fillsize -ge 0 ]
    then
        fill=${(l.${fillsize}..-.)}
    else
        fill=""
        offset=$(( (${fillsize}*(-1)) + 4 ))
        newPWD="..."${newPWD[${offset},-1]}
    fi
}

termwide() {

local GRAY=$'%{\e[1;30m%}'
local LIGHT_GRAY=$'%{\e[0;37m%}'
local WHITE=$'%{\e[1;37m%}'

local LIGHT_BLUE=$'%{\e[1;36m%}'
local YELLOW=$'%{\e[1;33m%}'
local PURPLE=$'%{\e[1;35m%}'
local GREEN=$'%{\e[1;32m%}'
local BLUE=$'%{\e[1;34m%}'

PROMPT=$YELLOW"-"$BLUE"-("$YELLOW"\${usernam}"$LIGHT_BLUE"@"$YELLOW"\${hostnam}"\
$BLUE")-<"$YELLOW"%D{%m}"$LIGHT_BLUE"/$YELLOW%D{%d}"$BLUE"-"\
$PURPLE"%D{%H}"$LIGHT_BLUE":"$PURPLE"%D{%M}"$BLUE">-"\
$YELLOW"-\${fill}"$BLUE"-("$YELLOW"\${newPWD}"$BLUE")-"$YELLOW"-"\
$'\n'\
$YELLOW"-"$BLUE"-["\
$YELLOW"%h"\
$BLUE"]"$WHITE"%#"\
$'%{\e[0m%} '

PROMPT2=$LIGHT_BLUE"-"$YELLOW"-"$YELLOW"-"$LIGHT_GRAY$'%{\e[0m%} '
}

ハイライトなし

precmd() {
    hostnam=${HOST##.*}     # wildcard, not regex!
    usernam=$(whoami)
    newPWD=${PWD}
    #   アクセサリをつけていく
    promptstr="--(${usernam}@${hostnam})-<mm/dd-hh:mm>---(${PWD})--"
    fillsize=$(( ${COLUMNS} - ${#promptstr} ))      # プロンプト幅を計算
    if [ $fillsize -ge 0 ]
    then
        fill=${(l.${fillsize}..-.)}
    else
        fill=""
        offset=$(( (${fillsize}*(-1)) + 4 ))
        newPWD="..."${newPWD[${offset},-1]}
    fi
}

termwide() {

local GRAY=$'%{\e[1;30m%}'
local LIGHT_GRAY=$'%{\e[0;37m%}'
local WHITE=$'%{\e[1;37m%}'

local LIGHT_BLUE=$'%{\e[1;36m%}'
local YELLOW=$'%{\e[1;33m%}'
local PURPLE=$'%{\e[1;35m%}'
local GREEN=$'%{\e[1;32m%}'
local BLUE=$'%{\e[1;34m%}'

PROMPT=$YELLOW"-"$BLUE"-("$YELLOW"\${usernam}"$LIGHT_BLUE"@"$YELLOW"\${hostnam}"\
$BLUE")-<"$YELLOW"%D{%m}"$LIGHT_BLUE"/$YELLOW%D{%d}"$BLUE"-"\
$PURPLE"%D{%H}"$LIGHT_BLUE":"$PURPLE"%D{%M}"$BLUE">-"\
$YELLOW"-\${fill}"$BLUE"-("$YELLOW"\${newPWD}"$BLUE")-"$YELLOW"-"\
$'\n'\
$YELLOW"-"$BLUE"-["\
$YELLOW"%h"\
$BLUE"]"$WHITE"%#"\
$'%{\e[0m%} '

PROMPT2=$LIGHT_BLUE"-"$YELLOW"-"$YELLOW"-"$LIGHT_GRAY$'%{\e[0m%} '
}

id:cx20

ありがとうございます。やはり色分けされていた方が見やすいですね。

2007/09/29 09:38:46
id:Mook No.9

Mook回答回数1312ベストアンサー獲得回数3912007/09/29 09:11:31ここでベストアンサー

ポイント40pt

IOCCC(The International Obfuscated C Code Contest(国際邪悪なCコードコンテスト)

の1986年の作品です。


コメントにあるように、

C言語、f77、/bin/sh で動作するプログラム。「Hello world!」と出力する

プログラムです。同じコードで言語指定を変えてみました。


  • C
cat =13 /*/ >/dev/null 2>&amp;1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/

  • Fortran
cat =13 /*/ >/dev/null 2>&amp;1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/

  • sh
cat =13 /*/ >/dev/null 2>&amp;1; echo "Hello, world!"; exit
*
*  This program works under cc, f77, and /bin/sh.
*
*/; main() {
      write(
cat-~-cat
     /*,'(
*/
     ,"Hello, world!"
     ,
cat); putchar(~-~-~-cat); } /*
     ,)')
      end
*/
id:cx20

面白いサンプルありがとうございます。

一応、色分けはされているようですが、やはり読みにくいですね(汗)

コメントを取り除いて、ようやく理解できました。

----------------------------------

<C>

※ 「/*」~「*/」はコメント

※ write() にて 標準出力(cat-~-cat → 13 - ( ~(-13) ) = 13 - 12 = 1 → stdout)に "Hello, world!" を出力

※ putchar() にて 標準出力に改行( ~-~-~-cat → ~(-(~(-(~(-13))))) = 10 → '\n'(0x0a) )を出力

----------------------------------

cat =13;

main() {

write(cat-~-cat,"Hello, world!",cat);

putchar(~-~-~-cat);

}

----------------------------------

<Fortran>

※ 先頭の「C」または「*」の場合コメント

※ 継続行の場合は6桁目に「0」でも「空白」でもない文字をセット

※ WRITE 文を用いて "Hello, world!" を出力

----------------------------------

write(*,'("Hello, world!")')

end

----------------------------------

<sh>

※ cat の結果を null デバイス出力

※ echo で "Hello, world!" を出力

※ exit 以降は実行されない

----------------------------------

cat =13 /*/ >/dev/null 2>&1;

echo "Hello, world!";

exit

----------------------------------

2007/09/29 17:05:28
  • id:GEN111
    日本語書いたら文字化けする……
  • id:cx20
    文字化けの件は、アイデアの方に上げておきました。
    http://i.hatena.ne.jp/idea/17197
  • id:Mook
    解読ご苦労様でした^^。



    >|| では修正された
    & が &amp;
    になってしまう問題(不具合?)が復活していますね。
    (そういえばfortran のコメントも一部正常に機能していないような。)

    使いやすくなるまでには、もうしばらくかかりそうです。
  • id:cx20
    > 文字化けの件は、アイデアの方に上げておきました。
    > http://i.hatena.ne.jp/idea/17197

    アイデアの状態が「要望」→「検討中」(調査します)に変更されたようです。
    せっかくの機能なので、是非、対応してもらいたいところです。

    > そういえばfortran のコメントも一部正常に機能していないような。

    ダイアリーの方で試したら同じ動作(色分けの仕方)をするようです。
    あまり複雑な構文には対応してないのかも知れませんね・・・。
  • id:Mook
    楽しいスレッドと、献身的な対応ありがとうございます。

    これで少しでもみんなが回答しやすくなると嬉しいですね。
  • id:cx20
    > 文字化けの件は、アイデアの方に上げておきました。
    > http://i.hatena.ne.jp/idea/17197

    ようやく修正されたようです。

この質問への反応(ブックマークコメント)

トラックバック

  • Mookノート - Hello World 2009-09-14 01:49:34
    Hello World **世界一有名なプログラム プログラミングをしたことのある多くの人は、この言葉にピンとくるだろう。 どのような言語でも最初に文字を表示するプログラムのサンプルとしてこ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません