Language detail: JavaScript
Coverage: 83.69%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- π (Nested Flatten)
- タブ区切りデータの処理 (Nested Flatten)
- 起動オプションの解析 (Nested Flatten)
- echoクライアント (Nested Flatten)
- tailの実装 (Nested Flatten)
codes
数値リストの圧縮
(Nested
Flatten)
//[1, [3, 6], 12, 13, [15, 25, 5], 26, 27] <= //compact_number_list([1, 3, 4, 5, 6, 12, 13, 15, 20, 25, 26, 27])
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 | function compact_number_list(anArray){
var len = anArray.length;
var result = new Array();
for(var i=0;i<len;i++){
var seq;
if(seq=isSequence(anArray[i], i, anArray)){
result.push(seq);
i += (seq[2])? (seq[1]-seq[0])/seq[2] : seq[1]-seq[0];
} else {
result.push(anArray[i]);
}
}
return result;
}
function isSequence(el, index, array){
var next=array[index+1];
if(next == undefined){ return false; }
var d = next - el;
for(var i=0;array[index + i] == el + i * d;i++);
if(i>2){
return (d==1) ? [el, array[index + i -1]] : [el, array[index + i -1], d];
} else {
return false;
}
}
|
Tiny MML
(Nested
Flatten)
ADODB.Streamでsmfを吐いて、関連付けされたプレイヤーで再生。「音を鳴らすプログラム」・・・ではない。
-----------------------------------
C:\temp>cscript /nologo tinymml.js cdefedcrefgagfercrcrcrcrcdefedcr
-----------------------------------
C:\temp>cscript /nologo tinymml.js cdefedcrefgagfercrcrcrcrcdefedcr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function arrayToFile(filename, array){
var stream = WScript.CreateObject('ADODB.Stream');
stream.Charset = 'iso-8859-1';
stream.Open();
for (var i=0; i < array.length; i++)
stream.WriteText(String.fromCharCode(array[i]));
stream.SaveToFile(filename, 2);
stream.Close();
}
var note = {r:0,c:60,d:62,e:64,f:65,g:67,a:69,b:71};
var body = [];
WScript.Arguments.Item(0).toLowerCase().replace(/([a-gr])/g, function(n){
body = body.concat([0,144,note[n],n=='r'?0:90,24,144,note[n],0]);});
var size = body.length + 4;
head = [77,84,104,100,0,0,0,6,0,0,0,1,0,48,77,84,114,107,
size>>24&0xff, size>>16&0xff, size>>8&0xff, size&0xff];
arrayToFile('sample.mid', head.concat(body.concat([0,255,47,0])));
WScript.CreateObject('WScript.Shell').run('sample.mid');
|
2^i * 3^j * 5^k なる整数
(Nested
Flatten)
Javascript@Firebug。 n2,n3,n5の最大値は試行錯誤で決めてます
1 2 3 4 5 6 7 8 | var o={};
for(var n2=0; n2<=11; n2++)
for(var n3=0; n3<=8; n3++)
for(var n5=0; n5<=7; n5++)
o[Math.pow(2,n2)*Math.pow(3,n3)*Math.pow(5,n5)] = [n2,n3,n5];
for(var i=0,c=0;c<100;i++)
if(o[i]!=null)
console.debug(++c, ". ", i, "= 2^", o[i][0], " + 3^", o[i][1], " + 5^", o[i][2]);
|
コラッツ・角谷の問題
(Nested
Flatten)
n = 1..2^k の範囲で最大ステップ求める場合は、
2^k-1..2^k 間だけ調べることにしました。
後はいたって普通というか、回りくどいというか。
CeleronM1.8GHz, Memory1GB, WindowsXP, WSH(JScript)
--------------------
C:\temp>cscript //nologo collatz.js
f( 837799 ) = 524
time = 29578ms
2^k-1..2^k 間だけ調べることにしました。
後はいたって普通というか、回りくどいというか。
CeleronM1.8GHz, Memory1GB, WindowsXP, WSH(JScript)
--------------------
C:\temp>cscript //nologo collatz.js
f( 837799 ) = 524
time = 29578ms
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function steps(n){
var step = 0;
for(;n!=1; step++)
n = (n&1) ? n*3+1 : n/2;
return step;
}
function maxim(lim){
var result = 0;
var step = 0;
for(var i=(lim&(lim-1))?1:lim/2; i<=lim; i++){
var temp = steps(i);
if(temp > step) { step=temp; result=i; }
}
return result;
}
var tm = (new Date).getTime();
var n = maxim(Math.pow(2,20));
var s = steps(n);
WScript.Echo('f( '+n+' ) = '+s);
WScript.Echo('time = '+((new Date).getTime()-tm) + 'ms');
|
LL Golf Hole 7 - バイト数を読みやすくする
(Nested
Flatten)
極めて強引に。
1 2 3 4 5 6 | (function(x){
alert(eval(
'[x'+'kMGTPEZY'.replace(/(.)/g,
',0|(x/=1024)?x.toFixed(2)+"$1":"z"')+'].sort()'
)[0]);
})(123456789012345)
|
LL Golf Hole 9 - トラックバックを打つ
(Nested
Flatten)
JavaScript@Firebugコンソールで。
本エントリにも打ってみたけどカップインしたのかわからない・・・。
打ちっ放し場のほうには行けました。
本エントリにも打ってみたけどカップインしたのかわからない・・・。
打ちっ放し場のほうには行けました。
1 2 3 4 5 6 7 8 9 10 11 12 | function x(o,a){for(var k in a)o[k]=a[k]; return o;}
var f=x(document.createElement('form'),{action:'http://d.hatena.ne.jp/takano32/20080905',method:'POST'});
var d={
title:'どう書くのお題で打ってみます!',
excerpt:'だれかにぶつけたらごめんね!',
url:'http://ja.doukaku.org/207/#orz',
blog_name:'LL Golf Hole 9'
}
for(var k in d)
f.appendChild(x(document.createElement('input'),{type:'hidden',name:k,value:d[k]}));
document.body.appendChild(f);
f.submit();
|
文字列型日時ののN秒後時間取得
(Nested
Flatten)
JavaScriptのパーサを使用。Firebugで確認。
出力形式にあわせるとこんな入力になった。
toLocaleStringメソッドを使えば"2008年9月2日 8:50:34"のように出力するが、パーサが解釈してくれない。
>>> DateEx('Tue Sep 02 2008 8:30:00',1234)
"Tue Sep 02 2008 08:50:34 GMT+0900"
出力形式にあわせるとこんな入力になった。
toLocaleStringメソッドを使えば"2008年9月2日 8:50:34"のように出力するが、パーサが解釈してくれない。
>>> DateEx('Tue Sep 02 2008 8:30:00',1234)
"Tue Sep 02 2008 08:50:34 GMT+0900"
1 | function DateEx(t,s) new Date(Date.parse(t)+s*1000).toString();
|
LL Golf Hole 5 - 最上位の桁を数え上げる
(Nested
Flatten)
コンパイル時に /fast- を指定してください。
1 | for(i=-1;i++<300;)/^.0*$/.test(i)&&print(i)
|
LL Golf Hole 8 - 横向きのピラミッドを作る
(Nested
Flatten)
ワンライナーで。半角空白を除くと 110バイトになります。 # 先頭に 'javascript:'という文字列を追加して、ブラウザのアドレスバーに貼り付けて # ください。
1 | (function (n) { var i = n, s = t = ''; for ( ; i--; ) s += '*'; for (i = -n; i < n; i++) t += s.substr(0, n - Math.abs(i)) + '\n'; alert(t); })(4)
|
68B。
see: anarchy golf - ASCII Stars
1 | for(i=n=readline();--i>-n;print(o))for(o='',j=i<0?-i:i;j++<n;)o+='*'
|
1 | p=print;(function f(n, s){if(!n)return p(s);p(s);f(n-1, s + "*");p(s)})(4,"");
|
LL Golf Hole 7 - バイト数を読みやすくする
(Nested
Flatten)
#7320をお手本にJavaScriptで。( toFixed()メソッドがちょっと嫌な感じですが。)
1 2 3 4 | (function (d) {
for (var i = 0; d >= 1024; d /= 1024, i++);
alert(d.toFixed(2) + ' kMGTPEZY'.charAt(i));
})(123456789012345);
|
LL Golf Hole 6 - 10進数を2進数に基数変換する
(Nested
Flatten)
Java6付属のRhinoでワンライナー。 コマンドライン引数から整数を受け取る。
1 | jrunscript -e "print((arguments[0]*1).toString(2))" 123
|
LL Golf Hole 5 - 最上位の桁を数え上げる
(Nested
Flatten)
やはり正規表現が強い。
1 | javascript:for(a=[i=0];i<300;)a[/^.0*$/(++i)]=i;a
|
1 | javascript:for(a=[i='0'];i<300;)a.push(i=++i[0]+i.slice(1));a
|
while文を1行にした。
1 2 3 4 5 6 | function f(n) {
var m = 0, r = [m];
while (n >= (m += Math.pow(10, (("" + m).length - 1)))) r.push(m);
return r;
}
alert(f(300).join("\n"));
|
1 2 3 4 5 6 7 8 9 | function f(n) {
var m = 0, r = [];
while (n >= m) {
r.push(m);
m += Math.pow(10, (("" + m).length - 1));
}
return r;
}
alert(f(300).join("\n"));
|
LL Golf Hole 4 - 文章から単語の索引を作る
(Nested
Flatten)
> #7103 /.+/g だと空白行がカウントされてないのでは
1 | javascript:for(d={},i=1;l=/[^\n]*\n/g(document.body.textContent);++i)for(;w=/\w+/g(l);)(d[w]=d[w]||[]).push(i);uneval(d)
|
LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する
(Nested
Flatten)
next >>
Rhinoで。そのまんますぎる。
1 | readUrl("http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo")
|






nobusuke_neko
#7722()
[
JavaScript
]
Rating0/0=0.00
JScript(WSH)。
-------------------------------
C:\temp>cscript /nologo bucketsort.js
-1 2 3 4 5 6 8 9 9 9
Rating0/0=0.00-0+
[ reply ]