Language detail: J
Coverage: 36.76%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- echoクライアント (Nested Flatten)
- LL Golf Hole 4 - 文章から単語の索引を作る (Nested Flatten)
- tailの実装 (Nested Flatten)
- lessの実装 (Nested Flatten)
- LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する (Nested Flatten)
codes
LL Golf Hole 8 - 横向きのピラミッドを作る
(Nested
Flatten)
データは引数で。 >jconsole LL8.ijs 4 * ** *** **** *** ** *
1 | exit wd/.'*'$~,~".>2{ARGV
|
LL Golf Hole 7 - バイト数を読みやすくする
(Nested
Flatten)
データは標準入力から。 サンプルプログラムのように k=1000 で。 >echo 123|jconsole unit1.ijs 123 >echo 1234|jconsole unit1.ijs 1.2k >echo 123456789|jconsole unit1.ijs 123.5M >echo 12345678901234567|jconsole unit1.ijs 12345.7T
1 | exit wd;(a<1e3){a;~(0j1":a%10^3*b),(b=.((a=.x:".}:1!:1[3)>10^3*i.5)i:1){' kMGT'
|
LL Golf Hole 5 - 最上位の桁を数え上げる
(Nested
Flatten)
データは標準入力から。
1 | exit wd"0(a&>:#])0,,(10x^i.#":a=.".}:1!:1[3)*/>:i.9
|
LL Golf Hole 3 - 13日の金曜日を数え上げる
(Nested
Flatten)
フックとフォークを使うと頭くらくらしてくるけど、すこし縮んだ。
1 | exit wd(":,":&#)(#~13={:"1)todate(#~2=7|])(+[:i.78161-])todayno 3{.6!:0''[load'dates'
|
すみません。総数の表示が抜けていました。
1 2 | load'dates'
exit wd(":,":&#)(#~5&=&weekday)(#~13&=&{:"1)todate(+i.&(78161&-))todayno 3{.6!:0''
|
実行した日から2013年12月31日までの日付のテーブルをつくり13日を取り出し その中から金曜日を取り出しています。 実行結果 2009 2 13 2009 3 13 2009 11 13 2010 8 13 2011 5 13 2012 1 13 2012 4 13 2012 7 13 2013 9 13 2013 12 13
1 2 | load'dates'
exit wd(#~5&=&weekday)(#~13&=&{:"1)todate(+i.&(78161&-))todayno 3{.6!:0''
|
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする
(Nested
Flatten)
空白が2個以上続く場合におかしくなるのを 直していたら短くなった。
1 | exit wd}:;<&(toupper&{.,}.);.2,&' '1!:1[3
|
windows 用のコンソール版の場合です。 空白を単語の区切りとしています。 文字列は標準入力で与えます。 >echo "LL day and night" | jconsole ll2.ijs "LL Day And Night"
1 | exit wd;(,' '&;)/<&(toupper&{.,}.);._1' ',1!:1[3
|
憂鬱な勇者
(Nested
Flatten)
windows 用のコンソール版の場合です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | monster =: <;._1 ' 焼きたてパン 強いシャチホコ もんじゃ焼き一年生 怪人ホタテ男 ニセ勇者 逃げ足の早いアレ 睡魔 煩悩 愛らしい子犬の中の人 恋するスズメバチ 勇敢なクマンバチ 信じられない物 勇者の師匠 浮遊する鎧 怪盗ドボン 闇の招き猫 誘惑のカスタードクリーム しょっぱすぎる籠手 カレー味の兜 光沢だけは一流の盾 若葉マークのモンスター 新緑の季節 梅雨時の車両のニオイ 暑すぎる夏 新宿らしき何か やたら発達したドーナツ 育ちすぎたクマー なごやかな雰囲気 凍り付いた気配 忍び寄る恐怖'
skill =: <;._1 ' お豆腐の買い方 鉛筆の買い方 消しゴムの使い方 メモの取り方 攻撃に使えないこともない呪文 裏町の歩き方 森林浴 珈琲の味 しじみのみそ汁の作り方 回覧板の回し方 郵便物の投函方法 立ち話のコツ 猫の呼び方 犬の呼び方 カラスの呼び方 鳩専用豆鉄砲 秘密の趣味 速く走るコツ 剣の使い方 斧の使い方 まきわりで、まっきわりわり 聖なる祈り 孤独 涼しく過ごすコツ お洒落のコツ 卵をふわっと焼く方法 ごはんの研ぎ方 油汚れの対応方法 大人の振るまい Suicaの使い方'
sleep =: 6!:3
9!:1 >.5{6!:0 '' NB. random seed
p =: 1!:2&2 NB. print
main =: 3 : 0
sel =. ?@# { ]
for_i. >:i.30 do.
p '*-----'
p (>sel monster),'を倒した!'
p (":!x:i), 'の経験値を得た。'
if. i<30 do.
p '勇者は',(":i),'にレベルが上がった!'
p '勇者は、',(>sel skill),'を覚えた。'
p ''
sleep 2
p ''
p 'そして、'
p 'かくかくしかじかで、山あり谷ありの冒険が続いたが割愛。'
p ''
else.
p '勇者は、また、レベルが上がった!'
p '勇者は、ふと空しさを覚えた。'
end.
end.
)
exit main ''
|
2次元ランダムウォーク
(Nested
Flatten)
特に指定はないようなので、単位時間に上下左右の四方向に一歩ずつ 進む一番簡単そうなものにしました。 random_walk 10 1 0 _1 2 0 0 3 _1 0 4 _1 1 5 _2 1 6 _3 1 7 _2 1 8 _2 2 9 _2 3 10 _1 3
1 | random_walk=:3 :'(>:i.y),.+/\>(<:?y#4){0 _1;0 1;_1 0;1 0'
|
/*コメント*/を取り除く
(Nested
Flatten)
お題の実行例を満たす最小限の機能しかありませんが。 remove_comment 'AAA' AAA remove_comment 'AAA/*BBB*/' AAA remove_comment 'AAA/*BBB*/CCC' AAACCC remove_comment 'AAA/*BBB/*CCC*/DDD*/EEE' AAADDD*/EEE remove_comment 'AAA/a//*BB*B**/CCC' AAA/a/CCC
1 2 3 4 5 6 | remove_comment=: 3 :0
s=. ('/*'E.y)i.1
t=. s}.y
e=. ('*/'E.t)i.1
(s{.y),(2+e)}.t
)
|
環境変数の取得
(Nested
Flatten)
windows 用のコンソール版の場合です。 個々の環境変数は getenv で取得できるようですが、環境変数全体を 取得する方法が、わかりませんでした。存在しない変数名を指定すると 0 が返ります。
1 | exit echo getenv 'tmp'
|
クリップボードへの転送
(Nested
Flatten)
windows用のGUI版の場合です。コンソール版では 「wd」が再定義されていてうまくいきません。 clipcopy 'test test test' clippaste '' test test test
1 2 3 4 5 6 | clipcopy=:3 :0
wd 'clipcopy "',y,'"'
)
clippaste=:3 :0
wd 'clippaste'
)
|
総当たり戦の日程作成
(Nested
Flatten)
h 4 +---+---+ |1 2|3 4| +---+---+ |1 3|4 2| +---+---+ |1 4|2 3| +---+---+ h 6 +---+---+---+ |1 2|3 6|4 5| +---+---+---+ |1 3|4 2|5 6| +---+---+---+ |1 4|5 3|6 2| +---+---+---+ |1 5|6 4|2 3| +---+---+---+ |1 6|2 5|3 4| +---+---+---+ h 8 +---+---+---+---+ |1 2|3 8|4 7|5 6| +---+---+---+---+ |1 3|4 2|5 8|6 7| +---+---+---+---+ |1 4|5 3|6 2|7 8| +---+---+---+---+ |1 5|6 4|7 3|8 2| +---+---+---+---+ |1 6|7 5|8 4|2 3| +---+---+---+---+ |1 7|8 6|2 5|3 4| +---+---+---+---+ |1 8|2 7|3 6|4 5| +---+---+---+---+
1 2 3 | f=:3 :'1,.(|."0 1(2&+))i.<:y'
g=:3 :',<"1|:({.,:|.@{:)(--:#y)[\y'
h=:3 :'1|.g"1 f y'
|
比較しないソートの作成
(Nested
Flatten)
途中で (max-min+1)*n の配列ができちゃう。メモリ使いすぎ。
1 2 3 4 5 6 7 8 | sortx=:3 :0
min=. 0 { y
max=. 1 { y
n=. 2 { y
a=. 3 }. y
b=. min + i. 1 + max - min
(+/"1 b =/ a) # b
)
|
税込み価格への修正
(Nested
Flatten)
正規表現のライブラリを使ってみた。 data=.'ダイコン150円、ハクサイ120円、ジャガイモ30円' tax data ダイコン157円、ハクサイ126円、ジャガイモ31円
1 2 3 4 5 | load 'regex'
tax=:3 :0
f=. <. & (1.05 & *) &. ".
'[0-9]+' f rxapply y
)
|
ミリ秒まで含んだ時刻文字列
(Nested
Flatten)
next >>
「6!:0」は現在の日付・時刻のリストを返す。 6!:0 2008 6 23 15 55 21.345 dateString '' 20080623155521.345 データは揃っているので、printfを使えばできあがりと思ったら、 フォーマットの指定が、c言語なんかとは、だいぶ違うようで結局、 データを加工することになってしまいました。
1 2 3 4 5 | load 'printf'
dateString=:3 :0
a =. 6!:0 ''
'%.4d%.2d%.2d%.2d%.2d%.2d.%.3d' printf a,1e3*1|{:a
)
|





pooq
#7527()
[
J
]
Rating0/0=0.00
load 'dates' now =: 6!:0 DateEx =: 3 : 0 (": now '') DateEx y : wd 1 tsrep (y * 1000) + tsrep ". x )Rating0/0=0.00-0+
[ reply ]