アナゴル適当に公開
- hello.cpp
nazoさんのあと1Bが謎。
#include<ios> main(){puts("Hello, world!");}
- hello.sed
iHello, world!
というわけで sed は入力無い問題も答えられるようになったのでみなさん sed を応援しましょう。
- hello.bf
106B 。まだ縮むには縮むと思うんだけど flagitious さんに勝てる気は全然しない。
+++++++++[>++++>>+++>>+>>+[+<+<+++<+++<++<++<-[>>]<<]>-]>>.>++.>..+++.>>>-.<----.<++.<.+++.------.<-.>>>+.
- hello.ws
Whitespace 人気無いなー。確かにつまらない言語だもんなぁ。ソースはれないし。欲しい人いたらコメントでもくれたらなんかします。
- hello.bef
21B。ホント縮むと思えないなー。 Befunge仕様変えちゃったのは申し訳ない。
"!dlrow ,olleH">:#,_@
- example.sed
ソースが行方不明だよ!おっかしーなー。結構マジメに縮めた記憶があるんだけど勝ててない。
- smiley.sed
もう一個別解が作れたような。
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 問題と言いません。