あなごる

最近仕事が忙しく、あなごる参戦やこの日記がおろそかになっている。正常といえば正常だけど。

I love you

この問題は、記述がわかりにくいが、結局、

128*e**490

だ。タイトルの意味が未だわからず。215桁あるので、large numberのサポートが無い言語だと難しい。GroovyやJavaはBigInteger/BigDecimalがあるのだが、そういった高精度の数を扱う数学関数(expとか)はまったく無いのでつらい。なので、bc で参戦した。

Real Zero

実数のゼロ?0.0を出力するというもの。例によって、Whitespace, Minus, Whirlで投稿した。しかし、Whirlの難しさ、はんぱないな。
Groovyはちょっと面白かった。以下で、0.0が出力される。

print 0f

fはfloatのリテラルサフィックス。何で、0.0なんだか良くわからない。ベースとなっているJavaも同じだ。

A plus B problem

これは、56B@C がすごい。すでに3人が解答している。57B は簡単で以下の通り。

main(a,b){for(;~scanf("%d%d",&a,&b);)printf("%d\n",a+b);}

これからどう 1B 縮めろというんだ?

foofoo_free sequence

面白い問題だと思う。Groovy/JavaScript/Cで地道な方法でといたがもっと良い方法があるのだろうか?

Egyptian fraction

greedy algorithmで解けばよいようなので、まず、C でやってみたが、途中、integer overflow してしまい、面倒になって投げ出してしまった。

Tag system

これも面白かった。Collatz sequenceとの関係は Wikipedia に出ていた。jsgs では、a, b, c という変数を作成し、eval してやることでコンパクトな解が求まった。

Bowling again

過去問の bowling scorer と同じだ。問題のサンプル数が多くなっているので、embed 解が排除されるのだろうが、元の問題でも、ちゃんと計算したほうが短かったりする。
この問題も同じ方針で解けたので、spoiler とコメントして js で解を投稿したのだが、その解がまさに spoiler だった。失敗。shinh さん endless に変更してくれないかなぁ。
〜〜〜〜〜
最近、また、多くの言語が追加された。Malbolge が凄そうだな。そのうち調べてみようと思う。まだ、見ていない。Piet も凄いな。png イメージをつくらなければならないのか?
euphoria をちょっとやってみた。なんとなく Basic みたいだが、sequence という型がちょっと特殊だ。
出力は、puts() や printf() で行うが、atom と呼ばれているスカラの数値は、? で出力できる。
入力は、getc() や gets() で読むのだが、文字列(sequence)操作が貧弱っぽいので面倒。scanf() がほしい。数値を読みたい場合は、get() があるのだが、get() を使うためには、その定義を include しなければならない。しかも、現行の構成が正しくないのか、include ファイルはフルにパス指定をしてやらないと読めない。これも shinh さん直してくれないかなぁ。
以下、I/O ともに行うサンプルとして、Enumeration of divisor の例。

include../local/euphoria/include/get.e
object s
s=get(0)for i=1to s[2]do
if remainder(s[2],i)=0then?i end if
end for