アナゴル適当に公開

  • hello.cpp

nazoさんのあと1Bが謎。

 #include<ios>
 main(){puts("Hello, world!");}
iHello, world!

というわけで sed は入力無い問題も答えられるようになったのでみなさん sed を応援しましょう。

  • hello.bf

106B 。まだ縮むには縮むと思うんだけど flagitious さんに勝てる気は全然しない。

+++++++++[>++++>>+++>>+>>+[+<+<+++<+++<++<++<-[>>]<<]>-]>>.>++.>..+++.>>>-.<----.<++.<.+++.------.<-.>>>+.
  • hello.ws

Whitespace 人気無いなー。確かにつまらない言語だもんなぁ。ソースはれないし。欲しい人いたらコメントでもくれたらなんかします。

  • hello.bef

21B。ホント縮むと思えないなー。 Befunge仕様変えちゃったのは申し訳ない。

"!dlrow ,olleH">:#,_@

ソースが行方不明だよ!おっかしーなー。結構マジメに縮めた記憶があるんだけど勝ててない。

もう一個別解が作れたような。

i:
i:-
s/$/:-)/
:l
p
s/$/))/
/.\{65\}/!bl
  • smiley.bf

まぁ、普通に。

++++++++[>---->+>++>+++>>+[<++++]<-]>>+>--->++.>>++.<<.<.>>>.<[-<.<.<.<[-<+>]<[>+>..<<-]>+>>>>>.<]
  • smiley.di

特に難しくもないと思うのだけど。

class C(int i,char[]v){
pragma(msg,v);
static if(i<34)C!(i+1,v~"))-"[2/i..2+1/i])c;
}
C!(1,":")c;
  • tennis.rb

出力フォーマット調整するのは比較的得意分野ではあるけれど。

x=0
loop{x+=gets.hex*2-3
  y=x>0?x:-x
  g=$.+y>>1
  puts y<1?"Set is tied at #{g}":"Player#{x<0?1:2} #{g<7?'leads':'wins the set'} #{g} - #{g-y}"}
  • tennis.pl

適当に書いて ySas さんの化物ぷりにすぐ諦めたような。

$g=++$i+($y=($x+=$_*2-3)>0?$x:-$x)>>1,print(($y?Player.($x>0?2:1).$".($g<7?leads:"wins the set")." $g - ".($g-$y):"Set is tied at $g").$/)for<>
  • tennis.d

見るからにイマイチ

import std.stdio;
int s,x,y,g,i;
void main(){
    for(;~scanf("%d",&s);){
        x+=s*2-3;
        y=x>0?x:-x;
        g=++i+y>>1;
        y<1?writefln("Set is tied at ",g):writefln("Player%d %s %d - ",x<0?1:2,g<7?"leads":"wins the set",g,g-y);
    }}

組み込み関数を活用しよう

Perl 入門講座も三回目です

  • 第一回: Hello, world!

http://d.hatena.ne.jp/shinichiro_h/20061107#1162835826

http://d.hatena.ne.jp/shinichiro_h/20070105#1168009205

今回は Perl の組み込み関数を一部紹介します。

% perl -le '$v=x'
%

これは合法な Perl コードです。 x は解釈しようが無いので、 bare word として、 "x" と同じ扱いになるわけですね。つまりこのコードは $v="x"; と同じ扱いなのです。ところが、

% perl -le '$v=y'
Transliteration pattern not terminated at -e line 1.
%

おやーおかしいですね。なぜこの違いが生まれるかと言うと、 sed 由来の y という組み込み関数があるからこういうことになるのです。気をつけて下さいねー。

で、次です。

% perl -le '$v=s///'     # 合法
% perl -le '$v=+s///'    # 合法
% perl -le '$v=-s///'    # 非合法
Warning: Use of "-s" without parentheses is ambiguous at -e line 1.
syntax error at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
% 

いやー不思議ですねー。今度は、シェル由来のファイルテスト演算子、 -s があるからこういうことになってしまうのです。気をつけて下さいねー。

まとめ

今日は組み込み関数のうち、 y と -s を紹介しました。

おまけコーナー

$ で終わる不思議なプログラム。

% echo | perl -nle '$;=hello; print $'
hello

n や p オプションがついている場合、最後に $ で終わっていると $; に、 @ で終わっていると @; になります。いやー便利ですねー。これを NP 問題と言いません。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h