Language detail: J

Coverage: 36.76%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

next >>

文字列型日時ののN秒後時間取得 (Nested Flatten)
関数に出力機能まで含めるとなんか使いにくそう。

   '2008 8 27 23 59 25' DateEx 40
2008 8 28 0 0 5

   '2008 8 27 23 59 25' DateEx _40
2008 8 27 23 58 45

   DateEx 100000000
2011 11 3 0 12 46.731
1
2
3
4
5
6
7
8
9
load 'dates'

now =: 6!:0

DateEx =: 3 : 0
(": now '') DateEx y
:
wd 1 tsrep (y * 1000) + tsrep ". x
)
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 6 - 10進数を2進数に基数変換する (Nested Flatten)

	
1
exit wd 1":#:".}:1!:1[3
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 用のコンソール版の場合です。
1
exit echo >1{ARGV
環境変数の取得 (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)
「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
)
next >>

Index

Feed

Other

Link

Pathtraq

loading...