J

JOI2010-2011予選

順当にいけば満点。ソース掲載(提出したものとは違うやつもある)。

makeplex salon:あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 回答(もちろんJ言語で)

J

問題は右のリンクから あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 (2/2) - ITmedia エンタープライズまずは実際の動作から。 get_wait '1112224588899' +---+---+--+---+--+ |111|222|45|888|99| +---+---+--+---+--+ get_wait '1122…

J

a.{~(({.,^&5@{:)p:20 0),(*/(5#10)#:22333),((,7&+)".' '-.~":#:7),(p:*:5),(3.2%:65536),(6*p:

J言語の使用によるASCII文字の地獄への手引き

J

J言語ってどんな言語? Jのサイトによれば「モダンで、高級で、汎用的で、ハイパフォーマンスな」言語らしい。 有限オートマトンを2バイトで実装できるらしい。 超幾何級数を2バイトで計算できるらしい。 関数のメモ化が2バイトで実装できるらしい。 実際の…

Jのメーリングリストから面白かったものを幾つかピックアップ 1

J

その1 数列の合計と平均値 数列の合計は加算の動詞と挿入の副詞を使って +/a(aは数列) という風に書ける。数列の平均値は合計を要素数で割ればよいので除算の動詞と要素数を求める動詞を使って (+/ % #)a という風に書ける。このふたつの操作の実行時間は、…

Jで台形公式も書いたぞー

tr =: 1 : '{: * -:@+/@:(u"0)@({. , +/)' tarea =: 1 : '+/@:(u tr"1)@|:@(}:@({. + (-~/@}: % {:) * i.@>:@{:) ,: ({: # -~/@}: % {:))'trは補助の動詞副詞。tareaで求積。使い方は左端型のやつと同じ。以下サンプル。 *: tarea 1 2 2000 2.33333 ^. tarea…

Jで区分求積

area =: 1 : '+/ @ ((-~/@}: % {:) * u@}:@({. + (-~/@}: % {:) * i.@>:@{:))'副詞として書いた。v area a b nで、vのグラフで[a,b]間をn等分して求積する。単純な左端型なので収束は遅い。台形近似とかも書きたい。以下サンプル。 *: area 1 2 1000000 2.33…

インターネット上のファイルを取得する

J

数学にしか取り柄のない言語っぽいけどそうじゃないよ!っていうのを示す記事。 ファイル取得への道のり まずはネットワーク用のライブラリをロードする。 load 'socket' coinsert 'jsocket'loadでライブラリを読んでいる。coinsertはusing namespaceみたい…

コロン

J

Jでコロンって今までExplicitな定義にしか使ってなかったけど、実際は二つの意味があるようで。ひとつはExplicit Definitionで、これは引数が名詞のとき。で、もうひとつがMonad-Dyadでこれは引数が動詞のとき。Monad-Dyadっていうのは単項と二項の両方とし…

第1種ベッセル関数実装した

もちろんJで。 J =: 1 : '(i.0)H.(1+m)@(_0.25&*)@*: * ^&m@-:%(!m)"_' BesselJ =: 1 : 'if. (0>m)*.4=3!:0 m do. ((|m) J)*(_1^|m)"_ else. m J end.' NB. 第1種ベッセル関数 PBesselJ=: 1 : '((%~&m) * (m BesselJ)) - ((>:m) BesselJ)' NB. BesselJの微分…

ニュートン法とその改良版

wikipedia:ニュートン法のところに改良版が載ってるのでやってみた。 newton =: 1 : '- (u % u d. 1)' NB. そのまま newton2=: 1 : '- (*:@u % (u d. 1 * (u - u@(-(u % u d. 1)))))' NB. 改良版 f =: _2+*: NB. f(x) = x^2 - 2 NB. 2の平方根が求まる f new…

Jでハイパーメモ化再帰タイム

timer =: 6!:2 NB. 実行時間が計れるよ! fib =: ($:@-&2 + $:@:]) NB. ふつうにフィボナッチ数を求める fib"0 (i.18) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 fibx =: ($:@-&2 + $:@:]) M. NB. M.をつけるだけでメモ化しちゃう fibx"0 (…

階乗の実装

J F#

再帰の見本としてよく使われる階乗をJとF#で実装してみるテスト。 F#の場合 まずは普通に再帰的に実装してみる。 let rec fact = function 0 -> 1 | n -> n * fact (n-1) 次に末尾再帰の形で実装してみる。 let rec fact2 n res = if n = 0 then res else fa…

文字列あれこれ

部分文字列出現回数 in Python >>> 'PythonPythonF#PythonJPythonF#PythonPython'.count('Python') 6 in J +/'Python' E. 'PythonPythonF#PythonJPythonF#PythonPython' 6 接尾辞チェック in Python >>> 'Python'.endswith('thon') True >>> 'language J'.en…