かなり前にjavascriptさわってみよう!と思って作ってみたものを二つ. ソースコードはgistで公開していますが,あらためてブログで公開っていうのはなんだか恥ずかしい感じもあります.
整数並び替え
主観評価実験をやるときの提示順序を決定するときによく,1からNまでの整数をランダムに並び替えるということをやっていて,これをjavascriptで書いてみよう!と思って,やってみたもの. HTMLファイルで保存してあったので,gistにはHTMLファイルをアップロードした.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>1からNまでの整数をランダムに並び替える</title> | |
</head> | |
<body> | |
<h1>1からNまでの整数をランダムに並び替える</h1> | |
<p>並び替えたい数の最大値を入力してください: <input type="text" name="max" id="max" value="0" /> <input type="button" value="決定" onclick="getMax();" /></p> | |
<p><input type="button" value="並び替える" onclick="randOrder();"/></p> | |
<p>並び替え前: <span id="before"></span></p> | |
<p>並び替え後: <span id="after"></span></p> | |
<script> | |
var before; | |
var after; | |
function getMax(){ | |
var max = document.getElementById('max').value; | |
before = new Array(max); | |
after = new Array(max); | |
for(var i=0;i<max;i++) { | |
before[i] = i+1; | |
} | |
document.getElementById('before').innerHTML = before; | |
} | |
function randOrder() { | |
var j = 0; | |
while(before.length > 0) { | |
var r = Math.floor(Math.random() * before.length); | |
after[j] = before[r]; | |
before.splice(r,1); | |
j++; | |
} | |
document.getElementById('after').innerHTML = after; | |
} | |
</script> | |
</body> | |
</html> |
Ruby版もつくっていた
実際には,よく使っているのはRuby版でした.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- encoding: utf-8 -*- | |
# 2012/11/01 | |
# 1からNまでの整数をランダムに並び替える | |
# 上限値Nを入力してもらう | |
puts "並び替えたい数の上限値を入力してください" | |
max = gets.to_i | |
# 並び替え前の数字が入る配列と並び替え後の配列を用意する | |
before = Array.new(max) | |
after = Array.new(max) | |
# 1からmaxを配列beforeに入れる | |
for i in 1..max do | |
before[i-1] = i | |
end | |
# 1からNの数字をランダムな順序に並び替える | |
j = 0 | |
while before.length > 0 do | |
r = rand(before.length) | |
after[j] = before[r] | |
before.delete_at(r) | |
j += 1 | |
end | |
# 並び替えた数字を出力する | |
puts "並び替えました" | |
after.each_index { |i| | |
puts after[i] | |
} |
日数カウントダウン
M2のときに修論がんばるためにつくったもの. 研究室のPCを起動したら,ブラウザがたちあがって,修論提出までの日数が表示されるというふうにして,自分のケツを叩きまくってました.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE HTML> | |
<html lang="ja"> | |
<head> | |
<meta charset="UTF-8"/> | |
<title>いろいろカウントダウン</title> | |
</head> | |
<body> | |
<h1>残り日数を計算できます</h1> | |
<p><span id="event">***</span>まで,あと<span id="day">***</span>日!</p> | |
<p>イベント名:<input type="text" name="eventName" id="eventName" value="お正月" /></p> | |
<p>開催日:<input type="date" name="xday" id="xday" value="2013-01-01"/></p> | |
<input type="button" value="計算!" onclick="countdown();"/> | |
<script> | |
function countdown() { | |
var eventName = document.getElementById('eventName').value; | |
var xday = document.getElementById('xday').value.split("-"); | |
var d1 = new Date(xday[0], xday[1]-1, xday[2]); | |
var d2 = new Date(); | |
count = Math.floor((d1 - d2) / (1000*60*60*24)); | |
document.getElementById('event').innerHTML = eventName; | |
document.getElementById('day').innerHTML = count; | |
} | |
</script> | |
</body> | |
</html> |