Advertisement
Guest User

DNA SORTER

a guest
Feb 14th, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.38 KB | None | 0 0
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html lang="ja">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
  6. <meta http-equiv="Content-Style-Type" content="text/css">
  7. <meta http-equiv="Content-Script-Type" content="text/javascript">
  8. <title>Diamond no Ace Character Sorter</title>
  9. <script type="text/javascript">
  10. <!--
  11. //*********************************************************
  12. //
  13. // 評価するメンバーの名前のリスト
  14. //
  15. // この部分を変更して下さい。名前の削除・追加も可能です。
  16. // 名前を引用符(")で括り、コンマ(,)で区切って下さい。
  17. // 但し、リストの最後にはコンマを入れてはいけません。
  18. //
  19. //*********************************************************
  20. var namMember = new Array(
  21. "Sawamura Eijun (Seidou)",
  22. "Furuya Satoru (Seidou)",
  23. "Miyuki Kazuya (Seidou)",
  24. "Kominato Haruichi (Seidou)",
  25. "Yuuki Tetsuya (Seidou)",
  26. "Isashiki Jun (Seidou)",
  27. "Masuko Tooru (Seidou)",
  28. "Kominato Ryousuke (Seidou)",
  29. "Kuramochi Youichi (Seidou)",
  30. "Takigawa Chris Yuu (Seidou)",
  31. "Tanba Kouichirou (Seidou)",
  32. "Miyauchi Keisuke (Seidou)",
  33. "Kawakami Norifumi (Seidou)",
  34. "Kanemaru Shinji (Seidou)",
  35. "Kataoka Tesshin (Seidou)",
  36. "Takashima Rei (Seidou)",
  37. "Aotsuki Wakana",
  38. "Yoshikawa Haruno (Seidou)",
  39. "Narumiya Mei (Inashiro)",
  40. "Harada Masatoshi (Inashiro)",
  41. "Tadano Itsuki (Inashiro)",
  42. "Kamiya Carlos Toshiki (Inashiro)",
  43. "Shirakawa Katsuyuki (Inashiro)",
  44. "Yamaoka Riku (Inashiro)",
  45. "Todoroki Raichi (Yakushi)",
  46. "Todoroki Raizou (Yakushi)",
  47. "Sanada Shunpei (Yakushi)",
  48. "You Shunshin (Akikawa)",
  49. "Maki Yousuke (Sensen)",
  50. "Watanabe Hisashi (Seidou)",
  51. "Fujiwara Takako (Seidou)",
  52. "Natsukawa Yui (Seidou)",
  53. "Umemoto Sachiko (Seidou)",
  54. "Kadota Masaaki (Seidou)",
  55. "Kusunoki Fumiya (Seidou)",
  56. "Kunitomo Hiroshige (Inashiro)",
  57. "Maezono Kenta (Seidou)",
  58. "Shirasu Kenjiro (Seidou)",
  59. "Manaka Kaname (Ichidai)",
  60. "Zaizen Naoyuki (Kokushi)",
  61. "Mishima Yuuta (Yakushi)",
  62. "Akiba Kazuma (Yakushi)",
  63. "Nagao Akira (Sakurazawa)",
  64. "Hitokoro Yoshimi (Sakurazawa)",
  65. "Inamoto Masaaki (Sakurazawa)",
  66. "Hirai Tsubasa (Inashiro)",
  67. "Yoshizawa Hideaki (Inashiro)",
  68. "Kikukawa Sanae (Sakurazawa)",
  69. "Okumura Koushuu",
  70. "Seto Takuma",
  71. "Yuuki Masashi",
  72. "Sakai Ichirou (Saidou)",
  73. "Ono Hiroshi (Seidou)",
  74. "Toujou Hideaki (Seidou)",
  75. "Oota (Seidou)",
  76. "J. Animal M.",
  77. "Azuma Kiyokuni (Seidou)",
  78. "Sawamura Eitoku"
  79. );
  80. //*********************************************************
  81.  
  82. var lstMember = new Array();
  83. var parent = new Array();
  84. var equal = new Array();
  85. var rec = new Array();
  86. var cmp1,cmp2;
  87. var head1,head2;
  88. var nrec;
  89.  
  90. var numQuestion;
  91. var totalSize;
  92. var finishSize;
  93. var finishFlag;
  94.  
  95. //変数の初期化+++++++++++++++++++++++++++++++++++++++++++++
  96. function initList(){
  97. var n = 0;
  98. var mid;
  99. var i;
  100.  
  101. //ソートすべき配列
  102. lstMember[n] = new Array();
  103. for (i=0; i<namMember.length; i++) {
  104. lstMember[n][i] = i;
  105. }
  106. parent[n] = -1;
  107. totalSize = 0;
  108. n++;
  109.  
  110. for (i=0; i<lstMember.length; i++) {
  111. //要素数が2以上なら2分割し、
  112. //分割された配列をlstMemberの最後に加える
  113. if(lstMember[i].length>=2) {
  114. mid = Math.ceil(lstMember[i].length/2);
  115. lstMember[n] = new Array();
  116. lstMember[n] = lstMember[i].slice(0,mid);
  117. totalSize += lstMember[n].length;
  118. parent[n] = i;
  119. n++;
  120. lstMember[n] = new Array();
  121. lstMember[n] = lstMember[i].slice(mid,lstMember[i].length);
  122. totalSize += lstMember[n].length;
  123. parent[n] = i;
  124. n++;
  125. }
  126. }
  127.  
  128. //保存用配列
  129. for (i=0; i<namMember.length; i++) {
  130. rec[i] = 0;
  131. }
  132. nrec = 0;
  133.  
  134. //引き分けの結果を保存するリスト
  135. //キー:リンク始点の値
  136. // 値 :リンク終点の値
  137. for (i=0; i<=namMember.length; i++) {
  138. equal[i] = -1;
  139. }
  140.  
  141. cmp1 = lstMember.length-2;
  142. cmp2 = lstMember.length-1;
  143. head1 = 0;
  144. head2 = 0;
  145. numQuestion = 1;
  146. finishSize = 0;
  147. finishFlag = 0;
  148. }
  149.  
  150. //リストのソート+++++++++++++++++++++++++++++++++++++++++++
  151. //flag:比較結果
  152. // -1:左を選択
  153. // 0:引き分け
  154. // 1:右を選択
  155. function sortList(flag){
  156. var i;
  157. var str;
  158.  
  159. //recに保存
  160. if (flag<0) {
  161. rec[nrec] = lstMember[cmp1][head1];
  162. head1++;
  163. nrec++;
  164. finishSize++;
  165. while (equal[rec[nrec-1]]!=-1) {
  166. rec[nrec] = lstMember[cmp1][head1];
  167. head1++;
  168. nrec++;
  169. finishSize++;
  170. }
  171. }
  172. else if (flag>0) {
  173. rec[nrec] = lstMember[cmp2][head2];
  174. head2++;
  175. nrec++;
  176. finishSize++;
  177. while (equal[rec[nrec-1]]!=-1) {
  178. rec[nrec] = lstMember[cmp2][head2];
  179. head2++;
  180. nrec++;
  181. finishSize++;
  182. }
  183. }
  184. else {
  185. rec[nrec] = lstMember[cmp1][head1];
  186. head1++;
  187. nrec++;
  188. finishSize++;
  189. while (equal[rec[nrec-1]]!=-1) {
  190. rec[nrec] = lstMember[cmp1][head1];
  191. head1++;
  192. nrec++;
  193. finishSize++;
  194. }
  195. equal[rec[nrec-1]] = lstMember[cmp2][head2];
  196. rec[nrec] = lstMember[cmp2][head2];
  197. head2++;
  198. nrec++;
  199. finishSize++;
  200. while (equal[rec[nrec-1]]!=-1) {
  201. rec[nrec] = lstMember[cmp2][head2];
  202. head2++;
  203. nrec++;
  204. finishSize++;
  205. }
  206. }
  207.  
  208. //片方のリストを走査し終えた後の処理
  209. if (head1<lstMember[cmp1].length && head2==lstMember[cmp2].length) {
  210. //リストcmp2が走査済 - リストcmp1の残りをコピー
  211. while (head1<lstMember[cmp1].length){
  212. rec[nrec] = lstMember[cmp1][head1];
  213. head1++;
  214. nrec++;
  215. finishSize++;
  216. }
  217. }
  218. else if (head1==lstMember[cmp1].length && head2<lstMember[cmp2].length) {
  219. //リストcmp1が走査済 - リストcmp2の残りをコピー
  220. while (head2<lstMember[cmp2].length){
  221. rec[nrec] = lstMember[cmp2][head2];
  222. head2++;
  223. nrec++;
  224. finishSize++;
  225. }
  226. }
  227.  
  228. //両方のリストの最後に到達した場合は
  229. //親リストを更新する
  230. if (head1==lstMember[cmp1].length && head2==lstMember[cmp2].length) {
  231. for (i=0; i<lstMember[cmp1].length+lstMember[cmp2].length; i++) {
  232. lstMember[parent[cmp1]][i] = rec[i];
  233. }
  234. lstMember.pop();
  235. lstMember.pop();
  236. cmp1 = cmp1-2;
  237. cmp2 = cmp2-2;
  238. head1 = 0;
  239. head2 = 0;
  240.  
  241. //新しい比較を行う前にrecを初期化
  242. if (head1==0 && head2==0) {
  243. for (i=0; i<namMember.length; i++) {
  244. rec[i] = 0;
  245. }
  246. nrec = 0;
  247. }
  248. }
  249.  
  250. if (cmp1<0) {
  251. str = "Battle No."+(numQuestion-1)+"<br>"+Math.floor(finishSize*100/totalSize)+"% sorted.";
  252. document.getElementById("battleNumber").innerHTML = str;
  253.  
  254. showResult();
  255. finishFlag = 1;
  256. }
  257. else {
  258. showImage();
  259. }
  260. }
  261.  
  262. //結果の表示+++++++++++++++++++++++++++++++++++++++++++++++
  263. function showResult() {
  264. var ranking = 1;
  265. var sameRank = 1;
  266. var str = "";
  267. var i;
  268.  
  269. str += "<table style=\"width:200px; font-size:12px; line-height:120%; margin-left:auto; margin-right:auto; border:1px solid #000; border-collapse:collapse\" align=\"center\">";
  270. str += "<tr><td style=\"color:#ffffff; background-color:#000; text-align:center;\">Rank<\/td><td style=\"color:#ffffff; background-color:#000; text-align:center;\">Character<\/td><\/tr>";
  271.  
  272. for (i=0; i<namMember.length; i++) {
  273. str += "<tr><td style=\"border:1px solid #000; text-align:right; padding-right:5px;\">"+ranking+"<\/td><td style=\"border:1px solid #000; padding-left:5px;\">"+namMember[lstMember[0][i]]+"<\/td><\/tr>";
  274. if (i<namMember.length-1) {
  275. if (equal[lstMember[0][i]]==lstMember[0][i+1]) {
  276. sameRank++;
  277. } else {
  278. ranking += sameRank;
  279. sameRank = 1;
  280. }
  281. }
  282. }
  283. str += "<\/table>";
  284.  
  285. document.getElementById("resultField").innerHTML = str;
  286. }
  287.  
  288. //比較する2つ要素の表示+++++++++++++++++++++++++++++++++++
  289. function showImage() {
  290. var str0 = "Battle No."+numQuestion+"<br>"+Math.floor(finishSize*100/totalSize)+"% sorted.";
  291. var str1 = ""+toNameFace(lstMember[cmp1][head1]);
  292. var str2 = ""+toNameFace(lstMember[cmp2][head2]);
  293.  
  294. document.getElementById("battleNumber").innerHTML = str0;
  295. document.getElementById("leftField").innerHTML = str1;
  296. document.getElementById("rightField").innerHTML = str2;
  297.  
  298. numQuestion++;
  299. }
  300.  
  301. //数値を名前(顔文字)に変換+++++++++++++++++++++++++++++++
  302. function toNameFace(n){
  303. var str = namMember[n];
  304.  
  305. //顔文字を追加する場合は以下のコメントアウトを外す
  306. //namMemberのインデックスと矛盾しないように注意
  307. /*
  308. str += "<br>────<br>";
  309. switch(n) {
  310. //case -1 はサンプルなので削除すること
  311. case -1: str+="( ´∀`)";break;
  312. default: str+=""+n;
  313. }
  314. */
  315. return str;
  316. }
  317. //-->
  318. </script>
  319. <style type="text/css">
  320. <!--
  321. /**********************************************************
  322.  
  323. 表のスタイルを変更する場合はここを編集してください。
  324.  
  325. **********************************************************/
  326. #mainTable{
  327. font-size: 16px;
  328. font-family: 'MS Pゴシック',sans-serif;
  329. text-align: center;
  330. vertical-align: middle;
  331. width: 410px;
  332. margin-left: auto;
  333. margin-right: auto;
  334. border-collapse: separate;
  335. border-spacing: 10px 5px;
  336. }
  337. #leftField{
  338. width: 120px;
  339. height: 150px;
  340. border: 1px solid #000;
  341. }
  342. #rightField{
  343. width: 120px;
  344. height: 150px;
  345. border: 1px solid #000;
  346. }
  347. .middleField{
  348. width: 120px;
  349. height: 70px;
  350. border: 1px solid #000;
  351. }
  352. //-->
  353. </style>
  354. </head>
  355.  
  356. <body>
  357. <table id="mainTable" align="center">
  358. <tr>
  359. <td id="battleNumber" colspan="3" style="padding-bottom: 10px;">
  360. &nbsp;
  361. </td>
  362. </tr>
  363. <tr>
  364. <td id="leftField" onClick="if(finishFlag==0)sortList(-1);" rowspan="2">
  365. &nbsp;
  366. </td>
  367. <td class="middleField" onClick="if(finishFlag==0)sortList(0);">
  368. I Like Both
  369. </td>
  370. <td id="rightField" onClick="if(finishFlag==0)sortList(1);" rowspan="2">
  371. &nbsp;
  372. </td>
  373. </tr>
  374. <tr>
  375. <td class="middleField" onClick="if(finishFlag==0)sortList(0);">
  376. No Opinion
  377. </td>
  378. </tr>
  379. </table><br><br>
  380. <div id="resultField" style="text-align:center;">
  381.  
  382.  
  383. <BR><BR>
  384. Character sorter for Diamond no Ace!! Choose your favorite between two characters, if you can't choose then click 'I Like Both'. If there's one character that you don't know then choose the other character, and if you don't know both then it's best to choose 'No Opinion'. Original code found <a href ="http://www.bathkame.com/johnnys.html">here</a>. I tried to include as many characters as possible and if you can think of any that were left out or if you see any mistakes, please contact me on my <a href="http://madokatrash.tumblr.com">main account</a>.
  385. </div>
  386. <script type="text/javascript">
  387. <!--
  388. initList();
  389. showImage();
  390. //-->
  391. </script>
  392.  
  393. </body>
  394. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement